wangjianlong_0626
67ba1b8eee
docs: 标明 neo4j_profile_projection 当前未被生产装配(方案 A 取舍)及启用前提
该适配器与主干 `ProfileGraphProjectionService` 是同一件事的两套实现,对图的建模不同:
本模块按客户各建**私有** `Preference`/`goal` 节点、数据源是 `memory_unit`;
主干服务写**共享** tag 节点、数据源是 `user_facts` 且只投影已确认事实。
## 它不是"本来就没被装配"
| 提交 | 事件 |
|---|---|
| `f167390`(ZSY) | 新建该适配器 |
| `5e848f5`(ZSY) | `feat: wire neo4j projection into worker` —— 在 `__main__.py` 装配,此后一直是**活的** |
| `4d8edb4`(主干) | PR #7 合并后接线仍在,**仍是活的** |
| `57677f6`(本次合并) | 主动摘掉那段装配 ⇒ 失去生产引用 |
`__main__.py` 在本次合并中并没有冲突(git 自动取的是带接线的主干版本),
是本线解决完冲突后**主动手工删除**的。
## 但根本原因是它与方案 A 互斥
只要落实方案 A,它就必然失去引用 —— "删 `__main__.py` 接线、保留 runtime 那套"与
"保留 `__main__.py` 骨架、把它的 neo4j handler 换成主干服务"两种做法结果相同。
所以这不是方案 A 的副作用,而是"两套图投影本来就只能活一套"。
## 改动
- `app/infrastructure/neo4j_profile_projection.py` 文件头加 `.. warning::`:
写明当前未被生产装配、为什么、其单测保护的是**模块自身契约**而非"已装配",
以及**启用前提** —— 必须先决定"图的节点模型以谁为准",只加回 `__main__.py` 装配
会重新变成两套图投影并存。
- `docs/39-主干合并对策记录.md` §3.3 补完整时间线与上述论证;§6 第 1 条改为准确表述。
- **保留文件**(实现本身完整:`MERGE` 幂等、按 `profile_version` 判重不被旧版本覆盖、
写入前经 `sanitize_customer_service_message` 脱敏),去留待架构师定:
删除 / 保留为参考实现(当前取此)/ 反过来改用它(则方案 A 需重议)。
验证:`mypy app` → 245 文件 0 错;该模块 4 个单测通过;文档守卫 53 份无编号冲突。
2026-09-12 13:23:43 +08:00
..
2026-09-12 10:37:53 +08:00
2026-09-12 13:14:57 +08:00
2026-09-12 13:23:43 +08:00
2026-09-12 13:14:57 +08:00
2026-09-12 10:45:40 +08:00
2026-09-12 13:14:57 +08:00
2026-09-10 19:51:08 +08:00
2026-09-12 13:14:57 +08:00
2026-09-09 21:55:37 +08:00
2026-09-12 10:37:53 +08:00