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.

23 lines
2.8 KiB

21 hours ago
# 01 · spec 冻结:图谱数据模型与契约设计
- **Type:** grilling
- **Status:** open
- **Blocked by:** 00(原型 demo 验收通过后继续;以 demo 为活参照——demo 里 mock 实现的规则 = 逐组定稿的素材与对照物)
## Question
对照原型需求权威(`.scratch/opportunity-bugfix/lanhu-pages/A4-4-2_客户详情(联系人).md` u533 列表侧 + u536 图谱 15 条),HITL grilling 逐组定稿并产出 `spec.md`
1. **边模型**:多父 DAG(原型允许一联系人多上级);边表字段(customer_id / parent_contact_id / child_contact_id / source=auto|manual);**系统边删除的持久否决**(原型第 9 条:删除系统生成的连线并保存后不再自动恢复——tombstone 还是边行 status);自连/循环/重复的拒绝口径与错误码。
2. **自动生成算法**:job_title_level → 层级位置(越高越靠上、同级并列、多顶层并列、公司节点固定居中);自定义职务/层级为空 → 「未识别层级」区不生成连线;职务修改后的增量语义(全量重建 vs 差异)。
3. **布局持久化**:拖拽位置是否随「保存」落库(原型第 12 条「保存本次新增、删除和调整的关系」);归属 per customer 全局共享(推荐)还是 per user。
4. **并发冲突**(原型第 14 条):关系被他人修改的检测方案(版本号 / updated_at)与冲突响应形态。
5. **job_title 字典设计**:原型职务集(董事长/股东/采购经理/市场经理/采购专员/市场专员/人事经理/投标商务·其他)→ 标准职务 code/name/category/level 枚举 + **职务二级联动选择器**(类别→职务)的字典查询契约;层级分档规则由产品定(grill 向用户要分档表)。
6. **contact_source 字典值**(原型出现:转介绍/组会/组局;W-01 销号口径)。
7. **新端点契约清单**:图谱读 / 边 add / 边 delete / 布局 save / 关系变更日志 / 明文查看 reveal + 查看日志 / 批量导出 / 页内编辑批量保存 / 快速添加多行 / 导入三段式 —— 逐端点 method+路径+入参+出参+错误码(错误码段沿用 67xxx 还是新段?);过 ADR-0017 flat 纪律。
8. **埋点表**:明文查看日志(操作人/时间/联系人/是否命中号码),是否进 oplog 或独立表。
9. **联系人导入**:表复用深度(复用 customer_import_* 形态 vs 独立 contact_import_*)、Analyzer 预检校验清单(迁移 D-05/D-04 教训:NOT NULL 无默认列群必填前移 + clip500)、导入触发图谱自动更新的落点。
10. **图谱规模上限**记录(单客户数百联系人时的布局与读端点预案)。
**交付**:`.scratch/customer-contact-graph/spec.md`(D 决策 + 新表 DDL 草案 + 端点契约表 + 字典值定稿)——02~07 的唯一输入。