# 会议核销SaaS 未开发项开发迭代清单 V2（2026-03）

## 一、V2目标与范围

- 目标：基于 `会议核销SaaS系统_技术开发文档.md` 新增 `6.10/7.7/7.8`，完成“字段级口径 + 接口闭环 + 权限矩阵”落地。
- 范围：仅覆盖当前确认缺口，不回滚已完成能力。
- 原则：先补齐 P0 闭环，再推进 P1 增强；所有新增能力必须带审计、权限、测试。

## 二、当前迭代状态（V2启动）

| 迭代项 | 优先级 | 状态 | 说明 |
|---|---|---|---|
| V2-P0-1 字段级数据字典落库（6.10） | P0 | 已完成（待预发验证） | 已新增 `V38__v2a_field_dictionary.sql`，包含加列/新表/索引。 |
| V2-P0-2 接口缺口补齐（7.7） | P0 | 已完成（后端待QA，前端待联调） | 角色、数据权限、审计日志、资料包、会议总结、通知策略补齐。 |
| V2-P0-3 权限矩阵落地（7.8） | P0 | 进行中 | 接口三元绑定（`permissionCode/dataScopeType/auditActionCode`）统一治理。 |
| V2-P1-1 发票结构化明细全链路 | P1 | 未开始 | 明细项、附件、汇总、校验规则与财务联动。 |
| V2-P1-2 审核SLA与批量能力增强 | P1 | 未开始 | 催办、批量催办、超时升级、审计回溯增强。 |

## 三、迭代批次规划（建议 3 个 Sprint）

- Sprint V2-A（本期，1.5~2周）
  - V2-P0-1、V2-P0-2、V2-P0-3 全部完成可提测版本。
- Sprint V2-B（下期，2周）
  - V2-P1-1 发票结构化明细 + 财务分类费用打通。
- Sprint V2-C（下下期，1~1.5周）
  - V2-P1-2 审核SLA批量能力增强 + 回归收口。

## 四、第一轮迭代（已启动）

### 4.1 V2-P0-1 字段级数据字典落库（6.10）

- 范围
  - `project`、`meeting`、`meeting_material`、`audit_task`、`audit_action_log`、`expert`、`expert_bank_card`、`template/template_version`、`finance_meeting_bill` 字段补齐。
  - 新增建议表：`meeting_material_invoice_item`、`meeting_material_invoice_file`、`meeting_invoice_summary`。
- 后端任务
  - 完成实体/DO/DTO 字段扩展与向后兼容映射。
  - 对关键写接口补充字段校验（金额单位“分”、比例范围、状态枚举合法性）。
  - 当前进展：已完成 `meeting_material` 发票结构化链路、`audit_task` 新字段读写链路（SLA/超时/转审扩展）、`meeting/project` 新字段基础映射、`finance_meeting_bill` 读写接口、`expert/template` 新字段映射。
- DB/Flyway任务
  - 已完成：`backend/src/main/resources/db/migration/V38__v2a_field_dictionary.sql`（幂等加列 + 新表 + 索引）。
  - 待完成：预发执行验证、回填策略脚本（如需）与回滚演练记录。
- 验收标准
  - 新增字段不破坏现有接口。
  - 发票明细可结构化保存并查询。
  - 审核、财务、专家关键字段可检索可追溯。

### 4.2 V2-P0-2 接口缺口补齐（7.7）

- 范围
  - 角色管理、数据权限管理、审计日志查询导出、会议资料包导出、会议总结生成下载、通知策略配置侧。
- 目标接口组（本期必须交付）
  - 角色：`GET/POST/PUT /api/roles`、`POST /api/roles/{id}/enable|disable`、`POST /api/roles/{id}/permissions`
  - 数据权限：`GET/POST/PUT /api/data-scope-policies`、`POST /api/data-scope-policies/{id}/copy|assign-roles|enable|disable`
  - 审计日志：`GET /api/audit-logs`、`GET/POST /api/audit-logs/export-tasks`
  - 会议资料：`POST /api/meetings/{id}/materials/{module}/submit|resubmit`、`POST /api/meetings/{id}/materials/export`
  - 会议总结：`POST /api/meetings/{id}/summary/generate`、`GET /api/meetings/{id}/summary/download`
  - 通知策略配置：`GET/POST/PUT /api/notification-policies`、`POST /api/notification-policies/{id}/events|enable|disable`
- 验收标准
  - 接口文档、权限码、错误码、审计动作码齐全。
  - 前端按钮权限与后端接口权限一致。
  - 导出/下载能力遵循数据权限范围。
- 当前进展
  - 已补齐通知策略配置侧接口：`POST /api/notification-policies/{id}/events|enable|disable`。
  - 已补齐会议字段配置启停接口：`POST /api/meeting-fields/{id}/enable|disable`。
  - 已补齐发票抬头配置启停接口与别名路由：`POST /api/invoice-profiles/{id}/enable|disable`、`/api/invoice-heads`。
  - 前端系统设置页已接入上述能力：数据权限（复制/启停）、通知策略（绑定事件/启停）、会议字段（启停）、发票抬头（启停）。
  - 审计日志页已接入导出任务能力：`GET/POST /api/audit-logs/export-tasks`。
  - 会议页已接入资料包导出与会议总结入口：资料包导出、总结生成、总结令牌刷新、总结下载。

### 4.3 V2-P0-3 权限矩阵落地（7.8）

- 范围
  - 全量接口补三元绑定：`permissionCode`、`dataScopeType`、`auditActionCode`。
  - 接口发布前增加权限元数据检查门禁。
- 后端任务
  - 新增权限元数据校验组件（启动校验 + 单测校验）。
  - 统一数据范围枚举：`TENANT/PROJECT/MEETING/MEETING_MODULE/GLOBAL_READONLY`。
- 当前进展
  - 已完成注解扩展：`@RequirePermission` 支持 `dataScopeType/auditActionCode` 元数据。
  - 已新增启动校验门禁组件：`PermissionMetadataGuard`（支持 `writeoff.permission-metadata.strict` 严格模式）。
  - 已在核心接口组补齐三元标注：通知策略、会议字段、发票抬头、数据权限、审计日志、会议资料包/会议总结接口。
  - 已批量补齐存量控制器三元标注：角色/菜单/用户/租户/企业、模板、专家、审核流/审核任务、财务、导出任务、通知分发、可观测、文件下载等。
- 前端任务
  - 按钮权限码与接口权限码同源配置。
  - 无权限状态统一“置灰+原因提示”。
- 当前进展
  - 已新增前端权限常量单源：`frontend/src/constants/permissions.ts`。
  - 已完成页面侧 `hasPermission("...")` 到 `hasPermission(PERMS.xxx)` 的统一替换（系统设置、审核、财务、模板、专家、导出、通知、可观测等模块）。
  - 已补齐主要操作按钮的“无权限置灰 + 原因提示（title）”展示规范。
- 验收标准
  - 缺权限元数据的接口不可发布。
  - 越权请求稳定返回统一错误码（`20001/20002`）。

## 五、任务卡（可直接建单）

| 任务ID | 模块 | 任务 | 负责人 | 预计人天 | 状态 | 依赖 |
|---|---|---|---|---:|---|---|
| V2A-DB-01 | 字段落库 | 6.10 加列与新表迁移脚本 | 后端 | 2 | 已完成（待预发验证） | - |
| V2A-BE-01 | 字段落库 | 实体/接口字段扩展与校验 | 后端 | 3 | 已完成（待QA） | V2A-DB-01 |
| V2A-QA-01 | 字段落库 | 兼容性回归（存量接口） | 测试 | 1.5 | 未开始 | V2A-BE-01 |
| V2A-BE-02 | 接口补齐 | 角色+数据权限+审计日志接口组 | 后端 | 3 | 已完成（待QA） | - |
| V2A-FE-01 | 接口补齐 | 系统设置页面能力补齐 | 前端 | 3 | 已完成（待QA） | V2A-BE-02 |
| V2A-BE-03 | 接口补齐 | 会议资料包/会议总结接口组 | 后端 | 2 | 已完成（待QA） | - |
| V2A-FE-02 | 接口补齐 | 资料包导出与会议总结入口 | 前端 | 2 | 已完成（待QA） | V2A-BE-03 |
| V2A-BE-04 | 权限矩阵 | 三元绑定校验门禁 | 后端 | 1.5 | 已完成（待QA） | - |
| V2A-FE-03 | 权限矩阵 | 按钮权限同源配置改造 | 前端 | 1.5 | 已完成（待QA） | V2A-BE-04 |
| V2A-QA-02 | 全链路 | 权限+审计+导出下载回归 | 测试 | 2 | 未开始 | V2A-FE-01;V2A-FE-02;V2A-FE-03 |

## 六、风险与阻塞位

- 风险1：历史数据缺失（如旧会议无结构化发票明细）导致回填不完整。
  - 处理：回填脚本允许空值，前端按“旧数据兼容展示”策略处理。
- 风险2：权限码重构影响存量按钮显隐。
  - 处理：灰度发布，先日志观测再全量切换。
- 风险3：导出/下载接口并发高峰导致任务堆积。
  - 处理：复用导出任务中心，增加限流与重试监控。

## 七、统一DoD（V2）

- 文档：OpenAPI 与技术文档同步更新，接口示例可直接联调。
- 数据：Flyway 迁移可重复执行，预发演练通过。
- 安全：权限、数据范围、审计动作三链路全部生效。
- 质量：单测覆盖新增校验与状态流转；至少 1 条端到端回归通过。
- 发布：灰度策略、回滚策略、监控告警规则完成配置。

## 八、下一步（默认执行顺序）

- 第1步：先完成 `V2A-DB-01` + `V2A-BE-01`，锁定字段口径。
- 第2步：并行推进 `V2A-BE-02`、`V2A-BE-03`、`V2A-BE-04`。
- 第3步：前端接入 `V2A-FE-01/02/03`，随后执行 `V2A-QA-01/02`。
- 第4步：输出 Sprint V2-A 版本说明与上线检查单。
