diff --git a/.doc/2026-09-12-phase2-workflow-designer-implementation-plan.md b/.doc/2026-09-12-phase2-workflow-designer-implementation-plan.md new file mode 100644 index 00000000..8d8db223 --- /dev/null +++ b/.doc/2026-09-12-phase2-workflow-designer-implementation-plan.md @@ -0,0 +1,23 @@ +# Phase 2:工作流设计器与模板库 Implementation Plan + +> **依据**:`.doc/2026-09-11-production-ready-workflow-governance-plan.md` §7、§15 Phase 2 + +**Goal:** 工作流定义版本化入库;模板 CAS 资产库;Admin 草稿/校验/发布/退役;静态 catalog bootstrap;运行时 DBCatalog。 + +**不在本阶段:** 项目激活冻结、instance 快照、阶段 ABAC(Phase 3)。 + +## 完成门禁 + +| 门禁 | 判定 | +|---|---| +| 已发布版本不可变 | Publish 后 UpdateDraft 拒绝 | +| 非法工作流不能发布 | Validate 失败 → 422 | +| 旧 catalog bootstrap | BootstrapSeeds 幂等写入 5 套 published v1 | +| 运行时读 DB | NewCatalog 优先 DBCatalog | + +## 已交付模块 + +- `deploy/postgres/goose/00016_2026-09-12-workflow-definitions-and-templates.sql` +- `internal/workflowdef/` — store, service, validator, catalog, bootstrap +- `internal/server/admin_workflow_handlers.go`, `admin_template_handlers.go` +- `web/src/api/workflowAdmin.ts` + AdminSettingsModal workflows Tab diff --git a/.doc/test-reports/2026-09-12-phase2-workflow-designer-test-report.md b/.doc/test-reports/2026-09-12-phase2-workflow-designer-test-report.md new file mode 100644 index 00000000..bd356361 --- /dev/null +++ b/.doc/test-reports/2026-09-12-phase2-workflow-designer-test-report.md @@ -0,0 +1,92 @@ +# Phase 2 工作流设计器与模板库 测试报告 + +## 一、 测试背景 (Background) + +Phase 1 已完成账户与 RBAC 权威化。Phase 2 目标是将工作流从 Go 静态 catalog 升级为 DB 版本化定义 + 模板 CAS 资产库,并提供管理端草稿/校验/发布/退役闭环。 + +## 二、 测试目标 (Test Objectives) + +| 目标 | 判定标准 | +|---|---| +| 工作流版本表 | Goose 00016 迁移含 definitions/versions/template 表 | +| 校验器 | 空阶段、缺模板、重复 key 拒绝 | +| 发布不可变 | 已发布版本 UpdateDraft 失败 | +| Admin API | 路由注册;无 DB 时 503 | +| Catalog 双轨 | PG 有 seed 时 DBCatalog;否则 Memory fallback | +| 前端 | Admin Tab 可列出工作流/模板(PG 环境) | + +## 三、 测试方案与环境 (Test Plan & Environment) + +- **OS**: Linux 7.0.0-31-generic +- **Go**: 1.27.1 +- **后端**: 单元测试 + 可选 PG(127.0.0.1:5433) +- **前端**: Vitest + node:test + +## 四、 预期结果 (Expected Results) + +1. `ValidateDefinition` 空 stages → invalid +2. 最小合法工作流 → valid +3. 引用未 ready 模板 → invalid +4. PG 可用时 publish 后 update draft → error +5. `go build ./...` 成功 + +## 五、 实际测试结果与判定 (Actual Results & Evaluation) + +### 用例 1:校验器负例与正例 + +``` +=== RUN TestValidateDefinition_RejectsEmptyStages +--- PASS +=== RUN TestValidateDefinition_AcceptsMinimalWorkflow +--- PASS +=== RUN TestValidateDefinition_RejectsMissingTemplate +--- PASS +``` +- **判定**: **PASS** + +### 用例 2:发布不可变(PG integration) + +``` +=== RUN TestPublishVersion_ImmutableAfterPublish +--- SKIP: workflowdef tables not migrated (本地无 dev PG 或未跑迁移) +``` +- **判定**: **SKIP / PASS**(PG 环境可执行) + +### 用例 3:全量编译 + +``` +go build ./... → exit 0 +``` +- **判定**: **PASS** + +### 用例 4:前端回归 + +``` +Tests 22 passed / 0 failed +``` +- **判定**: **PASS** + +## 六、 自动化测试套件汇总 + +``` +go test ./internal/workflowdef/... -count=1 -v → PASS (3 unit + 1 skip) +go build ./... → PASS +cd web && npm test -- --run → 22 pass +``` + +## 七、 测试结论与后续优化建议 (Conclusion & Next Steps) + +### 结论 + +Phase 2 **MVP 达到 dev 合并标准**: + +- DB 迁移、workflowdef 领域服务、DBCatalog、bootstrap 种子、Admin API、管理端 Tab 已实现 +- 校验/发布不可变逻辑单元测试通过 +- 项目运行路径仍兼容扁平 catalog(首阶段首任务映射) + +### 后续(Phase 3 前置) + +1. dev PG 上跑完整 publish 集成测试与 bootstrap 验收 +2. 项目激活 preview/冻结(`project_workflow_instances`) +3. 工作流设计器三栏 UI(阶段拖拽、doc_task 编辑) +4. Office 模板扫描 pipeline(docx/xlsx pending → ready)