Files
aiops/docs/db-table-audit.md
Logan.Li fd60361d93 chore: 统一本地服务器与远程仓库源码
- 合并 main 与 master 历史并以服务器结构为基线
- 保留迁移、数据保留、AWS 账单与部署安全能力
- 建立 SDD 规格和 CI 验证闭环
2026-08-05 20:03:25 +08:00

25 KiB
Raw Permalink Blame History

数据表与菜单域审计记录

审计范围: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。 已删除模型、路由和前端旧配置入口,重建后不再创建。

迁移清单之外的 8 个模型决策(2026-08-04)

以下清单由 TableName() 与原 AutoMigrate 列表逐项比对得出。生产库不得再通过启动期 AutoMigrate 隐式创建这些表;后续仅允许由版本化迁移创建已确认保留的表。

模型 / 表 决策 依据与后续动作
LogSource / sys_log_sources 保留 已有日志源 CRUD 路由。纳入首批基线迁移并保留数据。
LogEntry / sys_log_entries 保留 已有查询与 Agent 日志写入逻辑。纳入首批基线迁移,并在保留策略中按高频日志数据处理。
MetricData / monitor_metric_data DTO 化 仅被仪表盘作为 API 响应结构使用,不读写该表。后续移除 TableName(),不再创建或写入该表。
MetricTag / monitor_metric_tags 暂不建表 当前没有 controller、service 或前端调用。保留类型定义待“指标样本模型”统一设计完成,再以独立迁移启用。
MetricValue / monitor_metric_values 暂不建表 当前没有读写路径,且与 monitor_metric_histories 职责重叠。统一时序模型前不得创建新表。
MonitorDashboard / monitor_dashboards 废弃 无业务引用;当前大屏走既有配置与外部数据源路径。后续删除模型定义,不纳入迁移。
DashboardPanel / monitor_dashboard_panels 废弃 仅被废弃 MonitorDashboard 关联引用。后续随父模型删除,不纳入迁移。
SNMPHistory / snmp_history 废弃 无业务引用,SNMP 当前实际数据表为 ops_snmp_metrics。后续删除模型,不纳入迁移。

上述“暂不建表”和“废弃”均不执行生产 DROP TABLE;删除旧表须先完成数据量、最近写入时间、备份与恢复演练检查。

后续整改顺序

  1. 先统一命名和模型归属:按 Schema v2 修改 TableName()、many2many tag、硬编码 SQL。
  2. 处理重复模型:合并 AlertRule / MonitorAlertRule、大屏表、指标时序表、审批 workflow/模板关系。
  3. 删除废弃模型:SNMPHistory、旧日志入库、旧仓库/镜像仓库配置、确认不用的 Ansible 表。
  4. 重建测试库:删除 SQLite 文件或 Docker 数据卷,让 AutoMigrate 从零建表。
  5. 补充数据生命周期:流水线日志、Agent 报告、指标样本、SNMP 样本、站点拨测结果、审计日志都需要保留期和清理任务。