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.
4.6 KiB
4.6 KiB
12 — demo 同步 opp-create-fields + 看板泳道卡片
Type: task Status: resolved Blocked by: -
【背景】opp-create-fields(提交 acd0d94)补齐商机新建接口 7 类字段后,demo/index.html 新建对话框未同步;用户追加要求顺带体现看板努力的展示名取卡能力(board/cards 泳道视图)。用户将人工重新验收。
Question
同步 .scratch/opportunity-e2e/demo/index.html 至后端最近行为,供用户重新验收:
- 新建商机对话框补 7 类字段(spec:
.scratch/opportunity-create-fields/spec.md,已提交 acd0d94):- 项目区域省/市/区三级级联,区/县折叠进 cityCode(不新增 districtCode)
- 项目金额 projectAmount、项目详细地址 address
- 客户区块:搜索选客户(customerId)+ 客户类型 customerRole + 是否主要客户 isPrimaryIntended(=0 提示允许零主要意向客户、主表冗余留空)
- 商机关键联系人快照三件套(keyContactId 留空,名/公司手输快照——A4 未建)
- 「备注」label 改「项目概况」
- 前端必填校验对齐:customerId 非空时 customerRole/isPrimaryIntended 必填
- 看板泳道卡片:tab1 看板区在 stage-summary 汇总条之上增加泳道列,每列按展示名调
POST /board/cards(form: viewType/stageName/offset/limit,offset+limit 滚动翻页、返回 < limit 到底),卡片渲染 oppName/金额/负责人/状态,点击开详情。依赖工作树未提交的看板代码 → 起服产物须重新 package(注意 fat jar 增量构建跳过陷阱)。 - Playwright 自测一轮 + 截图落
demo/,然后交用户人工验收。
Answer
Answer
(20260901 完成并自测通过)demo 同步两块 + 踩实并修复两个平台级缺陷:
- 新建商机对话框补齐 opp-create-fields 7 类字段(对齐 A3-1-1-2-1 / acd0d94): 项目区域省→市→区县三级级联(区县码折叠进 cityCode,不单建 districtCode,region API parentId 递归实测 17 区县可选); 项目金额 / 项目详细地址 / 关键联系人快照(姓名+公司手输,keyContactId 按 spec 边界留空); 「备注」label 改「项目概况」;前端必填校验对齐(填了客户 ID 则客户类型/是否主要必填,与后端 66001 同款)。 客户区块实测修正:customer/search 的 oppId 必填(传 0 稳定 66002「商机不存在: 0」),新建场景不可用 → demo 改手输 customerId+customerName(引用 id + 名快照走法,与 DTO javadoc 一致)。
- 看板泳道卡片:tab1 新增泳道面板(summary 5 列展示名),每列调 POST /board/cards(form: viewType/stageName/offset/limit, 每列先拉 5 条,「更多」按钮 offset 递增续拉,返回 < limit 渲染「到底」)——滚动翻页实测无重复卡; 卡片含 oppName/负责人快照/金额/状态徽标,点击开详情。
- 踩实缺陷 D-23(P1,平台级,已修):crm-base
MybatisPlusConfig从未注册OptimisticLockerInnerInterceptor, Opportunity@Version预埋失效,且updateById(et)的 OPTLOCK 占位符与参数注入脱节 → 真实 DB 稳定抛BindingException: Parameter 'MP_OPTLOCK_VERSION_ORIGINAL' not found(HTTP 500/50001)。 opp-create-fields 的 =1 创建分支(intakelinkPrimaryCustomer回写主表)是全项目第一个真实调用oppMapper.updateById的路径(set-primary 等全走 LambdaUpdateWrapper 逃过),验收首日即踩爆。 修复:注册拦截器(@Version 语义同时就位,票 13 切主/CAS 受益);修复后 =1 创建 200、 primaryCustomerId/snapshot 正确回写。全项目影响面仅此 1 处调用。 - 踩实缺陷 D-24(P2,已修):
OpportunityDTO(detail 出参)漏带 address + keyContactId/keyContactNameSnapshot/ keyContactCompanySnapshot,新建成功但详情回显 None。修复:DTO 补 4 同名字段(fromEntity 走 BeanUtils.copyProperties 自动拷贝)。
自测(Playwright,selftest-12.py):泳道 5 列/翻页到底 ✓、对话框 20 字段 ✓、三级级联 ✓、 =1 主要意向路径创建成功 + detail 断言 10 项全绿(880000.5/地址/概况/110101/主客户冗余 99001+名/王工+甲方Y公司)、 =0 普通关联路径创建成功、console/page errors: 0、failed requests: 0;6 张截图落 demo/shot-12-.png。 回归:crm-opportunity 单测 233/233 全绿;BOM 扫描 0。远程库新增演示数据:demo-12-/750036429899300864 等 5 条。
验收入口:双击 .scratch/opportunity-e2e/demo/index.html(后端已按本票产物起服:verify profile + MinIO 凭据)。