feat: add A-card operations frontend and backend foundation

This commit is contained in:
郑龙捷
2026-09-02 09:54:03 +08:00
parent 9badd3597f
commit ad71259ba5
106 changed files with 12461 additions and 1796 deletions
@@ -0,0 +1,46 @@
# A 卡运维数据库 DBA 授权申请 V0.1
> 目标:现有 `model_platform` 保持不变,新建 `model_operations`。以下为权限范围说明,不包含真实账号名和口令。
## 1. 运维后端
- 现有 `DATABASE_URL`:沿用平台后端连接,用于认证、工作空间和存储;运维代码只查询必要字段。
- 新增 `OPERATIONS_DATABASE_URL`:连接 `model_operations`,读写运维业务表。
- 不申请对 `model_platform` 新增、修改或删除表结构。
建议平台库最小读取范围:
| 表 | 字段/用途 |
|---|---|
| `users` | `user_id/display_name/status/platform_role_id/is_deleted`,明确排除 `password_hash` |
| `roles` | `role_id/role_code/role_name/role_scope/is_deleted` |
| `workspaces` | `workspace_id/workspace_code/workspace_name/status/is_deleted` |
| `workspace_members` | `workspace_id/user_id/role_id/member_status/is_deleted` |
| `storage_objects` | 文件元数据;优先通过现有存储服务访问 |
| `versions/scripts` | 可选关联开发制品,不作为业务模型主数据 |
| `schedules/schedule_runs` | 可选关联模型计算任务,只读运行状态 |
## 2. 模型数据写入方
建议为模型任务使用独立 `MODEL_WRITER_DATABASE_URL`
- `SELECT``ops_model_categories` 和 7 张模型源表。
- `INSERT/UPDATE``ops_banks``ops_model_instances``ops_model_versions``ops_monitor_batches``ops_monitor_results``ops_monitor_feature_metrics``ops_monitor_distributions`
- `INSERT``ops_outbox_events`,事件类型限定为 `monitor_batch.published`
- 不授予 `DELETE`,不授予 15 张运维业务表写权限。
已发布批次后的源结果不可修改,该限制还需由写入服务校验;MySQL 表级授权本身无法按行状态限制 `UPDATE`
## 3. 架构迁移账号
- 仅在发布窗口使用,可对 `model_operations` 执行 DDL 和种子数据脚本。
- 不作为应用运行账号保存到服务配置。
- 不授予对 `model_platform` 的 DDL 权限。
## 4. 审核项
- MySQL 版本需为 8.0,字符集 `utf8mb4`,排序规则 `utf8mb4_0900_ai_ci`
- 确认新库备份、恢复、容量告警和慢查询策略。
- 确认两套连接池上限,避免同一 FastAPI 进程挤满数据库连接。
- 确认 Schedule Executor 何时增加 `model_operations` Outbox 轮询连接。