1
0
health_monitor/端到端主流程.md

3.3 KiB
Raw Blame History

sequenceDiagram autonumber actor Admin as Admin管理员 participant UI as 前端UI participant API as 后端API服务 participant PG_Task as PostgreSQLkg_task participant Ext as 外部抽取服务 participant PG_M as PostgreSQLkg_entity_mention/kg_relation_mention participant PG_Cand as PostgreSQLkg_candidate participant PG_Conf as PostgreSQLkg_confirm participant Audit as PostgreSQLaudit_log participant SyncW as 同步Worker participant Neo4j as Neo4j投影

Note over Admin,PG_Task: 任务创建与门禁3.1.3.1 / 3.1.3.1.1 Admin->>UI: 配置任务Schemaext_entity_codes / ext_relation_codes UI->>API: 提交创建任务请求(创建门禁检查) API->>PG_Task: 创建kg_taskstatus=created持久化tenant上下文 API-->>UI: 返回task信息external_task_id在触发抽取时获取

Note over API,Ext: 任务运行期status: running → finished/failed API->>Ext: 触发抽取外部异步执行分配external_task_id Ext-->>PG_Task: 任务状态更新running → finished/failed由系统对接P0仅约束状态口径

Note over Ext,API: 抽取结果回调5.1 回调/导入) Ext->>API: POST /api/callback/extractexternal_task_id, records... API->>PG_Task: 基于external_task_id反查kg_task仅接受status=finished API->>PG_Task: 行级锁/门禁(单消费者/重复通知幂等处理) API->>PG_M: 同事务写入Mention activate API API->>API: Schema白名单裁决 + Task生命周期过滤\n→ mention.status=active/invalid3.2.4 API->>Audit: 写审计filtered_by_schema / callback_* deactivate API API-->>Ext: 回调处理结果(成功/冲突)

Note over Admin,PG_Cand: 候选生成3.3 / 5.3 Admin->>UI: 在任务详情发起“由mentions生成candidate” UI->>API: POST /api/candidates/from-mentions API->>PG_M: 仅读取status=active 且 task非revoking/revoked 的mentions\n统一可见性过滤 2.11 API->>PG_Cand: 单事务聚合去重 + 规范化 + 决策canonical\n→ candidate.status=pending3.3.4 API-->>UI: 返回候选数据

Note over Admin,PG_Conf: 审核确认至Confirm3.4 / 5.3 Admin->>UI: 在候选审核页选择通过approve UI->>API: POST /api/candidates/{id}/approve API->>PG_Conf: Confirm Upsert复合键/UID→ status=CONFIRMED\n统一置 sync_status='PENDING'3.4/4.3 API->>PG_Cand: 将被锁定的候选设为lockedlocked_by_confirm=true API->>Audit: 写审计review.accept / merge 等) API-->>UI: 返回审核结果

Note over Admin,PG_Conf: 发布6.1 / 5.4 Admin->>UI: 发起发布publish UI->>API: POST /api/publish?task_id=...(影响预估/阻断策略) API->>PG_Conf: 事务内将相关Confirm置 status=PUBLISHED\n统一置 sync_status='PENDING' API->>Audit: 写审计publish API-->>UI: 返回发布受理结果

Note over SyncW,Neo4j: 同步器执行4.3 指令集) SyncW->>PG_Conf: 扫描 sync_status IN ('PENDING','FAILED') SyncW->>PG_Conf: 原子置 SYNCING加锁避免并发 alt status=PUBLISHED SyncW->>Neo4j: 幂等MERGE/SET节点/关系及属性) else status=ROLLED_BACK SyncW->>Neo4j: 物理删除DETACH DELETE end SyncW->>PG_Conf: 写回 sync_status='SYNCED' 或 'FAILED' SyncW->>Audit: 写审计action='sync',记录结果)