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.
票 03 · 矩阵 A4-1 公海 / A4-2 总览 / A4-3 我的客户(含导入·新增·编辑·添加联系人·OCR)
口径:原型要素(.scratch/lanhu-latest/v29-customer-pages/)× 实现(Controller 端点面 + DTO/Param 出入参 + 主 demo 呈现)。类型标注:缺接口(原型要、实现无端点)/ 缺出参(端点在、响应缺字段)/ 缺入参 / 校验差距 / 幻影(实现有、原型无)/ 豁免(前序拍板划出)/ ✅已覆盖。参照形态 .scratch/a7-parity/。
§1 A4-1 客户公海(a4-1-1 列表 / a4-1-2 看板)
| # |
原型要素 |
实现 |
判定 |
| 1.1 |
列表列:客户名称/类型/省市/行业/星级/负责人/入池时间/操作 |
GET /api/customer/pool/page → CustomerListRowDTO(含 enterPoolTime/focusFlag 等,票 01 补关注位) |
✅ |
| 1.2 |
筛选:关键词/类型/星级/行业/省市 |
page 入参同 mine(keyword/customerType/…字典档) |
✅ |
| 1.3 |
行操作:认领 |
POST /claim?id=(退池 release-pool 同族) |
✅ |
| 1.4 |
批量认领 |
POST /batch/claim 族 |
✅ |
| 1.5 |
看板视图(a4-1-2) |
形态偏好 scopeKey customer.pool;⚠ 白名单漂移:实现返回 code=0(API-SUMMARY §2.14 ⚠ 已注记,前端不得依赖拒绝) |
✅(漂移记档) |
| 1.6 |
列偏好/自定义视图 |
三件套 scopeKey customer.pool |
✅ |
§2 A4-2 客户总览(a4-2-1 列表/看板/卡片三视图)
| # |
原型要素 |
实现 |
判定 |
| 2.1 |
总览列表(全量客户只读) |
GET /page/workspace?workspace=overview(viewType 适配矩阵 §2.1) |
✅ |
| 2.2 |
看板视图 + 拖拽改阶段 |
POST /stage/change(三态 CAS) |
✅ |
| 2.3 |
卡片视图(卡片字段=列表行子集) |
数据面 ✅(同 DTO);主 demo 未实现卡片形态(形态偏好存取链路在) |
✅数据 / P3 呈现 |
| 2.4 |
分屏视图 |
同上:数据面 ✅、demo 未渲染 |
P3 呈现 |
§3 A4-3-1 我的客户(列表/看板/卡片)
| # |
原型要素 |
实现 |
判定 |
| 3.1 |
列表列(含 是否关注/战略协议/星标/跟进倒计时) |
CustomerListRowDTO:focusFlag(票 01)/strategicAgreementLevel/vipCustomerLevel/lastValidFollowTime 全齐 |
✅ |
| 3.2 |
关注/星标行内切换 |
POST /focus /unfocus /star /unstar |
✅ |
| 3.3 |
批量操作:关注/星标/认领/退池/归档/还原 |
POST /batch/* 族(oneBy/batchPost demo 动态拼接对账 ✅) |
✅ |
| 3.4 |
归档/还原 |
`POST /archive |
/restore?id=`(archived 态列表过滤) |
| 3.5 |
卡片/分屏视图 |
同 §2.3 |
P3 呈现 |
| 3.6 |
空态/勾选列/序号列 |
前端固定列职责(R5 拍板) |
前端 |
§4 A4-3-2 客户导入(六端点 + 判定语义)
| # |
原型要素 |
实现 |
判定 |
| 4.1 |
模板下载(V1 双 sheet 9+5 列) |
GET /import/template(RFC 5987 + 表头=版本锚点) |
✅ |
| 4.2 |
上传预检 + 预计数(insert/update/fail/suspect) |
POST /import/upload(三模式 × 重复策略回显) |
✅ |
| 4.3 |
新增行必填校验:类型/省/市/行业/星级 |
P1 已修(本票):INSERT 行五列缺省 → 预检即 FAIL「XX必填」,UPDATE 行部分更新不受限;单测 20/20 绿(CustomerImportIntegrationTest) |
✅(修复) |
| 4.4 |
重复组处置(SKIP 全失败 / OVERWRITE 末行生效) |
Analyzer 文件内重复组 + confirm 执行同口径 |
✅ |
| 4.5 |
名称相似 → SUSPECT 不写入 |
nameSimilarPort + 查重设置驱动 |
✅ |
| 4.6 |
两段式执行 + 结果页 + 失败明细 |
confirm/result/failures/page;D-04 截断已修复 |
✅ |
| 4.7 |
「触发校验规则后确认执行」复选框 |
实现无此语义(确认即执行)——原型控件幻影 |
P3 记档 |
| 4.8 |
导入记录页(仅本人) |
GET /import/page(creator 过滤) |
✅ |
§5 A4-3-3-1/2/3 新增客户 / 编辑客户 / 添加联系人
| # |
原型要素 |
实现 |
判定 |
| 5.1 |
新增全字段表单(类型/省市/行业/星级/信用代码/备注…) |
POST /create(DTO 全字段;isBizNegotiated/isChild/relationStarLevel 服务端默认) |
✅ |
| 5.2 |
名称查重弹窗(needConfirm + similarHits 确认重发) |
GET /check-name + confirmSimilar 透传(返工票 04 补齐) |
✅ |
| 5.3 |
信用代码硬拦 |
GET /check-credit-code(系统强制无开关) |
✅ |
| 5.4 |
工商联想/带入 |
GET /company-lookup(stub 恒 NO_HIT)+ POST /company-lookup/batch-update(F6 五态软处置) |
✅(stub 记档) |
| 5.5 |
编辑回显 + CAS |
GET /detail?id= / POST /edit?id=(version 带回;归属字段不可改) |
✅ |
| 5.6 |
编辑页「添加联系人」弹窗 |
POST /contact/add(姓名/职务/电话/关键联系人) |
✅ |
| 5.7 |
附件上传位(新增/编辑页) |
豁免(D2 划出) |
豁免 |
§6 A4-3-3-4 OCR 快捷新增
| # |
原型要素 |
实现 |
判定 |
| 6.1 |
营业执照 OCR → 带出工商字段 |
无端点(customer-module D5 划出 OCR 族) |
豁免 |
小结(A4-1~A4-3 组)
- 缺接口:0(OCR/附件属豁免);P1 修复 1 处(导入必填前移,已闭环)。
- P3 记档:demo 卡片/分屏未渲染(数据面已通)、「触发校验规则」幻影复选框。
- 存量疑点①收口:pool·board 白名单漂移 = I-06 记档非缺陷,API-SUMMARY §2.14 ⚠ 已注记,前端侧约束(不得依赖拒绝行为)随 Bruno 文档落(票 05)。