跳转至

L-20260822-01 DIP1 V2.0 全量重写(五服务模块化单体)

任务编号:L-20260822-01 / 执行人:听码 WDE / 日期:2026-08-22 任务来源:人类决策 —— dip1 旧成果移存 dip1/dip1.0/(仅参考,将删除),按最新 TND V2.0 设计在 dip1/ 完全重新开发


1. 任务起止与输入产物

2. 输出产物

2.1 后端 dip1/backend/(Python 3.12 + FastAPI + SQLAlchemy 2.0 asyncio + Alembic)

DDD 四层 + 模块化单体(D01 §二/§三,P1-P9 铁律落地):

模块 路由数 核心领域资产 事件发布/订阅 测试
QSV 报价 9(含 V3.3 兼容路由 /api/qsv/quote/create domain/qsv/pricing_engine.py 32 因子 9 步计价 + DME M1/M2/M3 + 封顶价/品牌溢价(1.0/1.2/1.4) + 快照不可变 发 2 / 订 1 36
CPT 跟踪 34 domain/cpt/state_machine.py 8 阶段状态机 + 183 字段采集规格(L3≥70%/L6≥95%/L8=100% 门槛)+ L6 三重校验 + NPS/REF 码 发 7 / 订 6 70
MDS 主数据 42 六库 SCL/BPL/WPL/CPL/PPL/DLV + 校准引擎四通道 + MDM 审批状态机 + PDPO 分级脱敏 发 2 / 订 1 53
DIS 派单 35 domain/dis/services/dispatch_matching_engine.py 9 组合评分(运输×0.55+安装×0.45)+ C7 四档赔付 + SAGA 状态 + 拒单 -25 处罚 发 5 / 订 2 67
OPS 运营 41 活动/物料/口碑 3 聚合状态机 + 9 层漏斗 + 6 场景线索接入(联系方式 SHA256) 发 2 / 订 3 43
公共 webhooks×2 + health 共享内核 Money/GPS/Address + 幂等/审计表
合计 165 operations 20 Topic 全覆盖 269 全绿

共享基础设施(主代理编写,模块代理复用): - app/core/:config(DIP1_ 前缀,D01 §十一 全兼容项)/ security(Keycloak JWKS + dev HS256,RBAC 12 角色)/ events(NATS JetStream + 进程内总线降级)/ exceptions(DomainError→HTTP 统一映射) - app/infrastructure/db/:Base/JSONVariant(PG→JSONB、SQLite→JSON)/ common(IdempotencyLog + AuditLog) - 44 张表 Alembic 迁移 0001_initial_5svc(autogenerate,upgrade head 验证通过) - 跨模块协作:异步一律走事件总线(P6);同步读经 ProviderPort + lazy import adapter + 默认参数回落(模块可独立测试)

2.2 部署层 dip1/deploy/

  • docker-compose.yml:8 服务(PG16+PostGIS / Redis7.2 / NATS2.10-js / Keycloak25 / Kong3.6 / Mailpit / Jaeger / backend[profile=ci]),对齐 D01 §四.1
  • kong.yml:DB-less 声明式配置(限流 600/min + correlation-id)
  • keycloak/realm-dip1.json:12 角色 Realm + 2 客户端

2.3 前端 dip1/frontend/(pnpm monorepo 脚手架)

详见 L-20260822-02:pnpm workspace + @dip1/shared(API客户端/5服务类型/三语文案)+ 5 端骨架;opr-admin(Next.js 14)build+tsc 通过,驾驶舱真实对接 OPS/CPT API。

2.4 验证记录

  • pytest tests -q269 passed(domain 纯 Python 单测 + API 冒烟经 ASGI 全路由)
  • ruff check app tests:全过(B008/UP042 为 FastAPI 惯用法豁免)
  • 真实 uvicorn 启动冒烟:/health 正常;/api/v2/qsv/quote/calculate 以 dev JWT 调通,返回 32 因子分步明细(P1_BASE 1375 → P5_TRANS +150 → FINAL 1525 HKD)
  • P1 铁律校验:各 domain/* 包零 fastapi/sqlalchemy/nats/redis import

3. 关键决策点

  1. QSV quote_id 用 QTE- 前缀(ORM 约定优先于 yaml 示例 pattern);CPT project_id 用契约格式 CPT-YYYYMMDD-NNNN(cpt.yaml pattern 权威)——两模块各自对齐了契约,ID 格式不统一属已知偏差,待 TL 裁决是否统一
  2. C7 加价险公式 D02 未给出,暂定 final×2%/最低 30HKD(代码注释标注待 QMD 细化)
  3. 183 字段按阶段 JSONB 合并存储(cpt_stage_collection),未逐列建 D09 8 张 DDL 表;I6 完成率 Python 侧计算
  4. AES-256-GCM 列级加密未实现:L3/L4 字段明文存储 + 输出强制脱敏 + AuditLog 留痕(加密落 KMS 属 OCM/D07 范围)
  5. DIP1_INTERNAL_SECRET / DIP1_OPS_PUBLIC_TOKEN:内部服务间与公开线索端点的密钥经环境变量外置(默认值仅开发用)

4. 遗留简化点(后续迭代)

# 事项 归属
1 AES-256-GCM 列级加密 + 阿里云 KMS 密钥托管 OCM/D07
2 PostGIS geom 列 + GIST 索引(当前 haversine + lat/lng) WDE 迁移增量
3 R2 预签名 URL(上传/下载/导出当前为占位) OCM 对象存储
4 Redis 缓存层(mds_params_config 缓存)、Sentry/OTLP 接入 生产部署项
5 NATS JetStream 真实联调(当前默认进程内总线,代码路径已具备) OCM 联调
6 前端 5 端完整实现(本次仅脚手架 + OPR 驾驶舱) WDE 下一阶段
7 Kong 生产模式(PG 存储 + Keycloak OIDC 插件 + Webhook HMAC 验签插件) OCM

5. 阻塞与风险

  • 无未解阻塞。风险:dip1.0 删除前如需找回 V3.3 源码,仅剩 __pycache__ 字节码(可反编译但成本高);V2.0 已全量覆盖其能力,评估可删。