Bladeren bron

docs: record mobile OA start phase-2 acceptance notes

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 2 maanden geleden
bovenliggende
commit
ad6208a73a

+ 8 - 11
docs/superpowers/plans/2026-08-11-mobile-oa-start-approval-phase2.md

@@ -14,6 +14,8 @@
 
 **Out of scope(本计划不做):** 待办/已办/抄送办理、Web 设计器改造、小程序内直挂 form-create、草稿箱独立列表页(仅支持发起页内暂存)、套件与 Web 100% 业务细节(请假节假日等放 Task 8 可分期)。
 
+**实现状态(2026-08-11):** Task 1~8 代码已落地并提交;Task 9 静态 type 核对已完成;真机全链路与菜单库授权仍待验收(见 spike 笔记验收表)。
+
 ---
 
 ## File map
@@ -688,15 +690,15 @@ git commit -m "feat: register mobile OA start menu and wire mini menus API to ho
 - Create: `mobile-oa-h5/src/oa/kit-runtime.js`(从 Web `oa-form-create-*-kit.ts` 移植纯函数部分)
 - Modify: `mobile-oa-h5/src/views/OaStart.vue`(watch formData 时调用 sync)
 
-- [ ] **Step 1: 按 zkxw-sc 已发布模板优先级移植**
+- [x] **Step 1: 按 zkxw-sc 已发布模板优先级移植**(commit `e83d9259`)
 
 顺序:`leaveKit` 时长 → `overtimeKit`(含节假日 API 若 Web 已有)→ `tripKit` 天数 → `confirmationKit` / `resignationKit` / owner 默认值。
 
 原则:只搬**纯函数**(输入 schema+formData → 新 formData),不搬 Element UI。
 
-- [ ] **Step 2: 双端对照清单**(同一模板 Web vs 小程序:默认值、改开始时间后时长、提交 payload)。
+- [ ] **Step 2: 双端对照清单**(同一模板 Web vs 小程序:默认值、改开始时间后时长、提交 payload)。**待真机**
 
-- [ ] **Step 3: Commit**
+- [x] **Step 3: Commit**
 
 ```bash
 git add mobile-oa-h5/src/oa/kit-runtime.js mobile-oa-h5/src/views/OaStart.vue
@@ -713,7 +715,7 @@ git commit -m "feat(mobile-oa-h5): align OA kit runtime helpers with web-admin"
 - Modify: `docs/superpowers/specs/2026-08-11-mobile-oa-form-sink-spike-notes.md`(可追加阶段二验收记录)
 - 可选:更新设计文档 §9 实施顺序勾选状态
 
-- [ ] **Step 1: 验收清单(全部勾选才算阶段二完成)**
+- [ ] **Step 1: 验收清单(全部勾选才算阶段二完成)** — 代码侧就绪;**真机 1~8 项见 spike 笔记「Task 9 验收记录」待勾**
 
 | # | 项 | 通过标准 |
 |---|----|----------|
@@ -726,19 +728,14 @@ git commit -m "feat(mobile-oa-h5): align OA kit runtime helpers with web-admin"
 | 7 | 提交 | 实例创建成功,返回小程序 |
 | 8 | 部署 | 测试环境 `OA_H5_ORIGIN` + 业务域名 + `/api` 反代正确 |
 
-- [ ] **Step 2: 跑一遍 type 统计,确认无未注册 type**
+- [x] **Step 2: 跑一遍 type 统计,确认无未注册 type**(2026-08-11:`published_latest_apps=27`,CUSTOM 均已注册)
 
 ```bash
 cd backend && source venv/bin/activate
 python ../scripts/oa_form_type_stats.py
 ```
 
-- [ ] **Step 3: Commit 文档**
-
-```bash
-git add docs/superpowers/specs/2026-08-11-mobile-oa-form-sink-spike-notes.md
-git commit -m "docs: record mobile OA start phase-2 acceptance notes"
-```
+- [x] **Step 3: Commit 文档**
 
 ---
 

+ 28 - 3
docs/superpowers/specs/2026-08-11-mobile-oa-form-sink-spike-notes.md

@@ -29,7 +29,7 @@
 
 - `leaveKit` / `overtimeKit` / `confirmationKit` / `resignationKit` / `tripKit`:与 Web 相同为 **slot 容器**,子字段由 `children` 渲染
 - `tripItinerary`:行程多段编辑(交通/城市/日期时段)
-- 说明:Web 端「时长自动计算 / 节假日联动」等运行时逻辑尚未移植,真模板联调时再对齐
+- 时长/天数/owner 默认值等运行时:已移植到 `mobile-oa-h5/src/oa/kit/`,在 `/oa-start` 同步(加班节假日走 `/cn-holiday/range`)
 
 ## 附件拍照(真机 / 微信 web-view)
 
@@ -42,7 +42,7 @@
 1. `cd mobile-oa-h5 && npm run dev`
 2. 将 `OA_H5_ORIGIN` 改为手机可达地址(不要用 `127.0.0.1` 给真机)
 3. 微信开发者工具可勾选「不校验合法域名」;体验版须配置业务域名
-4. 小程序首页 →「表单水槽测试」
+4. 小程序首页 →「表单水槽测试」或「发起审批」
 
 ## 阶段二进度(2026-08-11)
 
@@ -50,7 +50,32 @@
 - [x] schema 最小预处理 + `/oa-start` 正式页 + `OaFlowPreview`
 - [x] 小程序模板列表 + web-view 发起页
 - [x] `GET /api/mini/menus` + SQL 种子 `docs/sql/mobile_menu_oa_start.sql` + 首页拉菜单(失败时 fallback)
+- [x] Task 8 套件运行时(请假/加班/出差/转正/离职/owner 默认值)已移植并接入 `/oa-start`
+- [x] Task 9 静态核对:`oa_form_type_stats.py`(2026-08-11)已发布模板 27 个;CUSTOM type 均与 `register-components.js` 对齐,无缺口
 - [ ] 测试库执行 SQL 并在角色中勾选「发起审批」
 - [ ] 真机:列表 → 填写 → 草稿/提交 全链路
-- [x] Task 8 套件运行时(请假/加班/出差/转正/离职/owner 默认值)已移植并接入 `/oa-start`(节假日走 `/cn-holiday/range`)
 - [ ] 真机:含套件模板与 Web 对照回归
+
+## 阶段二验收清单(Task 9)
+
+| # | 项 | 状态 | 说明 |
+|---|----|------|------|
+| 1 | 首页菜单 | 代码就绪 / 待库授权 | SQL + `/api/mini/menus` + 首页;需执行种子并勾角色 |
+| 2 | 模板列表 | 代码就绪 / 待真机 | `pages/oa/start/index` |
+| 3 | 打开填写 | 代码就绪 / 待真机 | web-view → `/oa-start` + `token` |
+| 4 | 动态表单 | 代码就绪 / 待真机 | 自研 type 已注册;库内 CUSTOM 无未注册 |
+| 5 | 审批流 | 代码就绪 / 待真机 | `OaFlowPreview` + initiator_select |
+| 6 | 暂存 | 代码就绪 / 待真机 | drafts API |
+| 7 | 提交 | 代码就绪 / 待真机 | instances + navigateBack |
+| 8 | 部署 | 配置已写 / 待发布验证 | Nginx `/oa-h5/`;`OA_H5_ORIGIN=https://www.chengyantek.cn/oa-h5` |
+
+**type 统计摘要(zkxw-sc,`published_latest_apps=27`):**  
+CUSTOM 出现:`upload`(31) `money`(13) `relatedApproval`(11) `receiveAccount`(7) `dept`(5) `person`(3) `overtimeKit`(2) + 各套件/owner/post/trip 各 1。  
+H5 已注册:`money`/`upload`/`receiveAccount`/`relatedApproval`/`person`/`dept`/`post`/`owner*`/`leaveKit`/`overtimeKit`/`confirmationKit`/`resignationKit`/`tripKit`/`tripItinerary`/`inputNumber`。
+
+**真机验收最小步骤:**
+
+1. 执行 `docs/sql/mobile_menu_oa_start.sql`,角色勾选「发起审批」,重启后端  
+2. 部署 `mobile-oa-h5` dist → `/root/zkxw/static/oa-h5`(或本地 `npm run dev` + 可达 `OA_H5_ORIGIN`)  
+3. 小程序:首页 → 发起审批 → 选模板 → 填表 → 暂存 → 再开草稿 → 提交  
+4. 选含请假/加班的模板,改开始/结束时间,对照 Web 核对时长  

+ 9 - 9
docs/superpowers/specs/2026-08-11-mobile-oa-start-approval-design.md

@@ -218,15 +218,15 @@ H5 建议独立目录(如 `mobile-oa-h5/`),Vite 构建并部署到已配
 
 ## 9. 实施顺序
 
-| 序号 | 内容 |
-|------|------|
-| P0 | 独立 H5 工程骨架 + Vant + `@form-create/vant` |
-| P1 | 水槽页 + 全 type 注册(可先 mock 未完成的自研控件) |
-| P2 | 小程序:测试菜单 + 整页 web-view 打开水槽;真机验收 |
-| P3 | 按序完成自研组件/套件真实实现 |
-| P4 | H5 `/oa-start`:模板 API + flow-preview + 草稿/提交 |
-| P5 | 小程序原生模板列表 + 菜单注册 + 首页菜单联调 |
-| P6 | 已发布模板全量回归(移动端可完整发起) |
+| 序号 | 内容 | 状态(2026-08-11) |
+|------|------|-------------------|
+| P0 | 独立 H5 工程骨架 + Vant + `@form-create/vant` | 完成 |
+| P1 | 水槽页 + 全 type 注册(可先 mock 未完成的自研控件) | 完成(已换真实控件) |
+| P2 | 小程序:测试菜单 + 整页 web-view 打开水槽;真机验收 | 完成(水槽入口保留) |
+| P3 | 按序完成自研组件/套件真实实现 | 完成 |
+| P4 | H5 `/oa-start`:模板 API + flow-preview + 草稿/提交 | 完成 |
+| P5 | 小程序原生模板列表 + 菜单注册 + 首页菜单联调 | 完成(待库授权) |
+| P6 | 已发布模板全量回归(移动端可完整发起) | 进行中(待真机) |
 
 ---