For agentic workers: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking. 按本文逐页执行,不同时修改多个业务页面。
Goal: 在现有多轮完善的代码上补齐细节,使八个移动入口及其全部子界面,在明确排除项之外,与 Web 的元素、规则、行为和数据结果完全对应,只采用移动端展示方式。
Architecture: 先只读盘点八页面的范围、排除项和共享依赖,再逐页执行“完整核对 → 差异清单 → 最小修改 → 验证 → 关闭该页”。复用已有实现与测试,保护 Web 行为;共享组件变更纳入当前页面的影响验证。
Tech Stack: uni-app WebView、Vue 3、现有移动组件、业务 API、现有 Node/TypeScript 测试与浏览器交互测试、微信真机。
docs/superpowers/plans/2026-10-21-mobile-eight-pages-qa.md、docs/testing/mobile-eight-pages/2026-10-21/ 与现有后续记录。历史通过记录按代码版本、场景和证据复用;不以旧结论代替新增的一致性检查,也不无理由重做有效验证。读取入口:miniprogram/config/workbench-menus.js、miniprogram/config/api.js、miniprogram/pages/common/mp-webview.vue、web-admin/src/router/routes/staticRoutes.ts。
读取规范:.cursorrules、docs/miniprogram-ui-spec-sanqiang.md、当前 OpenSpec UI/API 规范。桌面与移动端视觉按各自规范执行,业务内容完整对应。
共享依赖重点:web-admin/src/components/mp/、web-admin/src/components/business/ 中被这些入口引用的组件、web-admin/src/layouts/MpWebviewShell.vue、web-admin/src/styles/mp-webview.scss、web-admin/src/styles/mp-crm-primitives.scss、web-admin/src/views/m/crm/useListReturnState.ts。以实际 import 和调用关系确定影响范围,不将整个目录作为修改目标。
docs/testing/mobile-eight-pages/2026-10-23-sequential-parity/,其中 scope.md 记录范围与排除项,progress.md 记录串行状态,M01.md 至 M08.md 记录逐页证据。本阶段仅盘点,不先分散修改八个页面。
| 顺序 | 页面 / 移动入口 | Web 对照范围 | 移动修改候选范围 | 本页重点 |
|---|---|---|---|---|
| M01 | 客户管理 /m/crm/customer |
web-admin/src/views/crm/customer/ |
web-admin/src/views/m/crm/customer/ |
列表、完整详情页签、联系人、跟进、商机、合同关联、开票、日志、表单、附件及所有操作弹层 |
| M02 | 产品管理 /m/crm/product |
web-admin/src/views/crm/product/ 及实际引用的产品表单/详情组件 |
web-admin/src/views/m/crm/product/ |
全部字段、分类及路径、上下架、新增编辑、复制、确认框、返回状态 |
| M03 | 报价单管理 /m/crm/quote |
web-admin/src/views/crm/quote/ |
web-admin/src/views/m/crm/quote/ |
客户产品选择、完整明细、计算、自动补全、提审、版本及操作;提前核对与审批共享详情的完整字段 |
| M04 | 报价单审批 /m/crm/quote/approval |
Web 报价审批实际入口与共享详情/审批组件 | web-admin/src/views/m/crm/quote/approval.vue 及其引用组件 |
待办已办、审核详情、意见、审批过程、状态与人员权限、处理后刷新 |
| M05 | 合同管理 /m/crm/contract |
web-admin/src/views/crm/contract/ |
web-admin/src/views/m/crm/contract/ |
主体、客户产品、金额日期、全部明细、附件、单条批量操作;提前核对审批共享详情字段 |
| M06 | 合同审批 /m/crm/contract/approval |
Web 合同审批实际入口与共享详情/审批组件 | web-admin/src/views/m/crm/contract/approval.vue 及其引用组件 |
完整详情、单条批量审核、意见、部分失败、轨迹与状态同步 |
| M07 | 运输计划 /m/pl/plan |
web-admin/src/views/pl/plan/ 及引用的运输业务组件 |
web-admin/src/views/m/pl/plan/ 及共享组件移动分支 |
合同与产品明细、客户车辆人员、地址段次、自动填充、安排调整、复制、保存重开 |
| M08 | 危化品证上传 /m/pl/plan-cert |
web-admin/src/views/pl/plan-cert/ 及引用组件 |
web-admin/src/views/m/pl/plan-cert/ |
计划筛选、段次产品、证书分组、齐备规则、上传预览移除重试、保存回显 |
表中的重点不是范围上限。每页以实际 Web 元素树递归盘点补全;目录仅为定位候选,具体修改文件由证实的差异决定。修复不另行在本仓库 Python 后端实现 CRM 业务。
以下步骤在 M01 至 M08 各自记录中逐项勾选;当前页全部关闭后才切换下一页。
矩阵每行至少包含:编号、元素完整路径、触发/权限/状态、Web 预期、移动对应、差异编号、修改文件、测试步骤、实际结果、证据、结论。分别统计“清单映射覆盖率”和“实际验证通过率”。
执行时先阅读现有脚本的运行前提和断言,按本次差异补齐,不另起一套重复框架。
| 页面 | 现有测试入口示例(均在 web-admin/scripts/) |
|---|---|
| M01 | test-mp-crm-customer.mjs、test-mp-crm-customer-dom.mjs、mobile-customer-validation.test.ts、mobile-customer-panel-identity.test.ts |
| M02 | test-mp-crm-product.mjs、test-mp-crm-product-dom.mjs、test-mp-crm-product-confirm-dom.mjs |
| M03/M04 | test-mp-crm-quote.mjs、mobile-quote-selectors.test.ts、mobile-quote-persistence.test.ts、mobile-quote-versions-lifecycle.test.ts |
| M05/M06 | test-mp-crm-contract.mjs、mobile-contract-form.test.ts、mobile-contract-picker.test.ts、mobile-contract-review.test.ts |
| M07 | mobile-pl-plan-form.test.ts、mobile-pl-plan-persistence.test.ts、mobile-pl-plan-arrange.test.ts、mobile-pl-contract-line-picker.test.ts、mobile-pl-plan-detail.test.ts |
| M08 | test-mp-pl-plan-cert.mjs |
从 web-admin/ 执行纯 Node 脚本示例:node scripts/test-mp-crm-customer-dom.mjs;TypeScript 测试需读取脚本后确认其 runner,再采用项目已有命令。浏览器测试要先核对服务地址、fixture 和写入对象,不直接对不明业务环境运行。
编译检查使用 pnpm build:typecheck。将原有问题与本次新问题区分记录,不能通过删减断言制造通过。代码改动按仓库要求更新对应项目知识图谱;仅本计划文档新增无需更新代码图谱。
本计划通过前置完整核对、最小修改和逐页验收减少反复;不承诺无法验证的“绝无遗漏”。完成结论必须基于实际证据。