Files
Neo-ZQYY/docs/audit/changes/2026-02-26__retention-clue-refactor.md
Neo 14a12342b5 chore(audit): 补追 96 份未入仓审计孤本 — 覆盖 2026-02-26 ~ 2026-04-08
这些审计记录原本堆积在 docs/audit/changes/changes/ 嵌套误产物目录下(由开发机迁移
79d3c2e 前后的不明批量操作产生)。由于同期 .gitignore 屏蔽了 docs/audit/ 全目录,
它们从未入过 git 任何分支 history。删除即永久丢失。

按 docs/specs/audit-gap-recovery/tasks.md 阶段 1 执行,将全部 96 份 D 类孤本
(主目录无同名、git history 亦无记录)复制到 docs/audit/changes/ 主目录入仓。

涵盖主题: P1-P18 全栈集成 / 多模块累积变更 / ETL bug 修复 / 业务日切 /
   召回与任务引擎改造 / 租户管理与审批 / 董事会财务 / 客户与助教详情 /
   DDL 基线合并 / Kiro 到 Claude Code 迁移

阶段 2(B 类内容漂移 1 份)和阶段 4(嵌套目录删除)独立推进。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 06:35:42 +08:00

6.5 KiB
Raw Blame History

审计记录维客线索重构member_birthday_manual → member_retention_clue

  • 日期2026-02-26 13:09:41
  • Prompt-IDP20260226-130447(追加审计,前序 PromptP20260226-120858
  • 风险标签:root-file, dir:backend, dir:etl, dir:db, db-schema-change
  • 变更统计139 files changed, 6211 insertions(+), 216484 deletions(-)

变更概述

将原"助教手动补录会员生日"单一功能表 member_birthday_manual 重构为通用"维客线索"表 member_retention_clue,采用"大类 + 摘要 + 详情"三层结构,覆盖六个维度(客户基础信息、消费习惯、玩法偏好、促销偏好、社交关系、重要反馈)。生日信息不再单独建表,作为"客户基础信息"大类下的一条线索记录。

本次 PromptP20260226-130447需求在租户管理后台列出每个客户的所有维客线索标签、摘要、提供人、备注原文支持修改、删除、隐藏操作。

影响范围

子系统 影响
后端 API member_birthday 路由替换为 member_retention_clue,新增 POST/GET/DELETE 三个端点
ETL DWS member_consumption_taskmember_visit_task 移除 FDW 生日补录读取及 fallback 逻辑
FDW 外部表从 fdw_app.member_birthday_manual 重构为 fdw_app.member_retention_clue
DB 迁移 删除 member_birthday_manual,新建 member_retention_clue(含 CHECK 约束 + 3 索引)
DDL 基线 zqyy_app__public.sqlfdw.sql 已同步更新

本次对话文件变更session_diff

新增文件

  • docs/audit/prompt_logs/prompt_log_20260226_130447.md

修改文件

  • NeoZQYY.code-workspace
  • docs/h5_ui/pages/customer-detail.html

DDL / 迁移检查

  • 迁移脚本:db/zqyy_app/migrations/2026-02-26__refactor_birthday_to_retention_clue.sql
  • compliance.new_migration_sql:空(迁移已在变更文件列表中但未被 compliance prescan 标记为待执行)
  • ⚠️ DDL 基线待合并(has_ddl_baseline: false
  • BD 手册已创建:docs/database/BD_Manual_member_retention_clue.md

DB 文档对账

reasonsdb-schema-change,需执行全量对账。

  • ⚠️ 无法自动连接测试库TEST_DB_DSN执行 information_schema 全量查询(当前环境无 pg power MCP 可用)
  • 已有文档 docs/database/BD_Manual_member_retention_clue.md 内容与迁移脚本一致,表结构、约束、索引均已记录
  • 待手动对账:用户需在测试库执行验证 SQL 确认表结构与文档一致,或在 pg power 可用时重新触发审计

改动注解

apps/backend/app/main.py

  • 变更类型:修改
  • 原始原因:维客线索重构,需将后端路由注册从 member_birthday 切换到 member_retention_clue
  • 思路分析:仅修改 import 和 include_router 调用,最小化入口文件改动;同步更新 CHANGE 注释标记
  • 修改结果:后端启动时加载新的维客线索路由模块,旧生日路由不再注册

apps/backend/app/routers/member_retention_clue.py

  • 变更类型:新增
  • 原始原因:替代原 member_birthday 路由,提供维客线索的 CRUD 接口
  • 思路分析提供三个端点POST 提交线索INSERT、GET 按会员查询倒序、DELETE 删除单条。使用 get_connection() 直连业务库,事务手动管理
  • 修改结果:新增 /api/retention-clue 系列接口,支持多大类线索的增删查

apps/backend/app/schemas/member_retention_clue.py

  • 变更类型:新增
  • 原始原因:为维客线索接口定义请求/响应 Pydantic 模型
  • 思路分析:定义 ClueCategory 枚举6 个大类)、RetentionClueSubmit(提交请求)、RetentionClueOut(返回模型),字段约束与数据库 CHECK 一致
  • 修改结果:后端接口具备完整的输入校验和输出序列化能力

apps/etl/connectors/feiqiu/tasks/dws/member_consumption_task.py

  • 变更类型:修改
  • 原始原因:维客线索重构后,生日不再通过 FDW 从业务库补录ETL 侧需移除相关逻辑
  • 思路分析:删除 sql_with_fdw(含 COALESCE 子查询)和 sql_fallback(降级查询),合并为单一 sql 直接读取 dim_member.birthday;移除 try/except FDW 降级逻辑和 rollback 处理
  • 修改结果:会员消费汇总任务的会员信息提取简化为单次查询,消除 FDW 依赖和降级复杂度(-51 行)

apps/etl/connectors/feiqiu/tasks/dws/member_visit_task.py

  • 变更类型:修改
  • 原始原因:同 member_consumption_task移除 FDW 生日补录读取
  • 思路分析:同样删除双 SQL + try/except 降级模式,简化为单一查询
  • 修改结果:会员到店汇总任务的会员信息提取简化,消除 FDW 依赖(-49 行)

db/fdw/setup_fdw_reverse.sql

  • 变更类型:修改
  • 原始原因FDW 外部表需从 member_birthday_manual 重构为 member_retention_clue
  • 思路分析:更新外部表列定义(移除 birthday_value/source,新增 category/summary/detail),更新 OPTIONS 指向新表名,精简注释和验证 SQL
  • 修改结果:生产环境 FDW 反向映射指向新的维客线索表

db/fdw/setup_fdw_reverse_test.sql

  • 变更类型:修改
  • 原始原因:测试环境 FDW 配置需与生产环境同步
  • 思路分析:与 setup_fdw_reverse.sql 保持一致,仅目标库为 test_zqyy_app
  • 修改结果:测试环境 FDW 反向映射同步更新

db/zqyy_app/migrations/2026-02-26__refactor_birthday_to_retention_clue.sql

  • 变更类型:新增
  • 原始原因:需要数据库迁移脚本完成表结构重构
  • 思路分析:事务内先 DROP 旧表再 CREATE 新表幂等设计IF EXISTS / IF NOT EXISTS新表含 CHECK 约束限制 category 枚举值3 个索引覆盖常用查询模式
  • 修改结果:执行后 member_birthday_manual 被删除,member_retention_clue 就绪

docs/h5_ui/pages/customer-detail.html

  • 变更类型修改session_diff.modified
  • 简要注解H5 客户详情页面调整,配合维客线索功能的前端展示

NeoZQYY.code-workspace

  • 变更类型修改session_diff.modified
  • 简要注解:工作区配置文件更新

Prompt 溯源

- [P20260226-130447] 2026-02-26 13:04:47 +0800
  - summary: 依旧保留回访任务完成的判定新增:租户管理后台,列出每个客户的所有维客线索,标签 摘要 提供人 备注原文等字段。支持修改,删除,隐藏的操作。

本次 prompt 在维客线索重构基础上,进一步要求管理后台支持线索的列表展示与管理操作。