# 04-产品管理 编码前必看清单 ## 0. 文档目的 本文档用于在开始产品管理相关编码前,明确必须先阅读的文档、必须锁死的业务口径,以及当前文档与可执行 SQL 的同步状态。 本文档只保留当前编码前必须关注的内容,不保留历史演变说明。 ## 1. 文档分级 ### 1.1 一级依据 以下文档为产品管理编码主依据,涉及业务口径、接口口径、状态口径时,必须优先对齐: - `docs/temp/02-产品管理_业务设计.md` - `docs/temp/02-产品管理_SQL已确认口径.md` ### 1.2 二级依据 以下文档用于补齐 SQL 结构说明: - `docs/temp/02-产品管理_SQL口径说明.md` ### 1.3 SQL 阅读基线 以下文件是当前产品管理编码前唯一需要阅读的 SQL 文件,用于确认当前表结构、状态模型、状态流转和审计表设计: - `rdms-project/rdms-project-boot/product/rdms_biz_audit_log.sql` 说明: - 当前 SQL 阅读入口统一以该文件为准。 - 该文件当前包含 `rdms_biz_audit_log`、`rdms_object_status_model`、`rdms_object_status_transition`、`rdms_product`、`rdms_product_requirement`、`rdms_product_status_log`、`rdms_user_object_role`。 - 编码前必须先识别该文件与已确认口径之间的差异,不能直接把该文件当作最终目标结构。 ### 1.4 场景性依据 以下文档只在涉及工单来源、链路视图、Flowable 边界时必读: - `docs/temp/03-工单到任务全链路与工作流方案.md` ## 2. 阅读顺序 开始编码前,按以下顺序阅读: 1. `02-产品管理_业务设计.md` 2. `02-产品管理_SQL已确认口径.md` 3. `02-产品管理_SQL口径说明.md` 4. `rdms-project/rdms-project-boot/product/rdms_biz_audit_log.sql` 5. `03-工单到任务全链路与工作流方案.md`(仅在涉及工单链路、需求拆分、Flowable、全链路视图时阅读) ## 3. 每份文档必须看的内容 ### 3.1 `02-产品管理_业务设计.md` 必须重点看以下内容: - 模块范围与非本期范围 - 页面与对象上下文承载方式 - 产品需求规则 - 对象关系与数据设计 - 产品状态与产品需求状态机 - 接口承接 - 权限与动作矩阵 - 测试关注点 阅读目标: - 明确本次到底做哪些页面、动作、字段和权限。 - 明确哪些能力本次不做,避免编码时扩散。 - 明确关闭、认领、拒绝、分流等动作的业务边界。 ### 3.2 `02-产品管理_SQL已确认口径.md` 必须逐条看完以下 4 项: - 共享表承接边界 - 产品需求状态字段口径 - 来源承接与需求拆分口径 - 需求终态原因承接口径 阅读目标: - 锁死产品需求 `status_code` 口径。 - 锁死来源追溯和需求拆分分开建模。 - 锁死终态结果字段由主表承接。 ### 3.3 `02-产品管理_SQL口径说明.md` 必须重点看以下内容: - 共享表与主数据口径 - 产品需求口径 - 状态与留痕口径 阅读目标: - 明确当前确认后的 SQL 结构表达方式。 - 明确状态编码、来源追溯、拆分链路、终态结果字段应该如何落到表结构上。 ### 3.4 `rdms-project/rdms-project-boot/product/rdms_biz_audit_log.sql` 必须重点看以下内容: - `rdms_biz_audit_log` - `rdms_object_status_model` - `rdms_object_status_transition` - `rdms_product` - `rdms_product_requirement` - `rdms_product_status_log` - `rdms_user_object_role` 阅读目标: - 明确当前统一 SQL 阅读入口下的表结构、索引、状态种子数据和审计字段现状。 - 明确哪些字段和状态定义仍未对齐已确认口径。 ### 3.5 `03-工单到任务全链路与工作流方案.md` 仅在以下场景必须看: - 涉及工单流转到产品需求 - 涉及来源追溯与需求拆分 - 涉及产品需求到项目需求的链路设计 - 涉及 Flowable 接入边界 - 涉及全链路视图 阅读目标: - 明确 Flowable 只承接协同节点,不直接承接整条业务主链状态。 - 明确来源关系、拆分关系、事件关系和流程绑定关系要分开建模。 ## 4. 编码前必须锁死的业务口径 ### 4.1 模块边界 - 产品管理能力落在 `rdms-project`,不落到 `rdms-system`、`rdms-gateway`。 - 跨模块共享能力通过 `*-api` 承接,不直接依赖其他 `*-boot` 实现。 ### 4.2 产品需求状态口径 - `rdms_product_requirement` 主表统一使用 `status_code`。 - 产品需求状态定义与流转统一通过 `rdms_object_status_model`、`rdms_object_status_transition` 承接。 - `object_type` 统一使用 `product_requirement`。 ### 4.3 来源追溯与需求拆分口径 - 产品需求来源至少包括 `manual`、`work_order`。 - `source_type`、`source_biz_type`、`source_biz_id`、`source_biz_code` 只承接来源追溯。 - `parent_requirement_id`、`root_requirement_id` 只承接拆分链路。 - 同一产品下,同一来源工单只允许 1 条源头需求记录。 - 源头需求和手工新增需求都允许继续拆分子需求。 - 子需求不参与来源唯一约束。 ### 4.4 终态结果口径 - `reject`、`cancel`、`close` 等终态动作统一回写主表。 - 主表统一保留以下字段: - `terminal_action_code` - `terminal_reason` - `terminal_time` - 审计日志继续保留完整过程留痕。 ### 4.5 接口动作口径 - 产品状态动作统一走 `POST /products/{id}/change-status`。 - 产品需求状态动作统一走 `POST /products/{id}/requirements/{requirementId}/change-status`。 - 产品需求 `change-status` 统一支持 `claim`、`to_review`、`to_dispatch`、`dispatch`、`reject`、`cancel`、`close`。 - 状态动作不得混入通用编辑接口。 ### 4.6 权限与审计口径 - 对象上下文权限按产品对象角色控制。 - 产品团队、产品需求、状态动作、敏感操作都必须落审计。 - 产品状态日志由 `rdms_product_status_log` 承接。 - 产品经理变更、成员调整、需求认领、拒绝、分流、关闭、拆分等由 `rdms_biz_audit_log` 承接。 ## 5. 当前明确不做的内容 以下内容当前不纳入本轮编码: - 产品版本 - 产品路线图 - 正式评审流 - Flowable 引擎接入实现 - 产品基线 - 产品文档与附件 - 工单状态回写 - 目标版本字段 - 完整链路视图页面 ## 6. 当前现状与目标口径差异 `rdms_biz_audit_log.sql` 当前仍存在以下差异: - `rdms_product_requirement` 仍使用 `status`,尚未切到 `status_code` - 主表仍保留 `closed_reason`、`closed_time` - 主表尚未补齐 `terminal_action_code`、`terminal_reason`、`terminal_time` - 主表尚未补齐 `parent_requirement_id`、`root_requirement_id` - 产品需求状态模型和状态流转种子尚未按 `product_requirement` 完整落齐 这意味着: - 不能直接以当前 `rdms_biz_audit_log.sql` 作为产品需求最终结构开始编码。 - 如果进入正式开发,优先动作之一是先同步当前统一 SQL 文件,再同步 DO、Mapper、Service、Controller、接口 VO。 ## 7. 编码前建议执行顺序 1. 先对齐 `02-产品管理_业务设计.md` 和 `02-产品管理_SQL已确认口径.md` 2. 再对齐 `rdms_biz_audit_log.sql` 与已确认 SQL 口径 3. 再开始补 DO、Mapper、Service、Controller、ReqVO、RespVO 4. 最后对齐权限、审计、状态流转和接口返回字段 ## 8. 编码时禁止自由发挥的点 - 不要把产品需求状态继续做成 `tinyint` 枚举字段。 - 不要把来源追溯和需求拆分混在同一组字段里。 - 不要把 `close` 再拆回独立接口。 - 不要把状态动作塞进通用编辑接口。 - 不要在本轮直接引入 Flowable 落地代码。 - 不要在产品模块里扩展未确认的版本、路线图、附件等能力。