For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 条件字段未齐时底部占位「必填信息填写后,流程将自动显示」;齐后只展示命中审批链。
Architecture: preview_start_flow 收集条件字段做 resolved 门闩;通过后 _match_condition_group 单路 walk。API 改为 POST 传 formData。前端防抖刷新 + OaFlowPreview 占位态。
Tech Stack: FastAPI / SQLAlchemy;Vue 3 + Element Plus;pytest
Spec: docs/superpowers/specs/2026-07-17-oa-start-flow-preview-resolved-path-design.md
| File | Responsibility |
|---|---|
backend/app/services/oa_engine.py |
字段收集、有值判定、单路 preview walk、resolved 返回 |
backend/app/api/oa_approval.py |
POST /templates/{id}/flow-preview |
backend/tests/test_oa_flow_preview.py |
纯函数 + preview 逻辑单测 |
web-admin/src/api/oaApproval.ts |
POST 客户端与类型 |
web-admin/src/components/oa-approval/OaFlowPreview.vue |
待确定占位 UI |
web-admin/src/views/oa-approval/start/index.vue |
formData 防抖刷新 |
Files:
backend/app/services/oa_engine.pybackend/tests/test_oa_flow_preview.pyModify: backend/app/api/oa_approval.py
[x] Step 1: 实现 _collect_condition_fields、_form_value_present;改 _walk_preview_nodes 条件分支为匹配单路;preview_start_flow 返回 {resolved, message, steps}
[x] Step 2: API 改为 POST,body 含 formData / initiatorSelectUserIds;保留 GET 转调空 formData(可选兼容)
[x] Step 3: 单测覆盖:无条件 resolved;有条件字段空;命中条件1;走默认
[x] Step 4: pytest backend/tests/test_oa_flow_preview.py 通过
Files:
web-admin/src/api/oaApproval.tsweb-admin/src/components/oa-approval/OaFlowPreview.vueModify: web-admin/src/views/oa-approval/start/index.vue
[x] Step 1: fetchOaFlowPreview 改为 POST;类型加 resolved / message
[x] Step 2: OaFlowPreview 支持 resolved===false 占位文案
[x] Step 3: start/index.vue 传入 formData、防抖 watch、绑定 resolved/message
[x] Step 4: 更新 graphify(backend + frontend)