diff --git a/docs/MDTODO/details/pikaoa-enterprise-platform/R1.5.9.3_Task_Report.md b/docs/MDTODO/details/pikaoa-enterprise-platform/R1.5.9.3_Task_Report.md new file mode 100644 index 00000000..b7186a65 --- /dev/null +++ b/docs/MDTODO/details/pikaoa-enterprise-platform/R1.5.9.3_Task_Report.md @@ -0,0 +1,26 @@ +# R1.5.9.3 任务报告 + +## 结论 + +PikaOA 测试架构已按用户确认方案定锚: + +- 复用现有 `NC01:k3s`,不新增节点或 k3s 集群。 +- 使用固定独立 namespace `pikaoa-test`。 +- 复用 PK01 host PostgreSQL,但使用独立 `pikaoa_test` database 和 role,不复用生产数据身份。 +- 测试 Web 由 owning YAML 在 NC01 hostIP `152.53.229.148` 声明端口 `32080`。 +- 先通过 YAML-first 受控 CLI 单步部署和调试;通过后再接入跟随产品 `master` 的独立测试 consumer。 +- OTel、Tempo 与 Prometheus 复用 NC01 `platform-infra`。 + +## 治理证据 + +- SPEC:`project-management/PJ2026-03/specs/PJ2026-03-pikaoa.md` v0.6。 +- 父 issue:。 +- PK01 测试数据库子 issue:。 +- NC01 测试运行面子 issue:。 + +## 运行面只读证据 + +- NC01 hostIP:`152.53.229.148`。 +- 已用 NodePort:`31199`、`31389`、`32676`。 +- `32080` 未被 Kubernetes Service 或 host listener 占用。 +- PK01 PostgreSQL 服务 active、TLS/5432/连接探针正常;生产 PikaOA 对象尚未落地,测试对象将通过独立声明创建。 diff --git a/docs/MDTODO/pikaoa-enterprise-platform.md b/docs/MDTODO/pikaoa-enterprise-platform.md index 0773f66b..ff5eac1d 100644 --- a/docs/MDTODO/pikaoa-enterprise-platform.md +++ b/docs/MDTODO/pikaoa-enterprise-platform.md @@ -91,13 +91,23 @@ 修复 `pikaoa test-target` 临时运行面缺失附件配置与数据库迁移启动链,使 fixture 能渲染当前产品可启动的 namespace-local 后端运行面,保持未声明 target 与 `validationOnly` 全程无远端变更,执行记录见 [pikasTech/unidesk#2053](https://github.com/pikasTech/unidesk/issues/2053),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.5.8_Task_Report.md)。 #### R1.5.9 [in_progress] -落实用户最新要求:PikaOA 可不经过 CI/CD,由 YAML-first 在专用测试集群启动临时 Kubernetes 做测试和调试;SPEC 分离正式发布与临时测试,登记并验收真实 target,执行记录见 [pikasTech/unidesk#2058](https://github.com/pikasTech/unidesk/issues/2058),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.5.9_Task_Report.md)。 +按用户确认方案在现有 NC01 k3s 的独立 pikaoa-test namespace 建立 YAML-first 测试运行面,使用 PK01 host PostgreSQL 独立测试 database/role 和 YAML hostIP 端口;先通过受控 CLI 单步调通,再接入跟随产品 master 的独立测试 CI/CD,执行记录见 [pikasTech/unidesk#2058](https://github.com/pikasTech/unidesk/issues/2058),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.5.9_Task_Report.md)。 + ##### R1.5.9.1 [completed] 将 `pikaoa test-target start` 的 PostgreSQL、迁移和 rollout 长等待改为提交即返回与 `status` 短轮询,保持真实失败可见和 Secret 脱敏,执行记录见 [pikasTech/unidesk#2060](https://github.com/pikasTech/unidesk/issues/2060),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.5.9.1_Task_Report.md)。 ##### R1.5.9.2 [completed] 修复 PikaOA 临时测试 target 的数据库 schema/search_path,使迁移 Job、API 和 Worker 通过 YAML 声明的同一 schema 访问业务表,保持 DSN 与 Secret 脱敏,执行记录见 [pikasTech/unidesk#2061](https://github.com/pikasTech/unidesk/issues/2061),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.5.9.2_Task_Report.md)。 +##### R1.5.9.3 [completed] + +按用户确认方案将测试架构定锚为现有 NC01 k3s 的 pikaoa-test namespace、PK01 host PostgreSQL 独立测试库与角色、YAML hostIP 端口,并更新 SPEC 与 [pikasTech/unidesk#2058](https://github.com/pikasTech/unidesk/issues/2058),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.5.9.3_Task_Report.md)。 +##### R1.5.9.4 [in_progress] + +在 PK01 host PostgreSQL 声明独立 pikaoa_test database/role、Secret export 与 NC01 HBA,执行记录见 [pikasTech/unidesk#2078](https://github.com/pikasTech/unidesk/issues/2078),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.5.9.4_Task_Report.md)。 +##### R1.5.9.5 [in_progress] + +在 NC01 pikaoa-test namespace 实现外部 PK01 测试 DSN、API/Worker/Web/迁移/附件 PVC、OTel/Prometheus、YAML hostIP 端口和受控单步 CLI,执行记录见 [pikasTech/unidesk#2079](https://github.com/pikasTech/unidesk/issues/2079),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.5.9.5_Task_Report.md)。 ### R1.6 审核并合并双仓 PR,执行首次受控 PaC bootstrap,由正常 source PR merge 自动发布,依赖 R1.3-R1.5,完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.6_Task_Report.md)。 diff --git a/project-management/PJ2026-03/specs/PJ2026-03-pikaoa.md b/project-management/PJ2026-03/specs/PJ2026-03-pikaoa.md index 43736fdf..ce27320c 100644 --- a/project-management/PJ2026-03/specs/PJ2026-03-pikaoa.md +++ b/project-management/PJ2026-03/specs/PJ2026-03-pikaoa.md @@ -9,6 +9,7 @@ | v0.3 | 待本版本提交 | 2026-07-14 | 将审计语义校验收敛为非阻塞 warning 和最小安全归一化,避免开发期复杂审计门禁阻塞业务。 | | v0.4 | 待本版本提交 | 2026-07-14 | 允许 Web 与后端并行开发,最终以同一公开 HTTP API 和 CLI/Web 等价业务流完成集成验收。 | | v0.5 | 待本版本提交 | 2026-07-14 | 增加不经过 CI/CD 的 YAML-first 专用测试集群临时运行面,并与正式自动交付严格隔离。 | +| v0.6 | 待本版本提交 | 2026-07-15 | 将测试运行面收敛到现有 NC01 k3s 的独立 namespace,复用 PK01 host PostgreSQL 的独立测试库和角色,并增加 hostIP 暴露与测试自动交付契约。 | 修改历史只记录规格语义变更,不记录实现进度、阶段基线或一次性证据。 @@ -84,7 +85,9 @@ PikaOA 终态必须同时具备: - 文件内容通过可替换存储端口管理,元数据与哈希进入业务数据; - 配置、Secret、数据库绑定、运行目标和公网暴露均由 owning YAML 管理; - 正式发布由 GitHub 合并触发自动 CI/CD、GitOps 和运行面收敛; - - 后端测试和调试可以不经过 CI/CD,由 owning YAML 在专用测试集群创建临时 Kubernetes 运行面。 + - 后端测试和调试可以先不经过 CI/CD,由 owning YAML 在现有测试节点的独立 Kubernetes namespace 创建可单步控制的运行面; + - 单步调通后,独立测试交付 consumer 跟随产品 `master`,且不改变正式发布 consumer 和正式运行面; + - 测试 Web 通过 owning YAML 声明的 hostIP 端口暴露,不进入正式公网域名。 - 首版可观测能力: - Web、CLI、API、Worker 和 CI/CD 统一传播 W3C trace context; - Go 服务从第一版接入 OpenTelemetry traces、metrics 和结构化日志关联; @@ -102,7 +105,7 @@ PikaOA 终态必须同时具备: - CLI、Web 工作台、HTTP API、健康接口和异步任务入口。 - OpenTelemetry Collector 接入、Prometheus 指标、结构化日志和 trace/metric 关联。 - PostgreSQL、Kubernetes namespace、Secret、CI/CD、GitOps 和公网 HTTPS。 -- 专用测试集群上的 YAML-first 临时后端运行面、临时 PostgreSQL、可观测性和清理入口。 +- 现有测试节点独立 namespace 内的 YAML-first 后端运行面、PK01 host PostgreSQL 独立测试库、hostIP 暴露、可观测性和清理入口。 ### 2.4 范围外 @@ -129,7 +132,7 @@ PikaOA 终态必须同时具备: | Typed ID 关联 | 资源只保存关联对象的资源类型和全局唯一 ID,不复制关联对象私有载荷,也不以嵌套路径或表级从属关系定义资源身份。 | | 模块 | 具有独立领域边界、权限、迁移、API、事件和前端入口的可插拔业务能力。 | | 领域事件 | 模块完成业务事务后写入的结构化事实,用于同进程订阅或异步扩展。 | -| 临时测试运行面 | 不经过正式 CI/CD,在 YAML 声明的专用测试集群中按源码提交创建并可完整删除的 API、Worker 与测试依赖集合。 | +| 测试运行面 | 与正式 namespace 隔离,由 YAML 在现有测试节点上声明并可通过受控 CLI 单步部署、查询和停止的 API、Worker、Web 与测试依赖集合。 | ## 4. 系统边界和内部模块 @@ -293,13 +296,16 @@ flowchart LR C --> A[GitOps 与 Argo] A --> P[正式 PikaOA namespace] Y[config/pikaoa.yaml testRuntime] --> T[pikaoa test-target] - T --> K[专用测试集群临时 namespace] - K --> D[(临时 PostgreSQL)] + T --> K[NC01 独立测试 namespace] + K --> D[(PK01 host PostgreSQL 独立测试库)] K --> O[OTel 与 Prometheus] - T --> X[按实例删除临时 namespace] + K --> H[NC01 hostIP YAML 端口] + M[产品 master 合并] --> Q[独立测试交付 consumer] + Q --> K + T --> X[受控停止测试工作负载] ``` -正式发布与临时测试是职责隔离的两条路径。正式发布的 source authority、镜像、数据库、Secret、公网入口和运行 namespace 只由正式交付配置管理。临时测试只消费 owning YAML 明确声明的专用测试 target 和 commit-pinned 镜像,在实例 namespace 内创建 API、Worker、迁移、附件存储和临时 PostgreSQL;它不得读取、修改或清理正式交付对象。 +正式发布与测试运行面是职责隔离的两条路径。正式发布的 source authority、镜像、数据库、Secret、公网入口和运行 namespace 只由正式交付配置管理。测试运行面只消费 owning YAML 明确声明的现有测试 target、独立 namespace、commit-pinned 镜像、PK01 独立测试数据库与角色、测试 Secret 和 hostIP 端口;它不得读取、修改或清理正式交付对象。测试运行面先允许通过受控 CLI 单步调通,随后由独立测试 consumer 跟随产品 `master` 自动更新;两种方式必须共享同一 owning YAML,不得形成第二份运行配置真相。 ## 6. 全局原子需求 @@ -483,25 +489,28 @@ Prometheus 必须覆盖: Web、API、Worker 和 CI/CD 必须输出结构化日志、健康状态和 trace 上下文。源码版本、镜像版本和 API 版本漂移只能形成非阻塞 warning,不得阻塞可安全解释的用户业务。 -### 6.13 PIKAOA-L0-REQ-013 YAML-first 专用测试集群 +### 6.13 PIKAOA-L0-REQ-013 YAML-first 独立测试运行面 -PikaOA 后端测试和调试必须支持不经过 PaC、Tekton、GitOps、Argo 或正式 CI/CD 的临时 Kubernetes 运行面。该运行面只能部署到 owning YAML 明确声明的专用测试集群 target;未声明、零匹配或多匹配时,受控入口必须在连接远端前返回 `configured=false` 或 typed blocker,并保持 `mutation=false`。 +PikaOA 后端测试和调试必须支持在接入自动交付前,通过受控 CLI 单步部署 Kubernetes 测试运行面。该运行面只能部署到 owning YAML 明确声明的测试 target 和独立 namespace;未声明、零匹配或多匹配时,受控入口必须在连接远端前返回 `configured=false` 或 typed blocker,并保持 `mutation=false`。测试 target 可以复用现有 k3s 节点,但不得复用正式 namespace、正式数据库角色、正式 Secret 或正式公网暴露。 测试 target 必须由 owning YAML 声明: -- 节点、route、namespace 前缀、实例 TTL 和清理策略; +- 节点、route、固定测试 namespace、停止与清理策略; - 源码仓库、源码提交和 commit-pinned API、Worker、迁移镜像; -- 临时 PostgreSQL、运行 Secret、管理员与普通员工初始凭据来源; -- namespace-local 附件存储、健康探针、OTel endpoint 和 Prometheus 抓取; +- PK01 host PostgreSQL 中独立测试 database、role、Secret export 和受控连接来源; +- namespace-local 附件存储、健康探针、OTel endpoint、Prometheus 抓取和 Web 工作负载; +- hostIP、空闲端口和 Kubernetes Service 暴露方式; +- 跟随产品 `master` 的独立测试交付 consumer 与 source authority; - 正式 namespace 保护集合和对象所有权标签。 接受标准包括: -- `plan` 只读渲染目标、实例 namespace、镜像提交、Secret presence、可观测性和保护集合; -- `start` 只在显式确认后创建实例 namespace,并在 API 与 Worker ready 前完成数据库迁移; -- `status` 返回迁移、API、Worker、PostgreSQL、OTel 和 Prometheus 的有界状态; -- `stop` 只删除 target、instance 和 managed-by 标签同时匹配的精确 namespace; -- 临时运行面不连接正式 PostgreSQL,不复用正式 Secret,不进入正式公网入口,也不改变正式发布 source authority; +- `plan` 只读渲染目标、测试 namespace、镜像提交、数据库/Secret presence、hostIP 端口、可观测性和保护集合; +- `start` 只在显式确认后创建或更新固定测试 namespace,并在 API、Worker 和 Web ready 前完成数据库迁移; +- `status` 返回迁移、API、Worker、Web、外部测试 PostgreSQL、hostIP 入口、OTel 和 Prometheus 的有界状态; +- `stop` 只停止或删除 target、namespace 和 managed-by 标签同时匹配的测试对象,不触碰其他 namespace; +- 测试运行面连接 PK01 中独立测试 database/role,不复用正式数据库凭据、正式 Secret 或正式公网入口,也不改变正式发布 source authority; +- 单步验收通过后,测试 consumer 的正常触发只来自产品 `master` 合并,且只更新同一测试 namespace; - 配置一致性、版本漂移和 OTel exporter 失败只产生 `blocking=false` warning,Secret 缺失或 namespace 所有权不安全仍在 mutation 前失败。 ## 7. API、数据与兼容边界 @@ -539,8 +548,9 @@ PikaOA 后端测试和调试必须支持不经过 PaC、Tekton、GitOps、Argo ### 8.3 运行验收 - CI/CD 绑定 source commit、PipelineRun、镜像 digest、GitOps revision、Argo 状态和运行面 ready; -- 临时测试通过 YAML 声明的专用测试 target 完成 `plan`、`start`、`status`、CLI 后端业务验证和 `stop`,不触发正式 CI/CD; -- 临时测试结束后实例 namespace 已删除,正式 namespace、正式数据库、正式 Secret 和公网入口保持不变; +- 测试运行面通过 YAML 声明的现有测试 target 完成 `plan`、`start`、`status`、CLI 后端业务验证、OTel/Prometheus/Web 验证和 `stop`,不触发正式 CI/CD; +- 单步验证通过后,产品 `master` 的正常合并事件可以通过独立测试 consumer 自动更新测试 namespace; +- 测试停止后受控对象已停止或删除,正式 namespace、正式数据库、正式 Secret 和公网入口保持不变; - Web、API 和 Worker 运行在 owning YAML 声明的 namespace; - PostgreSQL 连接、迁移、附件存储和健康检查通过; - OTel Collector 接收 Web/CLI/API/Worker trace,Prometheus 抓取 API/Worker 指标;