Bladeren bron

docs(mdp): summarize data platform rollout

Document the S1-S3 data platform rollout, remaining gaps, and reusable module expansion guidance for future S4-S8 work.

Co-authored-by: Cursor <cursoragent@cursor.com>
skygu 3 dagen geleden
bovenliggende
commit
b9b4333871

+ 2 - 0
doc/README.md

@@ -50,6 +50,8 @@
 | [plan/S0-CodeFirst启动异常与BOM历史数据治理方案.md](./plan/S0-CodeFirst启动异常与BOM历史数据治理方案.md) | S0 legacy BOM 表 CodeFirst 启动异常、根因与彻底治理步骤 |
 | [plan/S8/S8数据库处理优化方案.md](./plan/S8/S8数据库处理优化方案.md) | S8 调度、检测日志、通知扫描与数据库写入压力优化方案 |
 | [plan/新系统数据库简明介绍与S1数据流.md](./plan/新系统数据库简明介绍与S1数据流.md) | 新系统数据库简明说明,并以 S1 为例说明数据中台流转 |
+| [plan/数据中台方案复盘与未实现清单.md](./plan/数据中台方案复盘与未实现清单.md) | 数据中台总体方案、S1-S3 当前进度、未实现事项和后续优先级复盘 |
+| [plan/数据中台模块扩展指南-S1至S3经验版.md](./plan/数据中台模块扩展指南-S1至S3经验版.md) | 基于 S1-S3 经验的 S4-S8 数据中台、KPI 报表与看板扩展指南,含 Cursor 小步闭环任务模板 |
 | [plan/数据库迁移/S1/S1-任务交接记忆.md](./plan/数据库迁移/S1/S1-任务交接记忆.md) | **S1 数据中台迁移**跨会话交接(当前进度、阻塞、验收 SQL) |
 | [plan/数据库迁移/S1/S1数据中台迁移实施计划.md](./plan/数据库迁移/S1/S1数据中台迁移实施计划.md) | S1 数据中台迁移主方案与分块步骤 |
 | [plan/数据库迁移/S2/S2数据中台与KPI扩展验收.md](./plan/数据库迁移/S2/S2数据中台与KPI扩展验收.md) | S2 生产排程数据中台链路、KPI 写入与验收 SQL |

+ 377 - 0
doc/plan/数据中台方案复盘与未实现清单.md

@@ -0,0 +1,377 @@
+# 数据中台方案复盘与未实现清单
+
+## 1. 文档目的
+
+本文用于整体复盘 Ai-DOP 新系统数据中台方案、当前落地进度、已完成能力和仍未实现事项,供项目负责人、研发同事和后续使用 Cursor 扩展 S4-S8 模块时参考。
+
+本文只描述当前方案与进度,不替代各模块的详细实施方案。后续具体模块扩展仍建议参考:
+
+- `doc/plan/新系统数据库简明介绍与S1数据流.md`
+- `doc/plan/数据中台模块扩展指南-S1至S3经验版.md`
+- `doc/plan/数据库迁移/S2/S2数据中台与KPI扩展验收.md`
+- `doc/plan/数据库迁移/S3/S3数据中台与看板动态化验收.md`
+
+## 2. 总体方案复盘
+
+### 2.1 当前总体架构
+
+当前系统以 MySQL `aidopdev` 为主库,Admin.NET + SqlSugar 作为后端框架。数据中台方案不是简单复制旧系统表,而是把旧系统和新系统运行数据按统一分层沉淀,服务于智慧运营看板、KPI 报表、诊断和后续任务闭环。
+
+当前采用“物理同库、逻辑分层”的方式:
+
+| 逻辑域 | 典型表 | 当前职责 |
+|--------|--------|----------|
+| 核心运行域 | `sys_*`、业务单据表、S0/S1/S2/S3 运行表 | 权限、菜单、流程、页面保存、业务动作 |
+| 数据接入域 | `mdp_entity`、`mdp_sync_log`、`mdp_stg_*` | 源实体登记、贴源、同步日志 |
+| 数据标准域 | `mdp_std_*` | 清洗字段、统一业务对象、兜底历史脏数据 |
+| 分析宽表域 | `dwd_*` | 面向看板、诊断、报表和 ChatBI 的稳定读取面 |
+| 指标结果域 | `ado_smart_ops_kpi_master`、`ado_s9_kpi_value_*` | 指标定义、日粒度指标值、状态色、趋势 |
+| 运行观测域 | `mdp_transform_run_log`、`mdp_sync_log` | 作业状态、批次、行数、异常信息 |
+
+### 2.2 标准数据流
+
+```text
+业务运行表 / 旧系统表 / 外部接口
+        │
+        ▼
+mdp_stg_* 贴源层
+保留源行、source_table、source_row_id、raw_data、sync_batch_id
+        │
+        ▼
+mdp_std_* 标准层
+统一订单、排程、采购、物料、交付等业务对象
+        │
+        ▼
+dwd_* 明细宽表层
+面向看板、诊断、KPI 和跨模块查询的主题事实
+        │
+        ▼
+ado_s9_kpi_value_* 指标层
+按模块和层级写入 L1/L2/L3/L4 KPI
+        │
+        ▼
+后端聚合 API
+module-detail / home-grid / 模块专用接口
+        │
+        ▼
+前端智慧运营看板 / KPI 报表 / 监控页
+```
+
+### 2.3 当前工程实现范式
+
+当前阶段尚未完全落到“全配置驱动管道”。S1-S3 采用的是已验证的工程范式:
+
+- 每个模块有独立 `*MdpSyncTransformService`。
+- 服务内部集中维护 STG、STD、DWD、KPI 的 SQL。
+- 每个模块有独立 `*MdpSyncTransformJob`。
+- 任务写入 `mdp_transform_run_log` 和 `mdp_sync_log`。
+- 看板通过后端聚合接口读取 DWD/KPI,而不是直接读旧接口或贴源表。
+- 前端详情页逐步从静态模拟数据切换为真实聚合数据。
+
+该范式的优点是可控、易调试、容易让 Cursor 按模块复制扩展;缺点是 SQL 仍在代码里,后续要演进为配置驱动或策略驱动还需要单独建设管道解析器和规则引擎。
+
+## 3. 当前进度总览
+
+### 3.1 已完成到可验收的模块
+
+| 模块 | 当前状态 | 数据中台链路 | KPI/看板 | 备注 |
+|------|----------|--------------|----------|------|
+| S1 产销协同 | 已完成首轮深度改造 | 已形成 STG/STD/DWD/KPI 链路 | 订单、评审、发货、联动等 KPI 和页面读数已切入中台 | 部分跨模块 Tab 仍依赖 S2/S3/S4/S6/S7 后续数据 |
+| S2 制造协同 | 已完成首轮扩展 | `mdp_stg_schedule` -> `mdp_std_work_order_schedule` / `mdp_std_operation_schedule` -> `dwd_order_schedule_trans` | 看板顶部 KPI、趋势、分布、异常、明细已动态化 | 不改 S6 生产执行写入 |
+| S3 供应协同 | 已完成首轮扩展并修复刷新链路 | 供应、采购、物料、交付相关 STG/STD/DWD/KPI 链路已跑通 | S3 详情看板同步状态、分支 KPI、趋势、健康度、异常日志已动态化 | 手动刷新成功,最新日志为 `SUCCESS` |
+
+### 3.2 已形成的共性能力
+
+- 数据中台分层约定已经明确。
+- `mdp_transform_run_log` 已成为模块级作业状态来源。
+- `mdp_sync_log` 已用于源实体同步可观测。
+- `ado_s9_kpi_value_*` 已作为 S1-S3 KPI 结果主落点。
+- `module-detail` 已承担部分模块详情看板聚合能力。
+- S2/S3 已具备手动刷新 API:`s2-mdp/refresh`、`s3-mdp/refresh`。
+- S1-S3 已形成可复制的 Cursor 小步闭环扩展指南。
+- S3 转换链路已处理历史脏数据空 `item_code` 导致批次失败的问题。
+
+### 3.3 文档沉淀进度
+
+| 文档 | 用途 |
+|------|------|
+| `新系统数据库简明介绍与S1数据流.md` | 面向团队快速理解数据库分层和 S1 数据流 |
+| `数据中台模块扩展指南-S1至S3经验版.md` | 面向 S4-S8 的通用扩展指南和 Cursor 任务模板 |
+| `S2数据中台与KPI扩展验收.md` | S2 分层、KPI 和看板验收记录 |
+| `S3数据中台与看板动态化验收.md` | S3 分层、刷新、看板动态化和验收记录 |
+| `S0-CodeFirst启动异常与BOM历史数据治理方案.md` | 后端启动阶段 CodeFirst 历史问题治理建议 |
+
+## 4. S1-S3 详细进度复盘
+
+### 4.1 S1 产销协同
+
+S1 已完成较完整的数据中台改造,核心数据流为:
+
+```text
+订单 / 合同评审 / 产品设计 / 发货计划 / ASN / 计划联动 / 需求核验
+        │
+        ▼
+mdp_stg_so / mdp_stg_ship_trans
+        │
+        ▼
+mdp_std_so / mdp_std_ship_trans
+        │
+        ▼
+dwd_ship_trans / dwd_requirement_examine_detail
+        │
+        ▼
+ado_s9_kpi_value_*
+```
+
+已完成能力:
+
+- 订单列表、订单交付列表、需求核验等页面开始读取中台层。
+- 订单评审、合同评审、产品设计、交期评审、发货与联动 KPI 已写入指标层。
+- `S1_MDP_SYNC_TRANSFORM` 形成独立批次和日志。
+- MDP 监控可追踪 S1 作业状态。
+
+仍需注意:
+
+- `S1_L1_004` 成品库存周转目前是代理口径,不是真正的库存金额/销售成本口径。
+- 订单交付 Tab3/Tab5/Tab6/Tab7/Tab8 的完整深层口径依赖 S2/S3/S4/S6/S7 后续模块。
+- S1 已完成产销协同主链路,但跨模块履约全链路仍需其他模块补齐。
+
+### 4.2 S2 制造协同
+
+S2 首轮扩展聚焦生产排程:
+
+```text
+WorkOrdMaster / WorkOrdRouting / WorkOrdDetail / PeriodSequenceDet / ScheduleResultOpMaster
+        │
+        ▼
+mdp_stg_schedule
+        │
+        ▼
+mdp_std_work_order_schedule / mdp_std_operation_schedule
+        │
+        ▼
+dwd_order_schedule_trans
+        │
+        ▼
+ado_s9_kpi_value_l1_day / ado_s9_kpi_value_l2_day
+```
+
+已完成能力:
+
+- S2 MDP 转换服务和作业已建立。
+- S2 看板从静态展示扩展为动态读数。
+- 顶部 KPI、全流程分解柱、近 7 日趋势、车间/产线分布、异常日志、待排明细已接入接口数据。
+- 手动刷新 API 已提供。
+- 文档中已有验收 SQL 和数据库验收记录。
+
+仍需注意:
+
+- 当前只读生产排程相关运行表,不处理 S6 生产执行写入。
+- 资源、报工、质检、完工等制造执行事实仍应在 S6 中继续补齐。
+- S2 与 S8 异常监控只是读数联动,不改变 S8 规则引擎。
+
+### 4.3 S3 供应协同
+
+S3 首轮扩展聚焦物料计划、采购交付、供应风险:
+
+```text
+供应商 / 物料 / 采购 / 交货 / 齐套
+        │
+        ▼
+mdp_stg_*
+        │
+        ▼
+mdp_std_*
+        │
+        ▼
+dwd_material_readiness / dwd_supplier_delivery / dwd_supplier_risk
+        │
+        ▼
+ado_s9_kpi_value_*
+        │
+        ▼
+S3 供应协同详情看板
+```
+
+已完成能力:
+
+- S3 `module-detail` 返回同步状态、分支 KPI、趋势、供应商健康度分布、异常日志。
+- 新增 `POST /api/AidopKanban/s3-mdp/refresh` 手动刷新。
+- S3 看板已支持真实数据驱动、刷新、导出、策略模拟提示和无数据兜底。
+- 修复历史脏数据 `item_code` 为空导致 S3 转换失败的问题。
+- 手动刷新成功,批次 `S3_MDP_FULL_20260603033924` 返回 `stageRows=41636`、`standardRows=111478`、`dwdRows=4115`、`kpiRows=4`。
+
+仍需注意:
+
+- 当前 S3 只补供应协同详情看板的数据读取、刷新、展示和导出。
+- 未新增 S6/S8 写入闭环。
+- 未新增真正的策略模拟执行链路,当前只是只读底座提示。
+- 外部系统事务、PR/PO/DO 自动转单、SAP/QAD 推送等高风险动作尚未纳入本轮。
+
+## 5. 仍未实现的事项
+
+### 5.1 平台级能力未完全实现
+
+| 未实现项 | 当前影响 | 建议 |
+|----------|----------|------|
+| 全配置驱动的 MDP 管道解析器 | 当前 STG/STD/DWD/KPI SQL 仍写在代码服务中 | 短期继续使用 S1-S3 范式;中期建设 `mdp_pipeline*` 配置消费能力 |
+| 通用字段映射和转换表达式引擎 | 新模块仍需要手写 SQL 清洗和兜底 | 先沉淀 S4-S8 共性字段,再抽象映射规则 |
+| 通用数据质量校验 | 空值、非法日期、非法数字主要靠各模块 SQL 兜底 | 建议补通用校验日志和质量报表 |
+| 通用血缘和影响分析 | 当前能看批次日志,但不能完整追踪字段级血缘 | 先补实体级血缘,再考虑字段级 |
+| 通用 DWD/KPI 口径管理页面 | 指标主数据已有,口径解释和公式管理仍分散 | 与 SmartOps 指标模型配置合并规划 |
+| 通用模块扩展脚手架 | Cursor 可按指南生成任务,但没有代码生成器 | 先使用文档模板,后续再抽模板代码 |
+
+### 5.2 S4-S8 模块仍未完成同等深度扩展
+
+| 模块 | 未完成重点 |
+|------|------------|
+| S4 采购执行 | PR/PO/收货/在途/供应商执行 DWD 与 KPI 仍需补齐;需谨慎处理采购单写入和外部事务 |
+| S5 质量协同 | IQC/PQC/FQC/OQC、缺陷、返工、让步、质检批次追溯仍需沉淀 |
+| S6 生产执行 | 报工、工序执行、设备/人员、完工、异常停线、生产节拍仍需形成 DWD/KPI |
+| S7 仓储物流 | 原材料/半成品/成品库存快照、出入库、周转、库龄、配送仍需补齐 |
+| S8 异常监控 | 规则、告警、流程、通知已有基础,但与 S1-S7 的 DWD 异常事实消费仍需统一 |
+
+### 5.3 指标口径仍有待收敛
+
+当前 S1-S3 已把一批 KPI 写入 `ado_s9_kpi_value_*`,但仍有以下问题:
+
+- 部分指标是“最小真实口径”或代理口径,不是最终财务/运营正式口径。
+- L3/L4 指标覆盖度不均衡,部分模块只覆盖 L1/L2。
+- 指标公式、阈值、方向、红黄绿判断虽然有主数据,但维护入口和版本管理还不完整。
+- KPI 与任务流验证、改善闭环之间尚未完全打通。
+
+建议后续按以下顺序收敛:
+
+1. 每个模块先保证 L1/L2 指标真实可算。
+2. 再补关键 L3/L4 节点指标。
+3. 再统一指标公式、阈值、方向、解释文本。
+4. 最后接入改善计划、验证和闭环。
+
+### 5.4 看板与任务闭环仍未完全打通
+
+已完成的是数据底座和动态展示,尚未完全完成:
+
+- 看板异常一键生成任务。
+- KPI 异常自动诊断。
+- 诊断结果生成改善计划。
+- 改善计划执行后自动验证 KPI。
+- S8 告警、任务流、各模块业务动作之间的统一闭环。
+
+S3 当前的“策略模拟”只是提示,不是真正执行策略。类似能力需要后端白名单 Service、任务流节点、执行日志和外部系统防护一起设计。
+
+### 5.5 外部系统和副作用动作未完成治理
+
+以下能力不应直接由前端或看板调用旧系统接口:
+
+- PR 合并。
+- DO/PO 转单。
+- SAP/QAD 推送。
+- MES/WMS/QMS 外部写入。
+- 自动审批或自动释放。
+
+当前建议:
+
+- 只读查询可以先通过 DWD/KPI 展示。
+- 有副作用动作必须进入后端 Service。
+- 高风险动作需要任务流、审批、执行日志、重试和止损方案。
+- 外部事务先记录候选和日志,再决定是否真实推送。
+
+### 5.6 CodeFirst 启动问题仍是工程体验风险
+
+当前后端启动仍会经过既有 CodeFirst 初始化阶段,并可能出现 S0 legacy 表 DDL 冲突或历史空值问题,例如:
+
+- `ProductStructureMaster.ParentMaterialId` 空值导致 `Invalid use of NULL value`。
+- 个别旧表主键重复定义导致可忽略 DDL 冲突。
+
+这些问题当前通常可被配置跳过,但会带来:
+
+- 启动慢。
+- 日志污染。
+- 本地调试和接口验证耗时。
+- 新同事误判为新模块失败。
+
+建议按既有治理文档继续推进:旧表停止 CodeFirst 自动改结构,历史数据清洗后再通过版本脚本固化约束。
+
+## 6. 后续推荐优先级
+
+### P0:保证当前 S1-S3 稳定
+
+- 定期检查 `S1/S2/S3_MDP_SYNC_TRANSFORM` 最新日志是否 `SUCCESS`。
+- 确认重复执行不造成重复数据。
+- 补充数据质量检查,重点关注空编码、非法日期、非法数量。
+- 对 S1 代理指标做明确标注,避免被误认为正式财务口径。
+
+### P1:按指南推进 S4-S8
+
+推荐顺序:
+
+1. S4 采购执行:补采购执行 DWD 和 KPI,为 S1/S3 采购交付链路提供真实支撑。
+2. S6 生产执行:补报工、完工、工序执行,支撑 S2 和 S1 交付闭环。
+3. S7 仓储物流:补库存快照、出入库和周转,修正 S1/S3 库存类指标。
+4. S5 质量协同:补 IQC/PQC/FQC/OQC 和缺陷事实,支撑 S1/S6/S8。
+5. S8 异常监控:在各模块 DWD 异常事实稳定后统一消费和闭环。
+
+### P2:抽象通用平台能力
+
+- 抽通用 MDP 作业基类或模板。
+- 抽通用 `module-detail` 聚合模型。
+- 抽统一同步状态 DTO、趋势 DTO、分布 DTO、异常 DTO。
+- 建设配置驱动字段映射和数据质量规则。
+- 建设指标口径配置和公式版本管理。
+
+### P3:建设闭环运营能力
+
+- 看板异常 -> S8 告警。
+- 告警 -> 任务流。
+- 任务流 -> 后端白名单业务动作。
+- 动作结果 -> DWD/KPI 回写。
+- KPI 变化 -> 验证改善结果。
+
+## 7. 后续模块启动前检查清单
+
+每个新模块启动前,应先完成以下检查:
+
+- [ ] 模块目标是否明确,是只读看板、KPI 报表,还是包含业务动作。
+- [ ] 是否列出旧接口、源表、存储过程和外部事务。
+- [ ] 是否明确 `mdp_stg_*`、`mdp_std_*`、`dwd_*`、KPI 表。
+- [ ] 是否已有 `mdp_entity` 登记方案。
+- [ ] 是否有 DDL 和版本脚本。
+- [ ] 是否有 `*MdpSyncTransformService` 和 `*Job`。
+- [ ] 是否有手动 refresh API。
+- [ ] 是否有看板聚合接口。
+- [ ] 是否有前端动态化范围。
+- [ ] 是否有验收 SQL。
+- [ ] 是否列出跨模块影响。
+- [ ] 是否明确本轮不做事项。
+
+## 8. 给 Cursor 的复盘后续 Prompt
+
+用于让 Cursor 基于本复盘继续推进某个模块:
+
+```text
+请阅读:
+- doc/plan/数据中台方案复盘与未实现清单.md
+- doc/plan/数据中台模块扩展指南-S1至S3经验版.md
+
+目标模块:<S4/S5/S6/S7/S8>
+
+请只读审计当前仓库,输出该模块的数据中台扩展任务列表。
+要求:
+- 不改文件。
+- 按小步闭环拆分。
+- 明确 STG/STD/DWD/KPI/作业/API/前端/验收/文档。
+- 单独列出跨模块影响。
+- 标注哪些事项必须先等用户确认。
+```
+
+## 9. 总结
+
+当前数据中台已经完成从“方案设计”到“可运行范式”的关键跨越。S1-S3 已经证明:
+
+- 同库逻辑分层可行。
+- 模块独立转换服务可行。
+- DWD/KPI 驱动看板可行。
+- 手动刷新、运行日志、验收 SQL 可形成闭环。
+- Cursor 可以基于 S1-S3 范式继续扩展其他模块。
+
+但整体平台仍处于“模块范式稳定、平台化能力待抽象”的阶段。后续重点不是继续堆散点接口,而是按 S4-S8 逐个补齐 DWD/KPI/看板,再把共性能力沉淀为配置驱动、质量治理、指标口径管理和任务闭环。

+ 399 - 0
doc/plan/数据中台模块扩展指南-S1至S3经验版.md

@@ -0,0 +1,399 @@
+# 数据中台模块扩展指南(S1-S3 经验版)
+
+## 1. 适用目标
+
+本文面向后续 S4-S8 等模块扩展,目标是让团队成员可以基于本指南,使用 Cursor 快速生成目标模块的具体扩展任务列表,并按小步闭环完成:
+
+- 新数据中台分层:`mdp_stg_*`、`mdp_std_*`、`dwd_*`、`ado_s9_kpi_value_*`。
+- KPI 报表扩展:指标主数据、计算写入、看板聚合接口、前端展示。
+- 后端作业与刷新:`*MdpSyncTransformService`、`*MdpSyncTransformJob`、手动 refresh API、运行日志。
+- 前端看板动态化:API 类型、图表、异常日志、刷新、导出、无数据兜底。
+- 文档、验收 SQL、版本号和提交闭环。
+
+本指南不是替代详细业务方案,而是把 S1、S2、S3 已验证的工程路径整理成可复制的任务模板。
+
+## 2. 总体分层范式
+
+```mermaid
+flowchart LR
+  Source["旧系统表 / 新系统运行表 / 外部接口"] --> Stg["mdp_stg_* 贴源层"]
+  Stg --> Std["mdp_std_* 标准层"]
+  Std --> Dwd["dwd_* 主题宽表"]
+  Dwd --> Kpi["ado_s9_kpi_value_* KPI结果"]
+  Kpi --> Api["看板聚合 API"]
+  Dwd --> Api
+  Api --> Web["智慧运营看板 / KPI报表 / 诊断"]
+  Job["*MdpSyncTransformJob"] --> Stg
+  Job --> Std
+  Job --> Dwd
+  Job --> Kpi
+  Job --> Log["mdp_sync_log / mdp_transform_run_log"]
+```
+
+### 2.1 各层职责
+
+| 层级 | 典型表 | 职责 | S1-S3 经验 |
+|------|--------|------|------------|
+| 贴源层 | `mdp_stg_*` | 保留源表关键字段和 `raw_data`,便于追溯 | 每个源实体在 `mdp_entity` 登记,批次写 `mdp_sync_log` |
+| 标准层 | `mdp_std_*` | 清洗字段、统一编码、日期、数量和状态口径 | 标准层要做空值兜底和类型转换,避免脏数据中断批次 |
+| 明细宽表 | `dwd_*` | 面向看板、诊断、ChatBI 的稳定读取面 | 页面不要长期直查贴源表或旧系统接口 |
+| KPI 层 | `ado_s9_kpi_value_*` | 存 L1/L2/L3 指标结果、状态和趋势 | 指标口径跟 `ado_smart_ops_kpi_master` 对齐 |
+| 日志层 | `mdp_transform_run_log`、`mdp_sync_log` | 记录批次、行数、状态和异常 | 看板顶部同步状态优先读这里 |
+
+### 2.2 命名约定
+
+- 作业编码:`Sx_MDP_SYNC_TRANSFORM`,例如 `S3_MDP_SYNC_TRANSFORM`。
+- 手动刷新接口:`POST /api/AidopKanban/sx-mdp/refresh` 或模块专用 refresh API。
+- 指标编码:`Sx_L1_001`、`Sx_L2_001`、`Sx_L3_001`。
+- 看板聚合:优先复用 `module-detail?moduleCode=Sx`;复杂模块可新增专用聚合接口。
+- 文档:放入 `doc/plan/数据库迁移/Sx/` 或 `doc/plan/`,并在 `doc/README.md` 加索引。
+
+## 3. 小步闭环任务模板
+
+团队成员让 Cursor 扩展新模块时,应先让 Cursor 基于本模板生成具体任务列表,再逐项执行。每一步都要形成“输入明确、改动可控、验收可查”的闭环。
+
+### 3.1 Cursor 任务生成 Prompt
+
+```text
+请基于《doc/plan/数据中台模块扩展指南-S1至S3经验版.md》,为 <目标模块> 生成小步闭环扩展任务列表。
+
+目标模块:<S4/S5/S6/S7/S8>
+业务范围:<一句话说明模块要解决什么>
+参考模块:<优先选择 S1/S2/S3 中最相近的模块>
+已知源表/旧接口:<列出源表、旧 API、存储过程,可为空>
+目标看板:<首页九宫格 / 详情页 / KPI报表 / 监控页>
+本轮边界:<只读看板 / 含刷新作业 / 含业务动作 / 不接外部系统>
+
+请按以下闭环拆分任务:
+1. 现状审计:源表、旧接口、前端静态区、已有 KPI、已有 DWD。
+2. 方案确认:拟改文件、跨模块影响、DDL/API/前端/验证范围。
+3. DDL 与版本脚本:新增或确认 `mdp_stg_*`、`mdp_std_*`、`dwd_*`、索引、`mdp_entity`。
+4. 后端转换:实现 `*MdpSyncTransformService`,完成 STG -> STD -> DWD -> KPI。
+5. 作业与刷新:实现 `*MdpSyncTransformJob` 和手动 refresh API。
+6. 看板聚合接口:补 `module-detail` 或模块专用聚合接口。
+7. 前端动态化:API 类型、页面数据绑定、图表、刷新、导出、兜底。
+8. 验证闭环:构建、接口、数据库验收 SQL、手动刷新、日志检查。
+9. 文档闭环:新增验收文档、README 索引、遗留风险。
+10. 提交闭环:按实际改动递增版本号,提交并推送。
+
+每一步必须输出:
+- 目标
+- 输入
+- 拟改文件
+- 完成标准
+- 验收 SQL/API/页面检查
+- 是否需要用户确认
+
+如果改动会影响其他模块、公共接口、菜单种子、数据库结构、外部系统事务或任务流,请先单独列出“跨模块影响”,等待确认后再执行。
+```
+
+### 3.2 任务表格式模板
+
+| 顺序 | 任务 | 输入 | 拟改文件 | 完成标准 | 验收方式 | 是否需确认 |
+|------|------|------|----------|----------|----------|------------|
+| 1 | 现状审计 | 模块名、页面、旧接口、源表 | 只读 | 明确现状、差距和风险 | 输出审计清单 | 否 |
+| 2 | 方案确认 | 审计结果 | 只读 | 明确文件、接口、表和边界 | 用户确认 | 是 |
+| 3 | DDL/实体 | 目标分层表 | `UpdateScripts`、`mdp_entity` | 表、索引、实体登记完整 | `SHOW TABLES`、`COUNT` | 是 |
+| 4 | 转换服务 | 源表和口径 | `*MdpSyncTransformService` | STG/STD/DWD/KPI 全链路完成 | 手动运行、日志成功 | 否 |
+| 5 | 作业刷新 | 转换服务 | `*Job`、Controller | 定时与手动刷新可用 | refresh API 返回批次 | 否 |
+| 6 | 聚合接口 | DWD/KPI | Controller/Service | 看板所需字段一次返回 | API 调用检查 | 否 |
+| 7 | 前端动态化 | 聚合接口 | API TS、Vue 页面 | 图表、KPI、日志、刷新、导出动态化 | 页面检查、build | 否 |
+| 8 | 验收文档 | 实际结果 | `doc/plan/...` | 记录 SQL、批次、风险 | 文档可复核 | 否 |
+| 9 | 提交闭环 | 所有改动 | 版本文件、Git | 版本号符合规则,推送完成 | `git status` 干净 | 是 |
+
+## 4. 标准扩展步骤
+
+### 4.1 现状审计
+
+先不要写代码。让 Cursor 只读审计:
+
+- 当前模块页面是否存在静态 KPI、假趋势、假异常日志、不可用按钮。
+- 后端是否已有 `module-detail`、详情接口、监控接口或 KPI 查询。
+- 数据库是否已有 `mdp_stg_*`、`mdp_std_*`、`dwd_*`、`ado_s9_kpi_value_*`。
+- 是否有旧 `api/business`、存储过程、外部系统事务、定时任务。
+- 是否会影响其他模块,例如 S8 预警、S6 执行、公共看板组件、统一查询栏。
+
+输出格式建议:
+
+```text
+模块:<Sx>
+已存在能力:
+- 前端:
+- 后端:
+- 数据库:
+- 作业:
+
+缺口:
+- 数据中台:
+- KPI:
+- 看板:
+- 刷新/监控:
+- 文档/验收:
+
+跨模块影响:
+- <影响模块>:<影响内容>
+
+建议任务顺序:
+1. ...
+```
+
+### 4.2 方案确认
+
+涉及以下任一项时,Cursor 必须先列清单并等确认:
+
+- 新增或修改数据库结构、`UpdateScripts`。
+- 修改公共 Controller、公共 API 类型、公共看板组件。
+- 修改菜单种子、权限、调度器、任务流。
+- 调用或替代旧系统写入动作。
+- 会影响 S1-S3 已有看板口径。
+
+确认清单至少包含:
+
+- 目标。
+- 将改动的文件。
+- 可见行为变化。
+- 跨模块影响。
+- 风险/回滚点。
+- 本轮明确不做的事。
+
+### 4.3 DDL 与数据分层
+
+优先复用已存在的 `doc/db/mdp/` 和 `UpdateScripts`。如果目标模块缺少表,应按以下顺序补:
+
+1. `mdp_stg_*`:贴源表或通用贴源结构。
+2. `mdp_std_*`:清洗后的业务标准表。
+3. `dwd_*`:看板主题宽表。
+4. `ado_smart_ops_kpi_master`:指标主数据。
+5. `ado_s9_kpi_value_*`:指标结果表,通常已存在,不要重复造表。
+6. `mdp_entity`:源实体登记,保证同步任务可观测。
+
+DDL 应满足:
+
+- `CREATE TABLE IF NOT EXISTS`。
+- 必要唯一键支持 `ON DUPLICATE KEY UPDATE`。
+- 常用查询字段有索引,如 `tenant_id`、`factory_id`、`stat_date`、`module_code`、`metric_code`。
+- 脏数据风险字段允许合理兜底,避免批次因历史空值中断。
+
+### 4.4 后端转换服务
+
+参考 S1-S3,转换服务建议包含:
+
+- `RunFullAsync`:统一入口。
+- `SyncStagingAsync`:贴源。
+- `BuildStandardCommands`:标准层 SQL。
+- `BuildDwdCommands`:DWD 宽表 SQL。
+- `BuildKpiValuesAsync`:KPI 计算写入。
+- `mdp_transform_run_log`:记录批次状态、行数、错误。
+- `mdp_sync_log`:记录单实体同步状态。
+
+关键要求:
+
+- 每个批次必须有 `batchId`。
+- 每层写入行数要汇总。
+- `catch` 中必须标记失败日志。
+- 空字符串、`NULL`、非法数字、非法日期要在标准层兜底。
+- KPI 目标值、状态色、趋势要尽量复用 `ado_smart_ops_kpi_master`。
+
+### 4.5 作业与刷新接口
+
+每个模块建议同时具备:
+
+- 定时作业:`SxMdpSyncTransformJob`。
+- 手动刷新:`POST /api/AidopKanban/sx-mdp/refresh`。
+- 最近状态:`mdp_transform_run_log` 最新一条。
+- 监控页或统一 MDP 监控入口。
+
+刷新接口返回建议:
+
+```json
+{
+  "ok": true,
+  "batchId": "Sx_MDP_FULL_yyyyMMddHHmmss",
+  "stageRows": 0,
+  "standardRows": 0,
+  "dwdRows": 0,
+  "kpiRows": 0
+}
+```
+
+### 4.6 KPI 报表与聚合 API
+
+看板不要直接拼多个表。后端应提供聚合 API:
+
+- L1/L2/L3 KPI。
+- 同步状态。
+- 趋势数据。
+- 分布数据。
+- 异常日志。
+- 明细表格或可导出数据。
+- 模块特有的分解卡片、分支 KPI、健康度等。
+
+聚合数据优先来源:
+
+1. `ado_s9_kpi_value_*`。
+2. `dwd_*`。
+3. `mdp_std_*`。
+4. 只有在过渡期才读旧业务运行表。
+
+### 4.7 前端看板动态化
+
+前端扩展至少包含:
+
+- API 类型:在 `kanbanData.ts` 或模块 API 文件中补接口类型。
+- 页面状态:`syncStatus`、`isRefreshing`、`lastSyncTime`。
+- KPI:顶部 KPI、分支 KPI、明细 KPI 使用接口数据。
+- 图表:趋势、分布、健康度图表使用接口数据。
+- 异常日志:来自后端聚合,不再硬编码。
+- 操作:刷新、导出、策略模拟或只读提示。
+- 兜底:接口未部署或无数据时保持页面可用。
+
+前端验收:
+
+- `pnpm build` 通过。
+- 页面无新增 linter 错误。
+- 刷新按钮能触发后端。
+- 图表在空数据和有数据时都不报错。
+- 导出内容与当前页面数据一致。
+
+### 4.8 文档与验收
+
+每个模块完成后应新增验收文档,建议位置:
+
+```text
+doc/plan/数据库迁移/Sx/Sx数据中台与看板动态化验收.md
+```
+
+文档应包括:
+
+- 目标范围。
+- 后端接口。
+- 数据来源。
+- 前端验收点。
+- 验收 SQL。
+- 实际验收记录。
+- 边界说明和遗留风险。
+
+## 5. 模块类型适配建议
+
+| 模块 | 常见重点 | 扩展注意点 |
+|------|----------|------------|
+| S4 采购执行 | PR/PO/收货/在途/供应商执行 | 谨慎处理采购单写入、审批、外部事务;看板优先只读 DWD |
+| S5 质量协同 | 检验、让步、缺陷、返工 | 注意质检状态枚举、批次追溯、S8 异常联动 |
+| S6 生产执行 | 工单、工序、报工、产线 | 可能影响 S2 排程和 S8 预警,需先列跨模块影响 |
+| S7 仓储物流 | 库存、出入库、配送、周转 | 数量口径和库存快照要稳定,避免直接读实时散表 |
+| S8 异常监控 | 告警、流程、任务、通知 | 既是独立模块也是其他模块的异常消费端,公共能力改动需确认 |
+
+## 6. 版本号与提交规则
+
+执行提交时按实际纳入文件判断:
+
+- 改 `Web/` 前端代码或配置:递增 `Web/package.json` patch。
+- 改 `server/` 后端代码或配置:递增 `server/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj` 三处版本 patch。
+- 同时改前后端:两个版本都递增。
+- 只改文档:不递增前后端版本号。
+- 提交后如用户要求“提交修改”,默认还要推送到跟踪远端。
+
+## 7. 验收 SQL 模板
+
+```sql
+-- 1. 最近转换日志
+SELECT job_code, status, stage_rows, standard_rows, dwd_rows, start_time, end_time, error_message
+FROM mdp_transform_run_log
+WHERE job_code = '<Sx_MDP_SYNC_TRANSFORM>'
+ORDER BY start_time DESC, id DESC
+LIMIT 5;
+
+-- 2. KPI 写入情况
+SELECT module_code, metric_code, COUNT(*) AS rows_count, MAX(biz_date) AS latest_biz_date
+FROM ado_s9_kpi_value_l1_day
+WHERE module_code = '<Sx>' AND is_deleted = 0
+GROUP BY module_code, metric_code
+ORDER BY metric_code;
+
+-- 3. DWD 最新日期
+SELECT MAX(stat_date) AS latest_stat_date, COUNT(*) AS rows_count
+FROM <dwd_table>;
+
+-- 4. 异常/风险分布
+SELECT stat_date, risk_level, COUNT(*) AS risk_count
+FROM <dwd_or_alert_table>
+GROUP BY stat_date, risk_level
+ORDER BY stat_date DESC;
+```
+
+## 8. Cursor 执行 Prompt 模板
+
+### 8.1 只生成任务,不改文件
+
+```text
+请只读分析本仓库,基于《doc/plan/数据中台模块扩展指南-S1至S3经验版.md》为 <目标模块> 生成完整扩展任务列表。
+
+要求:
+- 不改文件。
+- 任务必须小步闭环。
+- 每个任务写明目标、输入、拟改文件、完成标准、验收方式、是否需确认。
+- 单独列出跨模块影响。
+- 参考 S1/S2/S3 已完成范式。
+```
+
+### 8.2 确认后执行
+
+```text
+请按刚才确认的任务列表执行 <目标模块> 扩展。
+
+要求:
+- 按任务顺序推进。
+- 每完成一个任务更新 TODO。
+- 改代码前先列拟改文件和影响面。
+- 涉及跨模块影响、数据库结构、公共 API、外部系统副作用时先停下等确认。
+- 完成后执行后端构建、前端构建、数据库验收 SQL。
+- 如包含前端或后端代码提交,按规则递增版本号。
+- 最后补验收文档。
+```
+
+### 8.3 只补看板动态化
+
+```text
+请参照 S1/S2/S3 的智慧运营看板动态化经验,只补 <目标模块> 看板动态化。
+
+范围:
+- 后端聚合接口。
+- 前端 API 类型。
+- 顶部 KPI、趋势图、分布图、异常日志、刷新、导出、兜底。
+- 验收文档。
+
+不做:
+- 不新增业务写入动作。
+- 不接外部系统。
+- 不改其他模块公共口径,除非先列影响并等确认。
+```
+
+## 9. 自检清单
+
+- [ ] 是否先完成只读审计并列出差距。
+- [ ] 是否明确本轮边界和不做事项。
+- [ ] 是否列出跨模块影响并获得确认。
+- [ ] 是否有 `mdp_stg_*`、`mdp_std_*`、`dwd_*`、KPI 层设计。
+- [ ] 是否登记 `mdp_entity` 或明确数据来源。
+- [ ] 是否有 `mdp_transform_run_log` 和 `mdp_sync_log`。
+- [ ] 是否实现手动 refresh API。
+- [ ] KPI 是否写入 `ado_s9_kpi_value_*`,而非新造孤立指标表。
+- [ ] 看板是否优先读 DWD/KPI 聚合接口。
+- [ ] 前端是否去除硬编码 KPI、假趋势、假日志。
+- [ ] 是否有无数据兜底。
+- [ ] 是否有导出、刷新或明确的只读提示。
+- [ ] 是否补验收 SQL 和实际验收记录。
+- [ ] 构建是否通过。
+- [ ] 版本号是否按实际提交范围递增。
+
+## 10. 参考文件
+
+- `server/Plugins/Admin.NET.Plugin.AiDOP/Order/S1MdpSyncTransformService.cs`
+- `server/Plugins/Admin.NET.Plugin.AiDOP/Production/S2MdpSyncTransformService.cs`
+- `server/Plugins/Admin.NET.Plugin.AiDOP/Supply/S3MdpSyncTransformService.cs`
+- `server/Plugins/Admin.NET.Plugin.AiDOP/Controllers/AidopKanbanController.cs`
+- `Web/src/views/aidop/api/kanbanData.ts`
+- `Web/src/views/aidop/kanban/s2.vue`
+- `Web/src/views/aidop/kanban/s3.vue`
+- `doc/plan/数据库迁移/S2/S2数据中台与KPI扩展验收.md`
+- `doc/plan/数据库迁移/S3/S3数据中台与看板动态化验收.md`