Files
aiops/docs/db-table-audit.md
T
2026-07-09 14:16:56 +08:00

396 lines
24 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.
# 数据表与菜单域审计记录
> 审计范围:`backend/model`、`backend/pkg/database/database.go`、主要 controller/service/repository 引用、`backend/seed/seed.go` 默认菜单权限。
> 目标:按菜单域整理表清单,记录表名前缀、设计合理性、疑似旧表/无用表和后续整改建议。
## 重建版目标设计
测试环境允许直接重建时,建议采用 **Schema v2 全局统一方案**:按菜单域和平台基础域重新归类,旧表不做兼容 rename,直接调整 `TableName()`、AutoMigrate 清单、种子数据和相关查询引用,然后清空数据库重建。
### 全局命名原则
1. 表名统一使用:`<domain>_<resource_plural>`。
2. 领域前缀与菜单域保持一致,避免同一功能散落在 `sys_`、`ops_`、`monitor_`。
3. 关联表统一使用:`<left_domain>_<left>_<right>` 或同域 `<domain>_<left>_<right>`。
4. 配置类表可用单数语义但表名仍用复数,例如 `deploy_build_master_configs`。
5. 时序/日志大表必须明确后缀:`*_samples`、`*_histories`、`*_events`、`*_logs`。
6. 不再新增无前缀表。
### 目标前缀
| 前缀 | 菜单/领域 | 说明 |
| --- | --- | --- |
| `iam_` | 身份与权限 | 用户、角色、权限、凭据、LDAP、资源级授权 |
| `sys_` | 系统基础配置 | 系统任务、站内导航、全局配置 |
| `audit_` | 安全审计 | 操作审计、登录日志、终端/RDP 会话、命令审计 |
| `asset_` | 资产/云资源 | 服务器、云账号、云区域、域名、账单、资源型号 |
| `k8s_` | Kubernetes | 集群与同步缓存资源 |
| `deploy_` | 应用发布 | 流水线、运行记录、发布、环境、构建节点、工具 |
| `monitor_` | 监控告警 | 告警、指标、Agent、SNMP、站点拨测、中间件、数据源 |
| `ops_` | 自动化运维 | 定时任务、脚本、远程执行、Ansible 如保留 |
| `approval_` | 资源申请/审批 | 模板、流程、实例、步骤 |
| `ai_` | AIOps/AI | LLM、会话、分析轨迹、Agent CLI 运行记录 |
### 目标表清单
#### IAM / 系统基础
| 目标表 | 来源/处理 |
| --- | --- |
| `iam_users` | 保留 |
| `iam_roles` | 保留 |
| `iam_permissions` | 保留 |
| `iam_user_roles` | 保留 |
| `iam_role_permissions` | 替换 `role_permissions` |
| `iam_credentials` | 保留,作为全局凭据唯一主表 |
| `iam_ldap_configs` | 保留 |
| `iam_item_roles` | 保留 |
| `iam_user_item_roles` | 保留 |
| `iam_log_scope_roles` | 从 `monitor_log_scope_roles` 调整,日志查询权限本质是权限控制 |
| `iam_user_log_scope_roles` | 从 `monitor_user_log_scope_roles` 调整 |
| `sys_system_task_statuses` | 从 `sys_system_task_status` 调整为复数 |
| `sys_navigation_groups` | 保留 |
| `sys_navigation_links` | 替换 `navigation_links` |
#### 安全审计
| 目标表 | 来源/处理 |
| --- | --- |
| `audit_operation_logs` | 替换 `sys_audit_logs` |
| `audit_settings` | 替换 `sys_audit_settings` |
| `audit_login_logs` | 替换 `sys_login_logs` |
| `audit_terminal_sessions` | 替换 `sys_terminal_sessions` |
| `audit_rdp_sessions` | 替换 `sys_rdp_sessions` |
| `audit_session_commands` | 替换 `sys_session_commands` |
#### 资产 / 云资源
| 目标表 | 来源/处理 |
| --- | --- |
| `asset_servers` | 保留 |
| `asset_host_groups` | 保留 |
| `asset_cloud_platforms` | 替换 `asset_clouds` |
| `asset_cloud_accounts` | 保留,敏感字段统一转凭据 ID |
| `asset_cloud_regions` | 替换 `asset_regions` |
| `asset_domains` | 保留 |
| `asset_resource_models` | 保留 |
| `asset_cloud_billing_records` | 替换 `asset_cloud_billings`,语义更明确 |
| `asset_cloud_billing_alert_rules` | 替换 `monitor_billing_alert_rules`,账单告警属于资产账单域配置,触发事件再进监控事件 |
#### Kubernetes
| 目标表 | 来源/处理 |
| --- | --- |
| `k8s_clusters` | 替换 `kubernetes_clusters` |
| `k8s_nodes` | 替换 `kubernetes_nodes` |
| `k8s_pods` | 替换 `kubernetes_pods` |
| `k8s_deployments` | 替换 `kubernetes_deployments` |
| `k8s_services` | 替换 `kubernetes_services` |
| `k8s_ingresses` | 替换 `kubernetes_ingresses` |
| `k8s_topology_layouts` | 替换 `kubernetes_topology_layouts` |
#### 应用发布
| 目标表 | 来源/处理 |
| --- | --- |
| `deploy_pipelines` | 替换 `ops_pipelines` |
| `deploy_pipeline_runs` | 替换 `ops_pipeline_runs` |
| `deploy_app_releases` | 保留 |
| `deploy_environments` | 保留 |
| `deploy_build_nodes` | 保留 |
| `deploy_build_master_configs` | 替换 `deploy_build_master_config` |
| `deploy_pipeline_members` | 保留 |
| `deploy_user_groups` | 保留 |
| `deploy_user_group_members` | 保留 |
| `deploy_tools` | 保留 |
| 已删除 `deploy_pipeline_repos` | 发布配置直接使用 `iam_credentials` + Pipeline 凭据字段 |
| 已删除 `deploy_pipeline_registries` | 发布配置直接使用 `iam_credentials` + Pipeline 凭据字段 |
#### 监控告警
| 目标表 | 来源/处理 |
| --- | --- |
| `monitor_targets` | 保留 |
| `monitor_metrics` | 保留,作为指标定义表 |
| `monitor_metric_samples` | 合并/替换 `metric_values` 和 `monitor_metric_histories` |
| `monitor_metric_aggregates` | 替换 `monitor_metrics_aggregate` |
| `monitor_metric_tags` | 保留 |
| `monitor_alert_rules` | 保留但只保留一个模型定义 |
| `monitor_alert_conditions` | 保留 |
| `monitor_alert_events` | 保留 |
| `monitor_alert_channels` | 替换 `monitor_notify_channels` |
| `monitor_alert_contacts` | 保留 |
| `monitor_alert_contact_groups` | 保留 |
| `monitor_alert_notify_policies` | 保留 |
| `monitor_alert_notify_templates` | 保留 |
| `monitor_alert_notify_settings` | 保留 |
| `monitor_alert_upgrades` | 保留 |
| `monitor_alert_upgrade_records` | 保留 |
| `monitor_alert_silences` | 保留 |
| `monitor_agent_reports` | 保留 |
| `monitor_agent_tasks` | 保留 |
| `monitor_agent_rules` | 保留 |
| `monitor_agent_alerts` | 保留 |
| `monitor_agent_port_policies` | 替换 `monitor_agent_port_policy`,并加入迁移 |
| `monitor_health_probes` | 保留 |
| `monitor_prometheus_datasources` | 保留 |
| `monitor_zabbix_datasources` | 保留 |
| `monitor_log_datasources` | 保留 |
| `monitor_trace_datasources` | 保留 |
| `monitor_site_tasks` | 替换 `ops_site_tasks` |
| `monitor_site_results` | 替换 `ops_site_results` |
| `monitor_site_alerts` | 替换 `ops_site_alerts` |
| `monitor_snmp_devices` | 替换 `ops_snmp_devices` |
| `monitor_snmp_templates` | 替换 `ops_snmp_templates` |
| `monitor_snmp_template_oids` | 替换 `ops_snmp_template_oids` |
| `monitor_snmp_samples` | 替换 `ops_snmp_metrics`,删除 `snmp_history` |
| `monitor_snmp_interfaces` | 替换 `ops_snmp_interfaces` |
| `monitor_dashboards` | 保留一个大屏主表 |
| `monitor_dashboard_panels` | 替换 `dashboard_panels` |
| 已删除 `monitor_custom_dashboards` | 合并到 `monitor_dashboards`,用 `type/custom` 区分 |
| 删除 `monitor_metric_data` | 用 `monitor_metrics` 替代 |
#### 自动化运维
| 目标表 | 来源/处理 |
| --- | --- |
| `ops_cron_jobs` | 保留 |
| `ops_scripts` | 保留 |
| `ops_task_executions` | 保留 |
| `ops_remote_executions` | 建议新增,记录远程批量执行任务级审计 |
| `ops_ansible_playbooks` | 如保留 Ansible 页面则保留,否则删除 |
| `ops_ansible_jobs` | 同上 |
| `ops_ansible_inventories` | 同上 |
#### 审批
| 目标表 | 来源/处理 |
| --- | --- |
| `approval_templates` | 替换 `sys_approval_templates` |
| `approval_processes` | 保留 |
| `approval_steps` | 保留 |
| `approval_workflows` | 替换 `sys_approval_workflows` |
| `approval_workflow_steps` | 替换 `sys_approval_workflow_steps` |
建议:模板保留表单 schema,工作流表保留审批流定义,流程实例引用 `workflow_id`,逐步弱化 `flow_config` JSON。
#### AIOps / AI
| 目标表 | 来源/处理 |
| --- | --- |
| `ai_llm_configs` | 保留 |
| `ai_chat_histories` | 保留 |
| `ai_analysis_traces` | 保留 |
| `ai_runs` | 保留 |
| `ai_run_messages` | 保留 |
| `ai_run_spans` | 保留 |
| `ai_capabilities` | 保留 |
| `ai_capability_policies` | 保留 |
| `ai_ops_sessions` | 替换 `ops_sessions` |
| `ai_ops_commands` | 替换 `ops_commands` |
### 重建执行策略
1. 修改所有 `TableName()`,把目标表名一次性统一。
2. 修改 GORM many2many tag:`role_permissions` -> `iam_role_permissions`。
3. 修改硬编码 `db.Table(...)` 和 SQL 清理逻辑。
4. 精简 AutoMigrate:删除已合并/废弃模型,补上漏迁移模型。
5. 更新 seed:默认权限、审批模板、工具配置、演示数据按新表生成。
6. 删除测试库数据卷或 SQLite 文件,重新启动服务让 AutoMigrate 建表。
7. 跑 `go build`、`npx tsc --noEmit`、集成测试和关键页面验证。
## 总体结论
当前表名前缀没有形成统一分层,主要使用 `asset_`、`monitor_`、`ops_`、`deploy_`、`sys_`、`iam_`、`ai_`、`kubernetes_`。整体可以运行,但存在几类需要后续整改的问题:
1. **无前缀或前缀不一致表**:`approval_processes`、`approval_steps`、`navigation_links`、`metric_values`、`dashboard_panels`、`snmp_history`、`role_permissions`。
2. **同一职责多套表并存**:审批有 `sys_approval_templates / approval_processes / approval_steps` 与 `sys_approval_workflows / sys_approval_workflow_steps`;监控大屏有 `monitor_dashboards / dashboard_panels` 与 `monitor_custom_dashboards`;告警规则有 `AlertRule` 和 `MonitorAlertRule` 共用 `monitor_alert_rules`。
3. **表定义但迁移/引用不完整**:`SNMPHistory` 定义了 `snmp_history`,但未进入 AutoMigrate,代码实际查询 `ops_snmp_metrics`;`AgentPortPolicy` 有控制器引用,但未进入 AutoMigrate。
4. **疑似旧表/低价值表**:`sys_log_sources`、`sys_log_entries` 属于旧日志模块,与当前日志中心 `monitor_log_datasources` + 外部 Loki/ES 架构重复;`ops_ansible_*` 有种子数据但“远程执行”现已主要走 SSH/脚本执行,需要确认是否仍保留 Ansible 页面。
5. **设计一致性问题**:大量 JSON 字符串字段承载结构化配置,短期可接受,但要明确边界;高频时序表缺少统一保留策略和分区方案;部分关联表缺少显式外键/唯一约束命名规范。
## 现状前缀评估
> 本节是现状评估口径;重建整改时以“重建版目标设计”为准。
| 领域 | 当前/建议前缀 | 说明 |
| --- | --- | --- |
| IAM/权限/凭据 | `iam_` | 用户、角色、权限、LDAP、凭据、ItemRole |
| 系统基础配置 | `sys_` | 系统任务、站内导航、全局配置 |
| 安全审计 | `audit_` | 重建后从 `sys_` 拆出,避免系统配置与审计数据混在一起 |
| 资产/云资源 | `asset_` | 服务器、云账号、域名、账单、资源模型 |
| Kubernetes | `k8s_` | 重建后统一短前缀,替换当前 `kubernetes_` |
| 发布/部署 | `deploy_` | 环境、凭据、工具、发布记录、成员权限 |
| 自动化执行 | `ops_` | 定时任务、脚本、任务执行、远程执行记录 |
| 监控告警 | `monitor_` | 指标、目标、告警、数据源、站点拨测、SNMP、Agent |
| 审批 | `approval_` | 重建后模板、流程、实例统一归入审批域 |
| AI/AIOps | `ai_` | LLM 配置、会话、分析轨迹、能力策略 |
## 问题清单
| 编号 | 严重度 | 表/模型 | 问题 | 建议 |
| --- | --- | --- | --- | --- |
| DB-001 | 高 | `AlertRule` / `MonitorAlertRule` -> `monitor_alert_rules` | 两个模型返回同一张表,字段定义不同。AutoMigrate 会叠加字段,后续维护容易误删/误覆盖。 | 合并为一个模型或拆成 `monitor_alert_rules` 与 `monitor_probe_alert_rules`,迁移前确认线上字段使用。 |
| DB-002 | 高 | `AgentPortPolicy` -> `monitor_agent_port_policy` | 控制器有读写,但未加入 AutoMigrate,新库端口策略接口可能报“表不存在”。 | 加入 AutoMigrate;表名建议改为复数 `monitor_agent_port_policies`,如改名需迁移旧表。 |
| DB-003 | 高 | `SNMPHistory` -> `snmp_history` | 定义未迁移,代码未引用;清理逻辑清的是 `ops_snmp_metrics`。 | 若 `ops_snmp_metrics` 已兼任历史表,删除 `SNMPHistory`;否则新增迁移并把查询/清理改到 `monitor_snmp_histories`。 |
| DB-004 | 中 | `approval_processes`、`approval_steps` | 审批流程表无前缀,而模板表是 `sys_approval_templates`。 | 重建后统一为 `approval_templates`、`approval_processes`、`approval_steps`、`approval_workflows`。 |
| DB-005 | 中 | `sys_approval_workflows`、`sys_approval_workflow_steps` | 与 `sys_approval_templates.flow_config` 和 `approval_steps` 职责有重叠。 | 明确“模板流程配置”和“流程定义管理”的关系;如果新工作流已替代模板内 JSON,应迁移数据并下线旧字段。 |
| DB-006 | 中 | `navigation_links` | 导航组是 `sys_navigation_groups`,链接表无前缀。 | 重建后改为 `sys_navigation_links`。 |
| DB-007 | 中 | `metric_values`、`monitor_metric_histories`、`monitor_metrics_aggregate` | 监控时序有三套表:原始值、简化历史、聚合;当前控制器大量使用 `monitor_metric_histories`,`metric_values` 引用少。 | 重建后合并为 `monitor_metric_samples` + `monitor_metric_aggregates`。 |
| DB-008 | 已处理 | `monitor_dashboards`、`monitor_dashboard_panels` | 自定义大屏旧模型与路由已删除,统一使用 `monitor_dashboards` + `monitor_dashboard_panels`。 | 后续仅补齐新大屏 API/页面。 |
| DB-009 | 中 | `role_permissions` | GORM many2many 明确指定为 `role_permissions`,无 `iam_` 前缀。 | 重建后改为 `iam_role_permissions`。 |
| DB-010 | 中 | `sys_log_sources`、`sys_log_entries` | 旧日志采集/入库表,与当前日志中心外部数据源架构重复。 | 重建后删除,日志中心只保留 `monitor_log_datasources` 和外部查询结果。 |
| DB-011 | 中 | `ops_site_*`、`ops_snmp_*` | 站点拨测和 SNMP 属于监控域,但表名前缀使用 `ops_`。 | 重建后改为 `monitor_site_*`、`monitor_snmp_*`。 |
| DB-012 | 中 | `ai_runs`、`ops_sessions`、`ops_commands` | AI 运行表和人机执行会话跨 `ai_` / `ops_`,边界不清。 | 重建后改为 `ai_ops_sessions`、`ai_ops_commands`。 |
| DB-013 | 低 | `backend/model/monitor.go`、`deploy_tool.go` | 模型文件超过或接近项目红线,维护成本高。 | 后续按子域拆分:target/metric/dashboard/health_probe/tool_registry。 |
## 菜单域表清单
### 仪表盘
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 首页统计 | 多域聚合,无独立主表 | 统计来自资产、告警、K8s、流水线等表,合理。 |
| 自定义监控仪表盘 | `monitor_dashboards`、`monitor_dashboard_panels` | 已统一到监控大屏主表和面板表。 |
### 资产管理 / 云资源
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 服务器管理 | `asset_servers` | 前缀规范;字段较多但与 Agent/RDP/SSH 场景匹配。 |
| 主机组 | `asset_host_groups` | 放资产域合理。 |
| 云平台 | `asset_clouds` | 命名偏泛,实际是云平台类型/供应商。可考虑改为 `asset_cloud_platforms`。 |
| 云账号 | `asset_cloud_accounts` | 前缀规范;凭证字段需确认是否已统一走 `iam_credentials` 加密。 |
| 云区域 | `asset_regions` | 前缀规范;如果仅云区域,建议 `asset_cloud_regions` 更清晰。 |
| 域名管理 | `asset_domains` | 前缀规范。 |
| 资源型号 | `asset_resource_models` | 前缀规范。 |
| 云账单 | `asset_cloud_billings` | 前缀规范。 |
| 账单告警规则 | `monitor_billing_alert_rules` | 归入监控域合理,但与资产账单强关联,需文档化。 |
### Kubernetes
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 集群管理 | `kubernetes_clusters` | 当前统一 `kubernetes_` 前缀,虽较长但一致。 |
| 节点缓存 | `kubernetes_nodes` | 从集群同步缓存,合理。 |
| Pod 缓存 | `kubernetes_pods` | 从集群同步缓存,合理。 |
| Deployment 缓存 | `kubernetes_deployments` | 从集群同步缓存,合理。 |
| Service 缓存 | `kubernetes_services` | 从集群同步缓存,合理。 |
| Ingress 缓存 | `kubernetes_ingresses` | 从集群同步缓存,合理。 |
| 拓扑布局 | `kubernetes_topology_layouts` | 用户布局数据,合理。 |
建议:重建后统一改为 `k8s_`,后续不再新增 `kubernetes_` 表。
### 应用发布 / CI/CD
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 流水线 | `ops_pipelines` | 历史命名属 `ops_`,但该域现在已经有 `deploy_` 前缀,建议长期统一。 |
| 流水线运行 | `ops_pipeline_runs` | 同上;日志存在 `logs longtext`,数据增长需清理策略。 |
| 应用发布 | `deploy_app_releases` | 前缀规范。 |
| Git 仓库配置 | `deploy_pipeline_repos` | 可能与统一凭据 `iam_credentials` 存在职责重叠,当前通过 `credential_id` 关联可接受。 |
| 镜像仓库配置 | `deploy_pipeline_registries` | 同上。 |
| 发布环境 | `deploy_environments` | 前缀规范。 |
| 构建节点 | `deploy_build_nodes`、`deploy_build_master_config` | 前缀规范。 |
| 流水线成员 | `deploy_pipeline_members` | 前缀规范;直接用户 + 用户组双授权设计合理。 |
| 发布用户组 | `deploy_user_groups`、`deploy_user_group_members` | 前缀规范,但与 IAM 角色/组职责需边界清晰。 |
| ItemRole | `iam_item_roles`、`iam_user_item_roles` | 放 IAM 域合理,用于流水线正则授权。 |
| 工具配置 | `deploy_tools` | 前缀规范。 |
建议:重建后统一改为 `deploy_pipelines`、`deploy_pipeline_runs`。
### 监控告警
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 告警规则/事件 | `monitor_alert_rules`、`monitor_alert_events` | 主表合理;但规则模型重复是高风险问题。 |
| 告警条件/模板/升级/静默 | `monitor_alert_conditions`、`monitor_alert_notify_templates`、`monitor_alert_upgrades`、`monitor_alert_upgrade_records`、`monitor_alert_silences` | 前缀规范;需确认哪些已接入 UI/引擎。 |
| 通知渠道/联系人 | `monitor_notify_channels`、`monitor_alert_contacts`、`monitor_alert_contact_groups`、`monitor_alert_notify_policies`、`monitor_alert_notify_settings` | 前缀规范;通知设置/策略/模板职责较多,建议后续画数据流。 |
| Agent 指标 | `monitor_agent_reports`、`monitor_metrics_aggregate` | 前缀规范;按 hostname 关联服务器,删除服务器时有清理。 |
| Agent 任务/规则/告警 | `monitor_agent_tasks`、`monitor_agent_rules`、`monitor_agent_alerts` | 前缀规范。 |
| Agent 端口策略 | `monitor_agent_port_policy` | 未迁移,且表名非复数。 |
| 监控目标/指标 | `monitor_targets`、`monitor_metrics`、`monitor_metric_histories`、`monitor_metric_tags`、`metric_values` | 需要统一时序表职责和命名前缀。 |
| 健康探针 | `monitor_health_probes` | 前缀规范;结果不独立入库,随 Agent 心跳更新。 |
| Prometheus/Zabbix/日志/链路数据源 | `monitor_prometheus_datasources`、`monitor_zabbix_datasources`、`monitor_log_datasources`、`monitor_trace_datasources` | 前缀规范。 |
| 站点拨测 | `ops_site_tasks`、`ops_site_results`、`ops_site_alerts` | 功能属监控,前缀却是 `ops_`。 |
| SNMP | `ops_snmp_devices`、`ops_snmp_templates`、`ops_snmp_template_oids`、`ops_snmp_metrics`、`ops_snmp_interfaces`、`snmp_history` | 功能属监控;`snmp_history` 未迁移/未引用。 |
| 指标目录旧表 | `monitor_metric_data` | 需确认是否仍有 UI/引擎依赖;可能与 `monitor_metrics` 重复。 |
### 自动化运维
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 定时任务 | `ops_cron_jobs` | 前缀规范。 |
| 脚本库 | `ops_scripts` | 前缀规范。 |
| 执行记录 | `ops_task_executions` | 前缀规范。 |
| Ansible | `ops_ansible_playbooks`、`ops_ansible_jobs`、`ops_ansible_inventories` | 有模型和种子数据;需确认 UI 是否仍作为主功能。若已由 Go-native SSH 替代,可降级为 deprecated。 |
### AIOps / AI
| 功能 | 表 | 评价 |
| --- | --- | --- |
| LLM 配置 | `ai_llm_configs` | 前缀规范。 |
| 对话历史 | `ai_chat_histories` | 前缀规范。 |
| 告警分析轨迹 | `ai_analysis_traces` | 前缀规范。 |
| Agent CLI 运行 | `ai_runs`、`ai_run_messages`、`ai_run_spans` | 前缀规范。 |
| 能力注册/策略 | `ai_capabilities`、`ai_capability_policies` | 前缀规范。 |
| 人机执行会话 | `ops_sessions`、`ops_commands` | 与 AI Agent 强关联但用 `ops_`,边界需确认。 |
### 资源申请 / 审批
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 审批模板 | `sys_approval_templates` | 前缀规范。 |
| 审批实例 | `approval_processes` | 无前缀。 |
| 审批步骤 | `approval_steps` | 无前缀。 |
| 审批工作流 | `sys_approval_workflows`、`sys_approval_workflow_steps` | 前缀规范,但与模板内 `flow_config` 和实例步骤存在职责重叠。 |
建议:先确认现行前端使用旧模板流程还是新 workflow;再决定迁移方向。
### 安全审计
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 操作审计 | `sys_audit_logs` | 前缀规范。 |
| 审计策略 | `sys_audit_settings` | 前缀规范。 |
| 登录日志 | `sys_login_logs` | 前缀规范。 |
| 终端会话 | `sys_terminal_sessions` | 前缀规范。 |
| RDP 会话 | `sys_rdp_sessions` | 前缀规范。 |
| 会话命令 | `sys_session_commands` | 前缀规范。 |
### 系统管理 / IAM
| 功能 | 表 | 评价 |
| --- | --- | --- |
| 用户 | `iam_users` | 前缀规范。 |
| 角色 | `iam_roles` | 前缀规范。 |
| 权限 | `iam_permissions` | 前缀规范。 |
| 用户角色关系 | `iam_user_roles` | GORM many2many 指定,前缀规范。 |
| 角色权限关系 | `role_permissions` | GORM many2many 指定,无 `iam_` 前缀。 |
| LDAP | `iam_ldap_configs` | 前缀规范。 |
| 凭据 | `iam_credentials` | 前缀规范;建议继续作为全局凭据统一入口。 |
| 日志范围权限 | `monitor_log_scope_roles`、`monitor_user_log_scope_roles` | 属日志中心/监控域,放 `monitor_` 合理。 |
| 系统任务状态 | `sys_system_task_status` | 前缀规范。 |
| 站内导航 | `sys_navigation_groups`、`navigation_links` | 链接表无前缀。 |
## 疑似可清理候选
测试库重建时可直接删除;生产整改前仍需查数据量、最近写入时间、controller/frontend 是否仍有入口。
| 表/模型 | 判断依据 | 建议动作 |
| --- | --- | --- |
| `snmp_history` / `SNMPHistory` | 未 AutoMigrate,未被业务引用。 | 重建后删除模型。 |
| `sys_log_sources`、`sys_log_entries` | 旧日志入库模块,与日志中心外部数据源重复。 | 重建后删除。 |
| `monitor_custom_dashboards` | 与 `monitor_dashboards` 重复。 | 已删除模型与路由,重建后不再创建。 |
| `metric_values`、`monitor_metric_histories` | 时序职责重复。 | 重建后合并为 `monitor_metric_samples`。 |
| `ops_ansible_*` | 远程执行主路径已偏 Go-native SSH。 | 若确认无页面入口,重建后删除;否则保留在 `ops_`。 |
| `deploy_pipeline_repos`、`deploy_pipeline_registries` | Pipeline 已直接使用 `GitCredentialID` / `RegistryCredentialID`。 | 已删除模型、路由和前端旧配置入口,重建后不再创建。 |
## 后续整改顺序
1. **先统一命名和模型归属**:按 Schema v2 修改 `TableName()`、many2many tag、硬编码 SQL。
2. **处理重复模型**:合并 `AlertRule` / `MonitorAlertRule`、大屏表、指标时序表、审批 workflow/模板关系。
3. **删除废弃模型**:`SNMPHistory`、旧日志入库、旧仓库/镜像仓库配置、确认不用的 Ansible 表。
4. **重建测试库**:删除 SQLite 文件或 Docker 数据卷,让 AutoMigrate 从零建表。
5. **补充数据生命周期**:流水线日志、Agent 报告、指标样本、SNMP 样本、站点拨测结果、审计日志都需要保留期和清理任务。