2.3 KiB
工作台工单与告警存储契约
工作台只聚合预约工单与任务主动推送的告警。浏览器不推导告警,也不写正式工单。
任务告警
DDL 位于 resources/sql/008_workbench_alert_events.sql。任务通过 POST /api/v1/workbench/task-alert-events 推送 raised、acknowledged 或 resolved 事件。来源包含 task_type、task_id 和 run_id,生产者由认证项目身份绑定。event_id 在项目和生产者范围内幂等,告警事实在首次 raised 后不可改写。
预约工单
workbench.work_orders 的 DDL 位于 resources/sql/011_workbench_work_orders.sql。每行保存一个只读工单投影,文档必须满足 WorkbenchRuntimeWorkOrder:
resources/sql/017_workbench_schema_comments.sql 在 008、011、014 和 015 之后执行,为工作台 schema、17 张表和关键列增加数据库可见的用途说明。
- 一张预约工单对应一条单层投影,直接保存位置、负责人、预约时间和回执要求。
activity只记录已经发生的创建、修改和现场反馈,按递增sequence排列;展示层不得根据工单总状态补造派发、执行或复令阶段。- 旧文档中的
subtasks在兼容读取时被丢弃,不再进入新接口契约;历史修订保留原始审计内容。
预约任务演示数据通过 scripts/seed_workbench_work_orders.py 直接写入。工作台继续显示三张原有演示工单,保留既有 ID、标题和状态,并改用回执要求与真实活动记录表达过程。脚本可重复执行,并会先清理旧的外围合成工单投影。scripts/seed_peripheral_sample.py 不再创建通信、压力和零流量检查工单。
截至 2026-09-24,本次数据清理和三张演示工单结构重建仅应用于物理数据库 tjwater_v2,项目为 324ff7ee-c2d4-5184-a84b-48fb14a2933e。核验结果为三张演示工单均使用单层结构,旧种子检查投影为 0;其他项目数据库未执行本次变更。扩大范围必须遵循 workbench-database-rollout.md 的逐库门禁。
工作台运行账号对工单表只需 SELECT,同步账号使用独立受控写权限;对告警事件表需要 SELECT, INSERT,对告警状态表需要 SELECT, INSERT, UPDATE。