# P2-WP07 统一审批、任务与通知工程说明 ## 1. 完成范围 P2-WP07 已完成本地工程实现和定向验证。平台新增一个薄的统一工作中心,用同一任务 契约承载质量问题、术语标准、数据产品和 Agent 审批,并保持各源模块的业务状态机不变。 本工作包完成: - 通用流程草稿、不可变修订和发布,支持结构化条件路由; - 单人审批、或签、会签、双人复核、最小同意数和审批人转签; - 四类事项统一待办、用户参与范围过滤、乐观版本和活动源事项幂等; - 治理工单评论、附件证据索引、处理时间线、关闭和重开; - 站内消息、邮件模板、用户渠道/事件偏好、送达状态、指数退避重试和死信; - 待办数、逾期数、关闭数、闭环率、业务类型分布和 30 天趋势; - 首页“待处理审核”组件接入真实待办统计,数据审核菜单新增统一工作中心。 ## 2. 边界与源模块接入 统一工作中心不是新的通用流程引擎。质量问题、语义资产、数据产品/订单和治理 Agent 仍由各自模块决定业务状态。四类事项通过 `subject_type + subject_uid + source_type + source_uid` 接入同一个任务创建契约;同一个未关闭源事项只能存在一条活动任务。 审批、关闭、重开和超时处理只更新统一任务并追加时间线,同时写出 `governance.task.evidence.recorded` outbox 事件。源模块可在自己的权限、责任和状态门禁内 消费该回执;工作中心显式保存 `source_state_unchanged=true`,不会直接把统一任务结果 写成源对象状态。该约束避免质量、术语、产品和 Agent 各自再复制一套审批状态机。 ## 3. 流程、并发与审计 迁移 `20260802_430` 新增流程、任务、协作、通知和送达尝试共 12 张表。流程路由只接受 业务域、风险、敏感等级、环境和金额五类结构化条件以及 `eq/in/gte/lte` 运算,不执行 脚本。任务在创建时固定流程版本和路由快照,后续流程修订不改写历史任务。 任务状态更新要求 `If-Match` 当前版本;审批、转签、关闭、重开、超时升级和超时关闭 均追加带前后快照的审计事件。双人复核至少需要两名独立审批人,创建人不能自审。评论、 附件和任务详情只对创建人、当前处理人、参与人或管理员可见,普通用户不能通过任务编号 旁路读取或操作其他人的事项。 ## 4. 通知与运营视图 站内消息在事务内直接形成已送达记录;邮件进入待投递队列。投递批次使用跳过锁定领取, 失败错误先脱敏,再按指数退避重试;达到最大次数后进入死信。邮件模板支持任务编号、标题 和描述占位符。用户可以关闭渠道或限定订阅事件,被过滤的消息保存为 `suppressed`,而不是 静默丢弃。 SMTP 只在 `DATAOPS_SMTP_HOST`、`DATAOPS_SMTP_FROM`、端口和可选登录信息完成绑定后发送。 当前用户目录没有独立邮件字段,测试绑定使用符合邮件格式的用户名;企业实施必须改为正式 身份目录邮件属性并完成送达 UAT。平台未接入企业微信、飞书、钉钉或 ITSM。 统一工作台展示我的待办、消息、流程和模板,以及任务总数、待办、逾期和闭环率。统计来自 持久化任务,不以页面缓存或模拟数据代替。 ## 5. 权限与接口 - `governance:work-center:read`:查看本人相关待办、消息、流程摘要和运营统计; - `governance:work-center:operate`:创建事项、审批、转签、评论、附件、关闭/重开和偏好; - `governance:work-center:manage`:流程/模板管理、全局任务视图、超时批次和邮件投递。 OpenAPI 已由当前源码重新生成,共 334 个操作,其中统一工作中心提供 16 个路由路径,覆盖 流程、任务、协作、通知、模板、偏好、超时和看板。 ## 6. 定向验证与剩余门禁 本工作包按约束只运行本次变动相关验证: - 核心、API、权限、迁移和前端契约; - 本次 Python 文件 Ruff 和前端改动文件 ESLint; - 本地 PostgreSQL 从 `20260731_400` 实际升级到 `20260802_430`; - PostgreSQL 中创建并发布流程,生成四类统一任务,完成审批、关闭、审计、outbox、模板、 用户偏好、抑制和邮件失败重试验证; - OpenAPI 可重复生成和发布目录源码同步后的一致性检查。 正式生产就绪仍需:绑定企业身份目录邮件属性和 SMTP;配置正式流程、参与人、期限与定时 调度;由质量、语义、产品和 Agent 各源模块消费任务回执;完成四类真实事项端到端 UAT、 容量与告警验证。以上完成前,本地工程完成不等同于企业验收或生产就绪。