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

67 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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',记录结果)