# model_operations 数据库 V0.1 本目录只提供建库建表脚本,不会修改现有 `model_platform` 库。当前为设计稿,执行生产数据库前仍需 DBA 审核账号、备份和变更窗口。 如需一次性复制执行 24 张新表,直接使用同级文件 `model_operations-完整建表-V0.1.sql`;该文件不包含建库、视图或种子数据。 先将 `model_operations` 设为当前活动数据库,再使用 DBeaver 的“执行 SQL 脚本”(Alt/Option + X)。合并文件不再包含 `USE`;Ctrl/Cmd + Enter 仍只适合单条 `CREATE TABLE`。 ## 执行顺序 ```bash mysql -h -P -u -p < 00_database.sql mysql -h -P -u -p model_operations < 10_reference_and_models.sql mysql -h -P -u -p model_operations < 20_monitoring_source.sql mysql -h -P -u -p model_operations < 30_governance_and_reviews.sql mysql -h -P -u -p model_operations < 40_reports_and_prompts.sql mysql -h -P -u -p model_operations < 50_workflows_documents_usage.sql mysql -h -P -u -p model_operations < 60_seed.sql ``` 脚本使用 `CREATE DATABASE/TABLE IF NOT EXISTS`,不包含 `DROP`、`TRUNCATE` 或业务数据删除。索引全部内联在建表语句中,避免 MySQL 8 不支持 `CREATE INDEX IF NOT EXISTS` 的问题。 执行前可运行 `python3 validate_schema.py`,检查 24 张表、1 个视图、文件行数和破坏性语句。 ## 两库边界 ### model_platform:只读依赖 | 表 | 运维模块用途 | 允许读取的关键字段 | |---|---|---| | `users` | 当前用户、处理人和上传人显示 | `user_id/display_name/status/platform_role_id`;禁止读取 `password_hash` | | `roles` | 登录角色代码和名称 | `role_id/role_code/role_name/role_scope` | | `workspaces` | 运维数据空间 | `workspace_id/workspace_code/workspace_name/status` | | `workspace_members` | 校验用户能否访问工作空间 | `workspace_id/user_id/role_id/member_status` | | `storage_objects` | 报告、评分逻辑和流程材料元数据 | 通过现有存储服务访问,运维表只保存 `storage_object_id` | | `versions/scripts` | 可选关联模型开发产物 | 仅引用稳定版本和脚本标识,不把它当业务模型版本 | | `schedules/schedule_runs` | 可选追踪监控计算任务 | 只读任务和运行状态,不直接改调度数据 | `permissions`、`role_permissions`、`upload_sessions`、平台 `outbox_events` 等表不由运维模块直接读写;权限仍由现有登录/权限模块负责。 ### model_operations:运维模块自有 - 24 张表:7 张模型源表、15 张运维业务表、2 张独立 Outbox/Inbox 技术表。 - 所有 `workspace_id/user_id/storage_object_id/platform_versions_id` 均为跨库逻辑引用,不建立跨库物理外键。 - 模型平台写入 7 张源表,并可向 `ops_outbox_events` 插入 `monitor_batch.published` 事件;不得写判级、复核、报告和流程表。 - 运维应用拥有本库业务读写权限,但不得更新已发布的原始监控结果。 ## 应用连接 后端需要两套连接配置: - `DATABASE_URL`:现有 `model_platform`,沿用认证、工作空间、存储和调度能力。 - `OPERATIONS_DATABASE_URL`:新建 `model_operations`,承载全部运维业务数据。 首条真实接口只需要后端双连接;异步判级、报告和提醒接入时,再让 Schedule Executor 增加运维库 Outbox 轮询连接。