title: "A 卡模型运维模块 · 推荐系统架构 V0.1\n同一工程 / 同一 MySQL / 源表发布后可见" direction: TB formats: [png, svg] theme: font: "PingFang SC" title_size: 25 node_size: 11 edge_size: 9.5 splines: spline nodesep: 0.65 ranksep: 0.85 dpi: 180 pad: 0.55 size: "18,12!" clusters: - name: "入口层(现有)" style: { bg: "#F5F7FA", pen: "#AEB7C4", margin: 20 } nodes: - { id: users, label: "业务团队 / 模型团队\n管理员", icon: users } - { id: nginx, label: "Nginx Gateway\n唯一入口", icon: nginx } - { id: react, label: "React SPA\n模型平台 + 运维平台", icon: react } - name: "统一 FastAPI 工程(不新增服务)" style: { bg: "#EEF5FD", pen: "#7FA8D8", margin: 22 } nodes: - { id: model_api, label: "模型平台模块\n模型 / 版本 / 计算任务", icon: fastapi } - { id: ops_api, label: "运维模块\n查询 / 判级 / 复核 / 报告 / 流程", icon: fastapi } - { id: runtime, label: "Jupyter Runtime\n模型开发运行时", icon: server } - { id: scheduler, label: "Schedule Executor\nOutbox 轮询与后台任务", icon: process } - name: "共享数据层(现有 MySQL)" style: { bg: "#F1F8F5", pen: "#78A88D", margin: 22 } nodes: - { id: source_tables, label: "7 张模型源表\n模型方受控直写", icon: mysql } - { id: ops_tables, label: "15 张运维业务表\n判级 / 处理 / 报告 / 流程", icon: mysql } - { id: outbox, label: "outbox_events\n现有异步可靠投递", icon: flowdb } - name: "文件层(现有)" style: { bg: "#FAF6EE", pen: "#C6A96D", margin: 20 } nodes: - { id: storage, label: "对象存储 + storage_objects\n报告 / 流程材料 / 评分逻辑", icon: storage } edges: - { from: users, to: nginx, label: "HTTPS", type: flow, width: 1.8 } - { from: nginx, to: react, label: "静态资源", type: flow } - { from: nginx, to: model_api, label: "模型平台 API", type: flow } - { from: nginx, to: ops_api, label: "运维 API", type: flow, width: 1.8 } - { from: model_api, to: runtime, label: "运行时控制", type: dep } - { from: model_api, to: source_tables, label: "受控 SQL 直写\nwriting → published", type: write, width: 2.2 } - { from: scheduler, to: source_tables, label: "批处理结果直写", type: write } - { from: ops_api, to: source_tables, label: "只读已发布修订", type: write, style: dashed, width: 1.8 } - { from: ops_api, to: ops_tables, label: "业务读写", type: write, width: 2.2 } - { from: ops_api, to: outbox, label: "同事务写事件", type: async } - { from: outbox, to: scheduler, label: "轮询 / 重试", type: async, width: 1.8 } - { from: scheduler, to: ops_tables, label: "判级 / 报告 / 超时任务", type: async } - { from: ops_api, to: storage, label: "材料与报告文件", type: write }