Files
pikasTech-unidesk/docs/MDTODO/pikaoa-enterprise-platform.md
T
2026-07-15 09:58:29 +02:00

18 KiB

PikaOA 企业办公平台

  • 规格真相:project-management/PJ2026-03/specs/PJ2026-03-pikaoa.md
  • 主执行记录:pikasTech/unidesk#1952
  • 产品仓库:pikaInc/pikaoa,固定主工作区为 /root/pikaoa
  • 目标运行面:owning YAML 选中的 NC01 Kubernetes 独立 namespace。
  • 公网原入口:https://oa.pikapython.com
  • 数据真相:PK01 host PostgreSQL 中的独立数据库与角色。
  • 执行证据:GitHub issue/PR、任务报告、PaC/PipelineRun/GitOps/Argo 和 Web 原入口验证。

R1 [in_progress]

依据 PJ2026-03 建设企业级可扩展 PikaOA:在 /root/pikaoa 建立 pikaInc 仓库,采用 HWLAB v0.3 同族 Vue 技术栈和 Go 后端;CLI-first 完成员工/RBAC、甲方分类、合同多版本、发票关联与废弃、审计、OTel/Prometheus,再开发 Web;通过独立 K8s namespace、PK01 host PostgreSQL、YAML-first、PaC bootstrap、自动 CI/CD 和 https://oa.pikapython.com 原入口交付,完成任务后将详细报告写入任务报告

R1.1 [completed]

调研成熟开源 OA、ERP、合同、发票、Go 微服务与 Vue 组件方案,形成采用/复用/不采用结论,依赖 R1 规格,执行记录见 pikasTech/unidesk#1953,完成任务后将详细报告写入任务报告

R1.2 [completed]

建立 pikainc/pikaoa 私有仓库、/root/pikaoa 固定 master 和独立任务 worktree;远端已由 SSH 验证并以 1fc2353 建立唯一初始提交,完成任务后将详细报告写入任务报告

R1.3 [in_progress]

实现企业模块内核、Go API/Worker、PostgreSQL 迁移、员工/RBAC、伙伴分类、合同版本、发票废弃、审计、OTel/Prometheus 与 CLI,并通过 CLI 后端验收,依赖 R1.1-R1.2,完成任务后将详细报告写入任务报告

R1.3.1 [completed]

建立 Go API/Worker/CLI 企业模块共享内核、PostgreSQL 迁移与审计/outbox 端口、OTel/Prometheus 基线和 CLI health/modules 验收,执行记录见 pikasTech/unidesk#1977,完成任务后将详细报告写入任务报告

R1.3.2 [completed]

采用 chi 建立可插拔模块 HTTP 运行时、disabled 模块关闭入口、示例模块扩展验收,并补齐 PostgreSQL OTel 与 HTTP/runtime/pool/migration Prometheus 基线,执行记录见 pikasTech/unidesk#1983,完成任务后将详细报告写入任务报告

R1.3.3 [completed]

实现员工身份、Casbin RBAC、会话与 CLI login/logout/whoami/employees/roles,使用 YAML Secret 投影初始管理员和员工,执行记录见 pikasTech/unidesk#1984,完成任务后将详细报告写入任务报告

R1.3.4 [completed]

实现 pgx 同事务审计、PostgreSQL outbox、Watermill handler pipeline、幂等 Worker 与 OTel/Prometheus,执行记录见 pikasTech/unidesk#1985,完成任务后将详细报告写入任务报告

R1.3.5 [completed]

实现统一业务伙伴、甲方分类、角色、联系人、标签、归档、筛选和 CLI;持久化 REST 资源使用 UUIDv7,伙伴与分类只通过 typed ID 关联,并将业务、审计、outbox 保持同事务,执行记录见 pikasTech/unidesk#1990,完成任务后将详细报告写入任务报告

R1.3.6 [completed]

实现统一附件元数据、对象引用、可替换存储端口、完整性校验、授权 API 和 CLI;附件使用 UUIDv7 平级资源身份,业务对象仅通过 typed ID 关联,执行记录见 pikasTech/unidesk#1991,完成任务后将详细报告写入任务报告

R1.3.7 [in_progress]

实现合同与合同版本平级 UUIDv7 REST 资源,通过 contractId、previousVersionId、currentVersionId 建立 ID 关系,保证版本不可变、并发序号唯一、附件关联和全量 CLI,执行记录见 pikasTech/unidesk#1992,完成任务后将详细报告写入任务报告

R1.3.8 [completed]

实现平级 UUIDv7 发票资源,通过 partnerId、contractId、contractVersionId 和 attachmentId 建立关联,支持定点金额、typed 一致性校验、不可删除废弃事实、筛选汇总和全量 CLI,执行记录见 pikasTech/unidesk#1993,完成任务后将详细报告写入任务报告

R1.3.9 [in_progress]

复用 append-only 审计唯一真相实现 UUIDv7 平级审计资源、RBAC 查询 API、actor/resource/action/time/requestId/traceId 筛选和 audit list/get CLI,执行记录见 pikasTech/unidesk#1994,完成任务后将详细报告写入任务报告

R1.3.10 [completed]

增加可由 YAML-first 专用测试集群临时 Job 调用的统一 PostgreSQL 后端验证入口,明确披露 DSN presence 和 integration passed/skipped,去掉迁移测试对最新编号的共享硬编码,执行记录见 pikainc/pikaoa#10,完成任务后将详细报告写入任务报告

R1.4 [in_progress]

前端与后端并行实现 HWLAB v0.3 同族 Vue 企业工作台、响应式页面、平级 UUIDv7 资源与同路径业务流;最终在 CLI 后端验收通过后,通过同一公开 HTTP API 完成 Web 等价集成验收,执行记录见 pikainc/pikaoa#11,完成任务后将详细报告写入任务报告

R1.5 [in_progress]

在 UniDesk 中声明 PK01 PostgreSQL、Secret、NC01 独立 namespace、Gitea/PaC、GitOps、OTel/Prometheus 和 PK01 公网暴露,并改进可复用 bootstrap 工具,依赖 R1.1-R1.2,完成任务后将详细报告写入任务报告

R1.5.1 [completed]

改进 PaC bootstrap 的新服务首发预检、分阶段紧凑输出、typed failure 与中文说明,保持 PR merge 唯一交付 authority,执行记录见 pikasTech/unidesk#1955,完成任务后将详细报告写入任务报告

R1.5.2 [completed]

扩展 NC01 共享 observability,使 OTel/Tempo 与 Prometheus 由同一 YAML-first 控制面管理并提供跨 namespace 指标抓取和有界查询,执行记录见 pikasTech/unidesk#1956,完成任务后将详细报告写入任务报告

R1.5.3 [completed]

修复 platform-db postgres plan 默认 30KB JSON 被输出预算截断的可见性缺陷,提供数据库、角色、Secret/export、检查与下一步的紧凑 CLI-first 投影,执行记录沿用 主 issue,完成任务后将详细报告写入任务报告

R1.5.4 [completed]

修复 platform-db postgres statusexport-secrets --dry-run 默认输出超预算截断,提供与 plan 同族的 Secret/export 有界投影并保持 valuesPrinted=false,执行记录见 pikasTech/unidesk#1958,完成任务后将详细报告写入任务报告

R1.5.5 [completed]

为 pikainc/pikaoa 补齐 YAML-first GitHub token repository override,使受控 CLI 可管理产品 PR 且不打印凭据,执行记录见 pikasTech/unidesk#1978,完成任务后将详细报告写入任务报告

R1.5.6 [completed]

修复 GitHub repository override 对 owner/repo 大小写敏感,确保 pikaInc/pikaoa 与 canonical 名称选择同一受控 token,执行记录见 pikasTech/unidesk#1980,完成任务后将详细报告写入任务报告

R1.5.7 [completed]

增加 YAML-first PikaOA 专用测试集群临时 k8s 运行面和 pikaoa test-target plan/status/start/stop 受控入口,不经过 CI/CD、不触碰正式 namespace,未声明测试 target 时返回 configured=false,执行记录见 pikasTech/unidesk#2046,完成任务后将详细报告写入任务报告

R1.5.8 [completed]

修复 pikaoa test-target 临时运行面缺失附件配置与数据库迁移启动链,使 fixture 能渲染当前产品可启动的 namespace-local 后端运行面,保持未声明 target 与 validationOnly 全程无远端变更,执行记录见 pikasTech/unidesk#2053,完成任务后将详细报告写入任务报告

R1.5.9 [completed]

按用户确认方案在现有 NC01 k3s 的独立 pikaoa-test namespace 建立 YAML-first 测试运行面,使用 PK01 host PostgreSQL 独立测试 database/role 和 YAML hostIP 端口;先通过受控 CLI 单步调通,再接入跟随产品 master 的独立测试 CI/CD,执行记录见 pikasTech/unidesk#2058,完成任务后将详细报告写入任务报告

R1.5.9.1 [completed]

pikaoa test-target start 的 PostgreSQL、迁移和 rollout 长等待改为提交即返回与 status 短轮询,保持真实失败可见和 Secret 脱敏,执行记录见 pikasTech/unidesk#2060,完成任务后将详细报告写入任务报告

R1.5.9.2 [completed]

修复 PikaOA 临时测试 target 的数据库 schema/search_path,使迁移 Job、API 和 Worker 通过 YAML 声明的同一 schema 访问业务表,保持 DSN 与 Secret 脱敏,执行记录见 pikasTech/unidesk#2061,完成任务后将详细报告写入任务报告

R1.5.9.3 [completed]

按用户确认方案将测试架构定锚为现有 NC01 k3s 的 pikaoa-test namespace、PK01 host PostgreSQL 独立测试库与角色、YAML hostIP 端口,并更新 SPEC 与 pikasTech/unidesk#2058,完成任务后将详细报告写入任务报告

R1.5.9.4 [completed]

在 PK01 host PostgreSQL 声明独立 pikaoa_test database/role、Secret export 与 NC01 HBA,执行记录见 pikasTech/unidesk#2078,完成任务后将详细报告写入任务报告

R1.5.9.5 [completed]

在 NC01 pikaoa-test namespace 实现外部 PK01 测试 DSN、API/Worker/Web/迁移/附件 PVC、OTel/Prometheus、YAML hostIP 端口和受控单步 CLI,执行记录见 pikasTech/unidesk#2079,完成任务后将详细报告写入任务报告

R1.5.9.6 [completed]

为产品仓库补齐 API、Worker、Web 的 commit-pinned OCI 构建输入,使 NC01 测试运行面和后续 PaC 可构建镜像,执行记录见 pikainc/pikaoa#14,完成任务后将详细报告写入任务报告

R1.5.9.7 [completed]

降级事件版本一致性校验并解除 MVP 启动阻塞(pikainc/pikaoa#16),完成任务后将详细报告写入任务报告

R1.5.9.8 [completed]

修复 PikaOA 独立 schema 下 Goose 首次迁移 bootstrap,使版本表与业务表统一位于 pikaoa schema 并完成 NC01/PK01 真实 migration 验收(pikainc/pikaoa#18),完成任务后将详细报告写入任务报告

R1.5.9.9 [completed]

修复 PikaOA 测试 migration Job 进入 Failed/FailureTarget 后异步 runner 仍等待 Complete 至超时的问题,使失败立即以具名终态投影并支持快速单步调试(pikasTech/unidesk#2090),完成任务后将详细报告写入任务报告

R1.5.9.10 [completed]

修正 PikaOA 测试与生产 OTel gRPC endpoint 和 Prometheus selector label,并通过受控 observability apply 完成 NC01 trace/metrics 真实验收(pikasTech/unidesk#2092),完成任务后将详细报告写入任务报告

R1.5.9.11 [completed]

修复合同迁移中 PL/pgSQL trigger function 的 Goose StatementBegin/StatementEnd 边界并完成 00001-00007 真实迁移验收(pikainc/pikaoa#20),完成任务后将详细报告写入任务报告

R1.5.9.12 [completed]

修复 PikaOA HTTP hostIP 测试入口因 crypto.randomUUID 不可用导致 Web 登录失败的问题,并完成桌面与移动端真实入口验收(pikainc/pikaoa#22),完成任务后将详细报告写入任务报告

R1.5.9.13 [completed]

接入仅跟随产品 master 的 pikaoa-test-nc01 独立测试 CI/CD,通过正常 source PR merge 自动交付 NC01 pikaoa-test,保持生产 consumer 不触发(pikasTech/unidesk#2105),完成任务后将详细报告写入任务报告

R1.5.9.13.1 [completed]

修复 PikaOA 首次 PaC bootstrap 未同步 admission provenance desired policy/binding 的缺口,使配置指纹漂移降级为非阻塞 warning 且正常产品 PR merge 产生的 PipelineRun 能继续执行,执行记录见 pikasTech/unidesk#2127,完成任务后将详细报告写入任务报告

R1.6 [completed]

审核并合并双仓 PR,执行首次受控 PaC bootstrap,由正常 source PR merge 自动发布,依赖 R1.3-R1.5,完成任务后将详细报告写入任务报告

R1.6.1 [in_progress]

建立仅跟随产品 release 的 PikaOA 生产 PaC/Tekton/GitOps/Argo lane,部署 NC01 pikaoa namespace,接入 PK01 host PostgreSQL、附件持久化、OTel/Prometheus、备份与 oa.pikapython.com TLS 公网入口(pikasTech/unidesk#2110),完成任务后将详细报告写入任务报告

R1.6.1.1 [completed]

将 PK01 PostgreSQL 逻辑备份正规化为 YAML-first 多数据库 logicalDumps,保留 Sub2API 并新增 PikaOA 独立 dump、timer、retention 与受控状态/可恢复性摘要(pikasTech/unidesk#2115),完成任务后将详细报告写入任务报告

R1.6.1.2

为 NC01 pikaoa namespace 的生产附件 PVC 建立 YAML-first Restic 离机备份、受控状态与 restore smoke,复用 PK01 /var/backups/unidesk 且失败只告警不阻塞业务,执行记录见 pikasTech/unidesk#2128,完成任务后将详细报告写入任务报告

R1.6.1.3 [completed]

建立仅跟随产品 release 的 PikaOA 生产 PaC/Tekton/GitOps/Argo lane,以 fresh initializer 在 NC01 pikaoa namespace 启动 API/Worker/Web/附件 PVC,接入 PK01 host PostgreSQL、OTel/Prometheus 和 oa.pikapython.com TLS 公网入口,执行记录见 pikasTech/unidesk#2129,完成任务后将详细报告写入任务报告

R1.7 [completed]

通过 CLI、OTel、Prometheus 和 https://oa.pikapython.com 桌面/移动原入口验证完整主路径,依赖 R1.6,完成任务后将详细报告写入任务报告

R1.8

完成 issue、MDTODO、阶段报告、post-task、已吸收 worktree 与分支清理,依赖 R1.7,完成任务后将详细报告写入任务报告