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

## 一、现状结论

- 已完成：项目/会议/审核/财务主链路、审核流配置化、用户角色增强、数据权限、模板管理（上传/发布/停用/回滚/下载留痕/类型配置）、会议资料六大模块（`BASIC_INFO`、`WRITE_OFF_DOCS`、`ONSITE_PHOTO`、`LABOR_PROTOCOL`、`INVOICE_DETAIL`、`EXPERT_PROFILE`）、通知策略中心、可观测性告警中心（含抑制与恢复）。
- 主要缺口：通知外部通道真实SDK接入（厂商鉴权/模板审核/限流策略）与经营分析报表（多维钻取）。
- 本清单同步维护“状态看板 + 迭代任务”，用于区分已完成、进行中与未开始项。

### 1.1 状态看板（2026-03-10）

| 模块/任务 | 当前状态 | 说明 |
|---|---|---|
| T1 租户管理（C1） | 已完成（待QA执行） | 后端接口、前端页面、启停与权限控制已接通；仍需按测试单执行并回填结果。 |
| T2 企业管理（C2） | 已完成（待QA执行） | 企业主数据与项目引用联动已落地；仍需回填回归结果。 |
| T3 菜单管理（C3） | 已完成（待QA执行） | 菜单维护、角色绑定、排序与动态加载已落地；仍需补最终回归记录。 |
| T4 代理授权（C4） | 已完成（待手工QA执行） | 生命周期、鉴权继承、自动化单测与回归模板已完成；手工用例执行结果待回填。 |
| T5 账号有效期（C5） | 功能已完成（QA未闭环） | 字段迁移、登录/会话拦截、前端展示已实现；缺少任务卡级进展与QA执行记录。 |
| P2-5 通知真实SDK接入 | 未开始 | 真实供应商鉴权、模板审核、失败原因标准化仍为主要缺口。 |
| 经营分析报表（多维钻取） | 未开始 | 当前仅有运营看板汇总，未形成报表钻取能力。 |

## 二、P0（必须补齐）

### P0-1 多租户真实化改造（替换硬编码 tenant_id=1）

- 范围
  - 租户上下文从登录态注入，业务查询/写入全部走动态 `tenant_id`。
  - 新增租户管理（平台管理员）：创建、启停、查询。
- 后端 API
  - `GET /api/tenants`
  - `POST /api/tenants`
  - `POST /api/tenants/{id}/enable`
  - `POST /api/tenants/{id}/disable`
- DDL
  - `tenant`（若未创建）
  - 业务高频表补充复合索引（`tenant_id + 业务键`）
- 验收
  - 同一账号跨租户不可见数据。
  - 导出/下载/搜索均走租户隔离。
- 人天
  - 后端 8d + 前端 2d + 测试 3d = **13d**

### P0-2 审计日志中心（关键动作可检索/导出）

- 范围
  - 登录、权限变更、审核动作、支付确认、导出下载等关键操作留痕。
  - 支持条件检索与导出。
- 后端 API
  - `GET /api/audit-logs`
  - `GET /api/audit-logs/export`
- 前端
  - 新增“审计日志”页面（筛选、列表、导出）。
- DDL
  - `operation_audit_log`（落表 + 索引优化）
- 验收
  - 高风险动作 100% 可追溯到人/时间/对象。
- 人天
  - 后端 4d + 前端 2d + 测试 2d = **8d**

## 三、P1（高优先级业务补齐）

### P1-1 会议资料四大模块补齐

- 范围
  - 新增模块：`ONSITE_PHOTO`、`LABOR_PROTOCOL`、`INVOICE_DETAIL`、`EXPERT_PROFILE`。
  - 当前进度：四个新增模块已全部完成（`ONSITE_PHOTO`、`LABOR_PROTOCOL`、`INVOICE_DETAIL`、`EXPERT_PROFILE`）。
  - 模块级保存/提交/历史/审核查看对齐现有两模块能力。
- 后端 API
  - 复用现有 `/materials/{moduleCode}/save|submit|history|current`
  - 扩展模块校验规则与字段结构
- 前端
  - 会议资料页补齐四个模块录入与历史对比
  - 审核端“查看资料”补齐结构化展示
- DDL
  - 复用 `meeting_material` / `meeting_material_history`
- 验收
  - 六大资料模块都支持提交前必填校验与历史可追溯。
- 人天
  - 后端 5d + 前端 6d + 测试 3d = **14d**

### P1-2 审核管理增强（转审 + SLA + 批量）

- 范围
  - 转审、批量催办、SLA 超时升级。
  - 当前进度：已完成后端 API、DDL 与前端审核页能力（转审弹窗、批量催办、SLA 统计与超时标识）。
- 后端 API
  - `POST /api/audits/tasks/{id}/transfer`
  - `POST /api/audits/tasks/batch-remind`
  - `GET /api/audits/tasks/sla-stat`
- 前端
  - 审核页增加转审弹窗、批量催办、SLA 标识
- DDL
  - `audit_task` 补 `sla_deadline_at`、`timeout_level`
  - `audit_transfer_log`
- 验收
  - 超时 4h/12h/24h 升级可见，转审链路有日志。
- 人天
  - 后端 4d + 前端 3d + 测试 2d = **9d**

### P1-3 财务对账与锁账

- 范围
  - 对账工单、锁账/解锁、差异追踪。
  - 当前进度：已完成后端 API、DDL、支付确认拦截（锁账）与前端财务页对账/锁账记录展示。
- 后端 API
  - `POST /api/finance/reconciliation`
  - `POST /api/finance/lock`
  - `POST /api/finance/unlock`
  - `GET /api/finance/reconciliation/list`
- 前端
  - 财务页补“对账结果”“锁账状态”“解锁记录”
- DDL
  - `finance_reconciliation`
  - `finance_lock_log`
- 验收
  - 锁账期间禁止关键财务字段写入。
- 人天
  - 后端 5d + 前端 3d + 测试 2d = **10d**

### P1-4 模板管理剩余闭环

- 范围
  - 归档状态、版本差异追踪、水印下载、流程模板联动（通知模板/结算模板）。
  - 当前进度：已完成归档、版本差异追踪、水印下载、流程模板联动（会议推荐/审核通知/结算模板绑定）。
- 后端 API
  - `POST /api/templates/{id}/archive`
  - `GET /api/templates/{id}/versions/diff`
  - `GET /api/templates/{id}/download-watermark`
- 前端
  - 模板页补“归档”“版本差异查看”
- 验收
  - 已归档模板不可再发布，差异可视化可用。
- 人天
  - 后端 3d + 前端 2d + 测试 1d = **6d**

## 四、P2（治理与效率）

### P2-1 专家（参会人）管理全量能力

- 范围
  - 主档案、多卡、去重合并、导入导出、会议快照。
  - 当前进度：已完成主档案、多卡、去重合并、导入导出与专家管理页面；会议提交已接入专家快照写入链路。
- 后端 API
  - `GET/POST /api/experts`
  - `POST /api/experts/{id}/merge`
  - `POST /api/experts/import`
  - `GET /api/experts/export`
- 前端
  - 专家管理页面 + 合并记录 + 银行卡管理
- DDL
  - `expert`、`expert_bank_card`、`expert_merge_log`、`meeting_expert_snapshot`
- 验收
  - 身份证唯一校验，历史会议读快照。
- 人天
  - 后端 8d + 前端 6d + 测试 4d = **18d**

### P2-2 通知策略中心

- 范围
  - 事件->渠道->对象可配置，模板变量统一管理。
  - 当前进度：已完成策略中心 DDL、后端 `GET/POST/PUT /api/notification-policies` 与前端通知策略页面。
- 后端 API
  - `GET/POST/PUT /api/notification-policies`
- 前端
  - 通知策略页面
- DDL
  - `notification_policy`、`notification_policy_event`
- 验收
  - 策略即时生效，可追溯变更。
- 人天
  - 后端 4d + 前端 2d + 测试 2d = **8d**

### P2-3 可观测性与告警

- 范围
  - 指标、日志、告警阈值、任务失败告警闭环。
  - 当前进度：已完成指标埋点（API、异步任务、导出）与告警规则中心（规则配置、手动评估、事件查询、抑制窗口、自动恢复）。
- 交付
  - 指标埋点（API、异步任务、导出）
  - 告警规则（5xx、任务积压、超时率）
- 验收
  - 告警可触发、可恢复、可追踪。
- 人天
  - 后端 3d + 运维 2d + 测试 1d = **6d**

### P2-4 补缺闭环（文档对照新增）

- 范围
  - 已完成：会议撤回提交（状态机与审计联动）
  - 已完成：会议字段管理（字典配置）
  - 已完成：发票管理（抬头主数据）
  - 已完成：通知执行引擎（任务化发送、重试、回执）
  - 已完成：导出任务中心（任务状态、下载安全）
  - 已完成：可观测性自动评估与连续恢复判定
- 后端 API（建议）
  - `POST /api/meetings/{id}/withdraw`
  - `GET/POST/PUT /api/meeting-fields`
  - `GET/POST/PUT /api/invoice-profiles`
  - `POST /api/notifications/dispatch`
  - `POST /api/notifications/receipts`
  - `GET /api/notifications/tasks`
  - `GET/POST /api/export-tasks`
  - `POST /api/export-tasks/{id}/refresh-token`
  - `GET /api/export-tasks/{id}/download`
  - `POST /api/observability/alert-rules/evaluate/auto`
  - `GET /api/operations/dashboard`
- 验收
  - 文档与实现接口 1:1 对齐，新增模块可独立上线并通过回归。
- 人天
  - 后端 8d + 前端 6d + 测试 4d = **18d**

### P2-5 深化治理（进行中）

- 范围
  - 已完成：通知回执标准化（消息ID、回执码、回执日志）
  - 已完成：导出下载鉴权与过期策略（令牌刷新、过期控制、下载计数）
  - 已完成：运营看板趋势与TOP（通知/导出/告警）
  - 待完成：真实供应商SDK接入与失败原因规范化字典
- 后端 API（新增）
  - `POST /api/notifications/receipts`
  - `POST /api/notifications/receipts/webhook`
  - `POST /api/export-tasks/{id}/refresh-token`
  - `GET /api/export-tasks/{id}/download`
  - `GET /api/operations/dashboard`

## 五、建议迭代顺序（接下来 4 个 Sprint）

- Sprint E（2周）：P0-1 多租户真实化 + P0-2 审计日志中心
- Sprint F（2周）：P1-1 资料四模块补齐 + P1-2 审核增强
- Sprint G（2周）：P1-3 财务对账锁账 + P1-4 模板闭环
- Sprint H（2-3周）：P2-1 专家管理 + P2-2 通知策略 + P2-3 可观测性

## 六、DoD（本清单统一完成标准）

- 接口文档：请求/响应/错误码补齐。
- 数据迁移：Flyway 脚本可重复执行，预发验证通过。
- 权限校验：菜单权限 + 动作权限 + 数据权限全链路生效。
- 测试：单测 + 关键集成测试 + 最少 1 条回归脚本。
- 留痕：关键动作有审计日志（操作者、对象、前后值、时间）。

## 七、“有概念、无模块化定义”缺口补全（本轮新增）

### C1 租户管理模块化补全（平台级）

- 缺口来源
  - 业务文档已有“平台超级管理员可创建/启停单位主体”概念，但缺页面与流程化定义。
  - 技术文档“接口实施状态”提到已实现租户能力，但接口清单未显式列出租户分组。
- 页面定义（前端）
  - 新增“租户管理”菜单与页面：列表、创建、启用、停用。
  - 字段：`tenantCode`、`tenantName`、`status`、`createdAt`。
- 后端 API
  - `GET /api/tenants`
  - `POST /api/tenants`
  - `POST /api/tenants/{id}/enable`
  - `POST /api/tenants/{id}/disable`
- 数据与约束
  - `tenant_code` 唯一，状态仅允许 `ENABLED/DISABLED`。
  - 启停租户需写入审计日志（动作码建议：`tenant.manage`）。
- 验收
  - 平台管理员可在页面完成全流程；无 `tenant.manage` 权限用户不可操作。
  - 两份主文档均包含模块、接口、权限点与页面入口说明。
- 人天
  - 后端 1d + 前端 1d + 测试 1d = **3d**

### C2 企业管理模块化补全（系统设置）

- 缺口来源
  - 业务文档有“企业管理”字段要求，但技术文档无对应模块定义/接口清单。
- 页面定义（前端）
  - 列表、详情、创建、编辑、启停（如业务确认需要）。
  - 字段：企业名称、网址、Logo、状态、更新时间。
- 后端 API（建议）
  - `GET /api/enterprises`
  - `POST /api/enterprises`
  - `PUT /api/enterprises/{id}`
  - `POST /api/enterprises/{id}/enable`
  - `POST /api/enterprises/{id}/disable`
- 数据与约束
  - 新增 `enterprise` 主表；名称唯一，Logo 必填校验。
  - 项目模块“合作企业”字段改为引用企业主数据。
- 验收
  - 项目创建/编辑可引用企业主数据，禁止手填脏数据。
  - 企业启停后在项目选择器实时生效。
- 人天
  - 后端 3d + 前端 2d + 测试 2d = **7d**

### C3 菜单管理模块化补全（权限可见性）

- 缺口来源
  - 业务文档有“菜单管理”概念，技术文档未定义菜单数据模型和权限映射策略。
- 页面定义（前端）
  - 菜单列表（树形）、角色菜单绑定、菜单启停与排序。
- 后端 API（建议）
  - `GET /api/menus`
  - `POST /api/menus`
  - `PUT /api/menus/{id}`
  - `POST /api/roles/{id}/menus`
  - `GET /api/roles/{id}/menus`
- 数据与约束
  - `menu`、`role_menu` 表；菜单与 `permissionCode` 建立映射。
  - 前端“可见性”与后端“动作权限”双校验，禁止只做前端隐藏。
- 验收
  - 不同角色登录看到不同菜单树，且后端越权访问仍被拦截。
- 人天
  - 后端 4d + 前端 3d + 测试 2d = **9d**

### C4 代理授权模块化补全（用户生命周期）

- 缺口来源
  - 业务文档明确要求代理授权生效/失效与留痕，技术文档仅概念提及。
- 页面定义（前端）
  - 用户详情新增“代理授权”配置：代理人、生效时间、失效时间、原因。
  - 代理记录列表：状态（待生效/生效中/已失效）。
- 后端 API（建议）
  - `POST /api/users/{id}/delegations`
  - `GET /api/users/{id}/delegations`
  - `POST /api/delegations/{id}/disable`
- 数据与约束
  - 新增 `user_delegation` 表，记录授权窗口、状态、创建人与失效原因。
  - 审计记录动作码建议：`user.delegation.manage`。
- 验收
  - 到达失效时间自动失效；代理操作可完整追溯授权链。
- 人天
  - 后端 3d + 前端 2d + 测试 2d = **7d**

### C5 账号有效期模块化补全（鉴权拦截）

- 缺口来源
  - 业务文档要求账号有效期必填，技术文档缺字段规范与认证拦截定义。
- 页面定义（前端）
  - 用户新增/编辑增加“有效期开始/结束”。
  - 到期账号列表筛选与状态提示。
- 后端 API（建议）
  - 复用 `POST/PUT /api/users` 增加 `validFrom`、`validTo` 字段。
  - 登录接口增加有效期校验失败错误码返回（建议 `11004`）。
- 数据与约束
  - `sys_user` 增加 `valid_from`、`valid_to`。
  - 登录、刷新令牌、关键写操作统一做有效期检查。
- 验收
  - 过期账号无法登录且返回统一错误码；在有效期内恢复正常。
- 人天
  - 后端 2d + 前端 1d + 测试 1d = **4d**

## 八、缺口补全里程碑（建议）

| 里程碑 | Sprint | 交付模块 | 目标结果 |
|---|---|---|---|
| M1 | Sprint I（1周） | C1 租户管理、C5 账号有效期 | 平台可创建/启停租户；账号到期拦截口径统一 |
| M2 | Sprint J（2周） | C2 企业管理、C4 代理授权 | 企业主数据可维护并被项目引用；代理授权可配置并自动失效 |
| M3 | Sprint K（2周） | C3 菜单管理 | 角色菜单树可配置；菜单可见性与动作权限一体化生效 |
| M4 | Sprint L（1周） | 文档与验收收口 | 两份主文档与实现清单 1:1 对齐，补齐回归与审计验证 |

### 里程碑验收门槛（统一）

- 接口与页面：每个模块至少 1 条端到端回归脚本通过。
- 权限链路：登录鉴权、动作权限、数据权限、有效期校验全部生效。
- 数据治理：Flyway 脚本可重复执行，升级/回滚路径可验证。
- 审计追溯：创建、启停、授权、失效、权限变更全量留痕可检索。

## 九、开发任务卡（可直接排期）

### 9.0 任务状态总览（2026-03-10）

| 任务 | 状态 | 备注 |
|---|---|---|
| T1 | 已完成（待QA执行） | 功能已落地，测试结果待回填。 |
| T2 | 已完成（待QA执行） | 功能已落地，测试结果待回填。 |
| T3 | 已完成（待QA执行） | 功能已落地，测试结果待回填。 |
| T4 | 已完成（待手工QA执行） | 自动化基线已补，手工回归待执行。 |
| T5 | 功能已完成（QA未闭环） | 缺任务卡进展说明与回归结果。 |

### T1 租户管理（平台级）

- 目标
  - 提供租户列表、创建、启用、停用能力，并纳入统一权限与审计链路。
- 后端任务
  - 完成 `TenantController/TenantService` 接口稳定化与参数校验。
  - 增加错误码映射：重复租户编码、状态非法、无权限。
  - 审计日志接入：`tenant.manage`（创建/启停分动作码）。
- 前端任务
  - 新增 `TenantPage`（列表、创建弹窗、启停按钮）。
  - 在菜单中增加平台入口（仅具备权限用户可见）。
  - 按钮权限：`tenant.manage`。
- SQL/Flyway
  - 确认 `tenant` 表字段完整：`tenant_code` 唯一、`status`、审计字段。
  - 历史数据修复脚本：空 `tenant_code` 回填与唯一约束检查。
- 测试用例
  - 正常创建租户、重复编码拦截、启停状态切换、无权限拦截。
  - 停用租户下账号登录失败验证。
- DoD
  - 页面可操作、接口稳定、日志可检索、回归通过。

- 当前实现进展（2026-03-10）
  - 已完成：租户列表/创建/启停接口与前端页面，菜单入口与 `tenant.manage` 按钮权限控制。
  - 已完成：Flyway 兼容修复与 `tenant_code` 约束补齐。
  - 待完成：按 `TASK-T1-QA-01` 执行手工回归并回填结果。

### T2 企业管理（系统设置）

- 目标
  - 企业主数据独立维护，并可在项目模块引用，杜绝手填脏数据。
- 后端任务
  - 新增企业 CRUD 与启停接口。
  - 项目创建/编辑改为企业 ID 引用校验。
  - 约束：企业停用后不可被新增项目引用。
- 前端任务
  - 新增企业管理页（列表、详情、创建、编辑、启停）。
  - 项目页面“合作企业”改为下拉选择企业主数据。
- SQL/Flyway
  - 新增 `enterprise` 表及唯一索引（企业名称/编码按最终口径确定）。
  - 项目表增加 `enterprise_id`（若当前为名称存储需迁移脚本）。
- 测试用例
  - 企业启停与项目引用联动、重复名称校验、历史项目兼容查询。
- DoD
  - 企业数据可维护，项目联动稳定，历史数据可回溯。

- 当前实现进展（2026-03-10）
  - 已完成：企业表迁移、企业 CRUD/启停接口、项目绑定企业引用校验。
  - 已完成：企业管理页与项目“合作企业”下拉联动。
  - 待完成：按 `TASK-T2-QA-01` 执行联调回归并回填结果。

### T3 菜单管理（角色菜单树）

- 目标
  - 菜单可见性可配置，且与动作权限统一治理。
- 后端任务
  - 提供菜单树查询、菜单维护、角色菜单绑定接口。
  - 校验角色绑定数据合法性（菜单存在、状态可用、层级正确）。
- 前端任务
  - 新增菜单管理页（树形、排序、启停、角色绑定）。
  - 登录后按角色加载菜单树，未授权菜单不展示。
- SQL/Flyway
  - 新增 `menu`、`role_menu` 表，建立索引（`role_id`、`menu_id`）。
  - 菜单与 `permission_code` 字段对齐。
- 测试用例
  - 角色切换后菜单变化、越权接口后端拦截、菜单停用即时生效。
- DoD
  - 菜单可配置、权限一致、越权不可达。

- 当前实现进展（2026-03-10）
  - 已完成：菜单管理接口、角色菜单绑定、`permission_code` 对齐与批量排序保存。
  - 已完成：前端菜单管理页、角色绑菜单、登录后按权限动态加载菜单。
  - 待完成：按 `TASK-T3-QA-01` 执行越权与可见性回归并回填结果。

### T4 代理授权（用户生命周期）

- 目标
  - 支持代理授权时间窗配置、自动失效、全链路审计。
- 后端任务
  - 提供授权创建/查询/停用接口。
  - 增加定时任务：过期授权自动置为失效。
  - 鉴权侧接入代理上下文判定（仅在有效窗口内生效）。
- 前端任务
  - 用户详情新增代理授权配置与记录列表。
  - 显示授权状态（待生效/生效中/已失效/手动停用）。
- SQL/Flyway
  - 新增 `user_delegation` 表及状态索引（`status`,`effective_to`）。
- 测试用例
  - 授权生效、过期自动失效、手动停用、审计记录完整。
- DoD
  - 授权链路可追溯、时间窗行为正确、异常场景可控。

- 当前实现进展（2026-03-10）
  - 已完成：`V37__user_delegation.sql`（表结构+索引+权限种子）、授权创建/查询/停用接口、过期自动失效定时任务、用户页代理授权弹窗（新增/列表/停用）。
  - 已完成：鉴权链路代理上下文生效（代理人可在有效窗口内继承被代理人权限），并补充了后端自动化测试覆盖关键路径。
  - 已完成：`TASK-T4-QA-01` 回归用例模板与自动化单测基线（代理权限继承、时间窗参数校验）。

- T4-QA 回归执行清单（可直接拷贝到测试单）

| 用例ID | 场景 | 前置条件 | 操作步骤 | 预期结果 | 执行结果 |
|---|---|---|---|---|---|
| T4-QA-001 | 授权立即生效 | 用户A、用户B均启用；A具有业务权限；B不具备该权限 | 在用户页为A配置代理人B，生效时间=当前前，失效时间=未来 | 授权记录状态为`ENABLED`；B可访问A对应权限接口 | 待执行 |
| T4-QA-002 | 授权待生效 | 用户A、用户B均启用 | 配置生效时间=未来，失效时间=更未来 | 记录状态为`PENDING`；B暂不可继承A权限 | 待执行 |
| T4-QA-003 | 授权自动过期 | 已存在`ENABLED`授权记录，失效时间即将到达 | 等待定时任务窗口（或手工触发任务） | 状态自动切为`EXPIRED`；B失去继承权限 | 待执行 |
| T4-QA-004 | 手动停用授权 | 已存在`ENABLED`或`PENDING`授权记录 | 在代理授权列表点击“停用”并填写原因 | 状态切为`DISABLED`；停用原因可查询 | 待执行 |
| T4-QA-005 | 禁止自代理 | 用户A存在 | 为A创建代理，代理人也选择A | 创建失败，返回业务错误“代理人不能与被代理人相同” | 待执行 |
| T4-QA-006 | 非法时间窗拦截 | 用户A、用户B存在 | 创建授权：`effectiveTo <= effectiveFrom` | 创建失败，返回业务错误“失效时间必须晚于生效时间” | 待执行 |
| T4-QA-007 | 权限闭环审计 | 已开启操作审计 | 完成一次“创建授权->停用授权”链路 | 审计日志存在对应 API 调用记录与状态变更痕迹 | 待执行 |

- T4-QA 自动化测试映射（当前已落地）
  - `PermissionServiceDelegationTest`：覆盖代理权限继承与权限集合去重。
  - `UserDelegationServiceValidationTest`：覆盖自代理拦截、时间窗非法拦截。

### T5 账号有效期（统一鉴权拦截）

- 目标
  - 在登录、令牌刷新、关键写操作统一校验账号有效期。
- 后端任务
  - `sys_user` 引入 `valid_from/valid_to` 并在认证链路校验。
  - 新增错误码（建议 `11004`）与统一错误文案。
- 前端任务
  - 用户创建/编辑增加有效期字段及校验。
  - 到期状态在用户列表显式标记。
- SQL/Flyway
  - `sys_user` 加字段与默认值迁移；历史账号回填策略。
- 测试用例
  - 有效期前不可登录、有效期内可登录、过期后自动拦截。
  - 关键写接口（非登录）也进行有效期拒绝校验。
- DoD
  - 各链路校验一致，错误码统一，回归通过。

- 当前实现进展（2026-03-10）
  - 已完成：`V33__user_account_validity.sql` 字段迁移与历史回填（`valid_from/valid_to`）。
  - 已完成：登录与鉴权拦截统一有效期校验，错误码 `11004` 接入前端自动登出处理。
  - 已完成：用户页面有效期录入与“已过期”状态展示。
  - 待完成：补齐 `TASK-T5-QA-01` 回归执行清单与结果回填。

## 十、Jira/禅道建单模板（可导入）

### 10.1 使用说明

- 建议先创建 5 个 Epic：`EPIC-T1`~`EPIC-T5`（对应 T1~T5）。
- 下面“任务导入表”可直接复制为 CSV（逗号分隔）导入。
- `依赖` 列用于排期时设置“前置任务”，避免并行冲突。

### 10.2 Epic 列表

| Epic ID | Epic 名称 | 目标 |
|---|---|---|
| EPIC-T1 | 租户管理平台化 | 完成租户创建/启停/审计全链路 |
| EPIC-T2 | 企业管理主数据化 | 企业主数据维护并联动项目引用 |
| EPIC-T3 | 菜单权限一体化 | 菜单树与动作权限统一治理 |
| EPIC-T4 | 代理授权生命周期 | 授权配置、自动失效、可审计 |
| EPIC-T5 | 账号有效期统一校验 | 登录与关键写操作统一拦截 |

### 10.3 任务导入表（CSV列头）

`IssueKey,Summary,IssueType,EpicLink,OwnerRole,EstimateDays,Priority,DependsOn,AcceptanceCriteria`

`TASK-T1-BE-01,租户管理后端接口与校验,Task,EPIC-T1,后端,1,P0,,实现GET/POST tenants与启停接口并通过单测`
`TASK-T1-FE-01,租户管理前端页面与菜单入口,Task,EPIC-T1,前端,1,P0,TASK-T1-BE-01,完成列表创建启停页面并接通权限控制`
`TASK-T1-QA-01,租户管理联调与回归,Task,EPIC-T1,测试,1,P0,TASK-T1-BE-01;TASK-T1-FE-01,覆盖创建重复编码启停无权限用例`

`TASK-T2-DB-01,企业主数据表设计与迁移脚本,Task,EPIC-T2,后端,1,P1,,新增enterprise表并完成迁移验证`
`TASK-T2-BE-01,企业管理接口与项目引用校验,Task,EPIC-T2,后端,2,P1,TASK-T2-DB-01,实现企业CRUD启停并联动项目引用约束`
`TASK-T2-FE-01,企业管理页面与项目企业下拉,Task,EPIC-T2,前端,2,P1,TASK-T2-BE-01,企业页可维护且项目页改为企业下拉`
`TASK-T2-QA-01,企业管理联调回归,Task,EPIC-T2,测试,2,P1,TASK-T2-BE-01;TASK-T2-FE-01,覆盖启停联动重复名称历史数据兼容`

`TASK-T3-DB-01,菜单与角色菜单关系表迁移,Task,EPIC-T3,后端,1,P1,,新增menu与role_menu并建索引`
`TASK-T3-BE-01,菜单树与角色绑定后端接口,Task,EPIC-T3,后端,2,P1,TASK-T3-DB-01,实现菜单树查询维护与角色绑定接口`
`TASK-T3-FE-01,菜单管理页面与动态菜单加载,Task,EPIC-T3,前端,3,P1,TASK-T3-BE-01,角色切换后菜单可见性正确生效`
`TASK-T3-QA-01,菜单权限回归与越权验证,Task,EPIC-T3,测试,2,P1,TASK-T3-BE-01;TASK-T3-FE-01,覆盖前端可见性与后端越权拦截`

`TASK-T4-DB-01,代理授权表与状态索引迁移,Task,EPIC-T4,后端,1,P1,,新增user_delegation表并通过迁移验证`
`TASK-T4-BE-01,代理授权接口与自动失效任务,Task,EPIC-T4,后端,2,P1,TASK-T4-DB-01,实现授权创建查询停用与过期自动失效`
`TASK-T4-FE-01,用户详情代理授权UI,Task,EPIC-T4,前端,2,P1,TASK-T4-BE-01,支持授权配置与状态展示`
`TASK-T4-QA-01,代理授权链路回归,Task,EPIC-T4,测试,2,P1,TASK-T4-BE-01;TASK-T4-FE-01,覆盖生效过期停用与审计追溯`

`TASK-T5-DB-01,用户有效期字段迁移,Task,EPIC-T5,后端,1,P0,,sys_user新增valid_from与valid_to并回填策略`
`TASK-T5-BE-01,认证链路有效期统一校验,Task,EPIC-T5,后端,1,P0,TASK-T5-DB-01,登录刷新关键写操作统一拦截并返回11004`
`TASK-T5-FE-01,用户有效期表单与状态展示,Task,EPIC-T5,前端,1,P0,TASK-T5-BE-01,新增有效期字段与到期标识展示`
`TASK-T5-QA-01,有效期全链路回归,Task,EPIC-T5,测试,1,P0,TASK-T5-BE-01;TASK-T5-FE-01,覆盖生效前有效期内过期后三段场景`

### 10.4 建议前置依赖图

- `T1` 与 `T5` 可并行，建议优先完成（P0）。
- `T2` 依赖企业表迁移后再做项目联动。
- `T3` 建议在 `T1/T5` 稳定后推进，避免权限链路改动冲突。
- `T4` 可与 `T2/T3` 并行，但需与鉴权改造保持分支隔离。
