2.5 KiB
发起审批钉钉式最终路径预览 Implementation Plan
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 map
| 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 防抖刷新 |
Task 1: 后端门闩与单路 walk + 单测
Files:
-
Modify:
backend/app/services/oa_engine.py -
Create:
backend/tests/test_oa_flow_preview.py -
Modify:
backend/app/api/oa_approval.py -
Step 1: 实现
_collect_condition_fields、_form_value_present;改_walk_preview_nodes条件分支为匹配单路;preview_start_flow返回{resolved, message, steps} -
Step 2: API 改为 POST,body 含
formData/initiatorSelectUserIds;保留 GET 转调空 formData(可选兼容) -
Step 3: 单测覆盖:无条件 resolved;有条件字段空;命中条件1;走默认
-
Step 4:
pytest backend/tests/test_oa_flow_preview.py通过
Task 2: 前端 API + 预览组件 + 发起页
Files:
-
Modify:
web-admin/src/api/oaApproval.ts -
Modify:
web-admin/src/components/oa-approval/OaFlowPreview.vue -
Modify:
web-admin/src/views/oa-approval/start/index.vue -
Step 1:
fetchOaFlowPreview改为 POST;类型加resolved/message -
Step 2:
OaFlowPreview支持resolved===false占位文案 -
Step 3:
start/index.vue传入 formData、防抖 watch、绑定 resolved/message -
Step 4: 更新 graphify(backend + frontend)