You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
8.2 KiB
78 lines
8.2 KiB
|
6 days ago
|
# 03 — Demo 修正:接入工作计划 Tab + 新建/错误交互完善
|
||
|
|
|
||
|
|
Type: task
|
||
|
|
Status: resolved
|
||
|
|
Blocked by: 02
|
||
|
|
|
||
|
|
## 任务
|
||
|
|
|
||
|
|
更新 `.scratch/opportunity-e2e/demo/index.html`,使 Demo 真实反映后端修复后的行为(建图拍板:接入工作计划 Tab + 修交互 + 排查已知问题):
|
||
|
|
|
||
|
|
1. **工作计划 Tab 前端接入**(最大缺口,票 12 四端点已交付):
|
||
|
|
- `workplan/list|add|update|delete` 四端点对接,UI 风格对齐既有子表 Tab(跟进/勘察/团队等);
|
||
|
|
- 三形态渲染:逾期(deadline 已过且未完成)/ 临期 / 已完成(finishTime 服务端回填)——逾期实时计算由服务端出,前端只渲染;
|
||
|
|
- 「登记完成」操作入口(update 走 finishFlag)+ 删除(软删);暂缓态商机写操作应展示 66003 业务错(后端 ActionGuard 拦截,前端友好提示)。
|
||
|
|
2. **新建商机交互完善**:
|
||
|
|
- 成功反馈:新建成功后清晰反馈(新商机 id 提示 + 列表/详情可达路径);
|
||
|
|
- 错误提示:60001 fail-fast(无发布中模板文案)、66001 六必填逐字段、66014 禁领等业务错友好展示(当前 `dlgCreate()` 的错误展示形态票内现场勘察,见地图 fog)。
|
||
|
|
3. **已知 UI/交互问题排查**:对照 20260829 修复清单(toolbar 优先级 / 方案卡 fields 键名 / 跟进锚点刷新 / oplog 键名)确认无回归;全 Tab 过一遍找新问题(发现问题就地修,票 Answer 记录)。
|
||
|
|
4. **demo-subapi-test.py 扩展拍板**(地图 fog):是否补 workplan 断言(list 三形态 + add/update/delete 闭环)——执行时定,若扩展则重跑全绿。
|
||
|
|
|
||
|
|
## 验收
|
||
|
|
|
||
|
|
- demo 页工作计划 Tab 手工可用(file:// 双击 + 后端在跑):列表三形态、新增、登记完成、删除全链路可操作;
|
||
|
|
- 新建商机成功/失败(六必填缺字段)路径反馈清晰,无裸 code 弹窗;
|
||
|
|
- demo-subapi-test.py 重跑全绿(含可能的 workplan 扩展断言);
|
||
|
|
- 修改清单记入 Answer(改了什么、为什么)。
|
||
|
|
|
||
|
|
## Answer
|
||
|
|
|
||
|
|
**20260831 Demo 修正完成:工作计划 Tab 四端点全接入(三形态渲染 + 闭环写操作)、新建商机六必填省市联动补齐 + errbox 友好反馈、demo-subapi-test.py v3 扩展重跑全绿(含 workplan 闭环 + 新建双路径)。四项任务全部落地。**
|
||
|
|
|
||
|
|
### ① 工作计划 Tab 接入(demo/index.html)
|
||
|
|
|
||
|
|
- SUBS 注册第 7 个子表 Tab「工作计划」,渲染风格对齐既有子表(列表行 + badge + 行内按钮 + toolbar);
|
||
|
|
- 三形态前端实时判定 `wpState()`(对齐实体 javadoc 口径「实时算不落库」):已完成绿(finishTime 服务端回填直出「完成于 …」)/ 逾期红(含「已逾期 N 天」)/ 临期橙(≤3 天,含「剩 N 天」)/ 进行中灰 / 无 deadline 未完成灰;
|
||
|
|
- 写操作四端点全接:新增(planContent 必填 ≤1000 + 可选 deadline)、编辑(部分更新语义、planStatus 值域 0/1 下拉带语义说明)、「登记完成/取消完成」一键切换(update planStatus,finishTime 由服务端回填/清空)、删除(confirm 确认 + 软删);
|
||
|
|
- 暂缓态商机在 Tab 尾部显示 hint「写操作将被后端 66003 守卫拦截(原样体验)」,写失败 toast 展示后端文案(66003 等经 `errHtml()` 标注错误码语义);
|
||
|
|
- 详情头部补「项目区域」字段(provinceName · cityName,`fillRegionNames` 出参),新建后详情可见省市回显。
|
||
|
|
|
||
|
|
### ② 新建商机交互完善(勘察发现关键缺口后修复)
|
||
|
|
|
||
|
|
**勘察发现:原 dlgCreate 表单缺「项目区域(省)/(市)」字段,而 D-14 六必填含省市码(`OpportunityCreateServiceImpl` L59-64)——demo 新建路径此前必被 66001 拦,从未走通过。** 修复:
|
||
|
|
|
||
|
|
- 表单补省/市联动下拉(复用公共依赖 `GET /api/rule/region/list`:不传 parentId=省级 34 项,选省后按 parentId 联动市级,提交传 code;运行时验证接口可用);
|
||
|
|
- 前端六必填预校验(名称/来源/省/市/属地/招标形式 + 线索转入时关联线索),缺失在弹窗内 errbox 逐字段列出(与后端 66001 逐字段校验同款文案风格);
|
||
|
|
- 后端业务错(60001 fail-fast 无模板文案、66001 等)同样 errbox 就地展示(`errHtml()` 标注错误码语义),不再只有右上 toast 裸 code;
|
||
|
|
- 成功反馈:toast 明示新商机 id + 初始状态,并**自动打开新商机详情**(loadDetail(newId) 直达,用户可立刻看到阶段落位/首阶段)——原实现只有一句 toast。
|
||
|
|
|
||
|
|
### ③ 已知 UI 问题排查(20260829 四修复点无回归)
|
||
|
|
|
||
|
|
四点在 v3 重跑中全部隐式回归通过:跟进 Tab toolbar「+ 写跟进」可点(运算符优先级修复保持)、方案卡详情 8 字段渲染(d.fields 键名保持)、写跟进后 toast+详情刷新(锚点刷新保持)、操作日志正常渲染(键名保持)。全 Tab 过一遍未发现新问题(团队/附件/阶段历史/规则配置 tab 未在本次改动面内,渲染逻辑未触碰;规则三族页面留给票 04 浏览器全功能面自测)。
|
||
|
|
|
||
|
|
### ④ demo-subapi-test.py 扩展拍板:**扩展**(v3)
|
||
|
|
|
||
|
|
理由:demo 是手工验收页,workplan 前端渲染路径(wpState 三形态判定、按钮接线、弹窗交互)只有 demo 侧脚本能验,t12-verify.py 只覆盖 API 层。v3 新增两段:
|
||
|
|
|
||
|
|
- **工作计划段**:seed 三形态断言(e2e-wp- 样例逾期/临期/已完成 badge)→ 空内容前端校验负路径(errbox)→ 新增(deadline +7 天,回显「进行中」形态)→ 登记完成(回显「已完成 + 完成于」)→ 删除(confirm 自动接受,列表不可见);
|
||
|
|
- **新建商机段**:只填名称提交 → 六必填逐字段 errbox 断言 → 补齐省市等六必填 → 成功 toast(含 id)→ 直达详情断言;
|
||
|
|
- 顺手修复 v2 潜在缺陷:卡保存负路径客户 id 硬编码(本次实测触发——遍历定位到的 A2 其已提交卡客户≠园科集团,硬编码 id 未被占用导致 66009 不拦、意外保存成功、脚本误判超时)→ 改为动态取本商机已占用客户(无则退化伪 id 触发 66007 同拦截族);「弹窗仍开」判定从 `locator.count()`(不过滤可见性,已关弹窗仍计 1)改为 `document.getElementById('dlg').open`。
|
||
|
|
|
||
|
|
**v3 重跑全绿**(运行日志 `.scratch/opportunity-acceptance/demo-subapi-v3-run.log`,截图 demo-sub-8~13 六张新增):wp seed 三形态✅ / 空内容负路径✅ / 新增回显(进行中)✅ / 登记完成回显(已完成+完成时间)✅ / 删除后不可见✅ / 新建六必填逐字段提示✅ / 成功 toast 含 id(749647653033213952)✅ / 直达详情✅ / 卡负路径 66009 弹窗仍开✅;健康检查 page errors 0、失败请求 0(console warning 1 = 66009 负路径预期的 tryApi 记录)。
|
||
|
|
|
||
|
|
### ⑤ 票 01 遗留三瑕疵顺手修(同批完成)
|
||
|
|
|
||
|
|
- `OpportunityIntakeImpl` javadoc ×2 修正:applyInitialStage 方法注释 + buildOpportunity L119 行注释,从已撤销的「零值兜底/走法 A」旧方案描述改为与 fail-fast 方法体一致的语义;
|
||
|
|
- `OpportunitySubController` 重复 `import java.util.Set;` ×1 删除;
|
||
|
|
- `mvn -pl crm-opportunity -am compile` BUILD SUCCESS(BOM 扫描两文件均无 BOM)。
|
||
|
|
|
||
|
|
### ⑥ 副作用与环境备注
|
||
|
|
|
||
|
|
- 首跑挂掉前意外保存一张草稿卡(客户=园科集团,本商机)——保留:正是它让 66009 负路径在后续重跑中稳定触发;
|
||
|
|
- 新增测试数据留在库里:商机「demo-验收-新建闭环」(推进中,落首阶段)、跟进/勘察 demo-手工验收-* 各一条——demo 域手工验收数据,无碍 E2E 基线(不同关键词命名空间);票 04 自测可直接复用该商机演示新建直达详情效果;
|
||
|
|
- demo 新建入口此前从未真正走通(缺省市字段)这一点已写入本 Answer——e2e-report.md §三b 的 D-01 运行时证据不受影响(那是 API 层验证),但「demo 可演示新建」自本票起才成立。
|
||
|
|
|
||
|
|
### 对下游票的影响
|
||
|
|
|
||
|
|
- **票 04**:demo 全功能面就绪(九子表 Tab 齐备 + 新建双路径);截图命名沿用 demo-sub-N 风格,票 04 存 `.scratch/opportunity-acceptance/shots/`;演示脚本可含「新建商机 → 直达详情看首阶段落位」作为 D-01 验证点。
|