Files
opsxsql/docs/AUDIT_REPORT.md
T
logan 0995abce08 feat: 查询页面重构 — 去掉新建查询按钮, 默认直接显示编辑器 + 右侧历史抽屉
1. QueriesPage 重构:
   - 去掉两段式切换(历史列表→新建查询面板)
   - 默认直接显示 SQL 编辑器,无需点'新建查询'
   - 实例+数据库选择器紧凑排列在顶栏
   - 执行按钮移到顶栏右侧,操作更便捷
   - 查询历史改为右侧可折叠抽屉(点击'历史'按钮展开)
   - 全高布局 h-[calc(100vh-3rem)],编辑区和结果区更宽敞
   - Schema 导航侧边栏、快捷模板、CSV导出等保留

2. 文档更新:
   - FEATURES.md: 补充定时执行、SQL检测、日志清理、系统设置种子机制
   - ARCHITECTURE.md: 补充 APScheduler+SQLite 持久化调度、日志清理服务、Settings Seeds
   - ROADMAP.md: 标记已完成功能,更新P1-P3进度
   - AUDIT_REPORT.md: 更新服务/文件/测试数量统计
2026-05-25 00:35:57 +08:00

21 KiB
Raw Blame History

SQL-Platform-Pro 全面架构审计报告

生成时间: 2026-05-25
项目路径: ~/devops/sql-platform
Git 总提交数: 56+


1. 项目结构概览

1.1 技术栈

|| 层级 | 技术 | ||------|------| || 前端框架 | React 19 + TypeScript 5.9 + Vite 7 | || UI 组件库 | Radix UI + Tailwind CSS (shadcn/ui 风格) | || 后端框架 | FastAPI + SQLAlchemy 2 (异步) | || 数据库 | SQLite (开发) / 可切换 MySQL/PostgreSQL | || 多数据库支持 | MySQL (aiomysql), PostgreSQL (asyncpg), MongoDB (motor), Redis (redis) | || 定时调度 | APScheduler 3.11.2 + SQLite 持久化 (apscheduler.db) | || 容器化 | Docker Compose + Dockerfile (前后端) | || 数据库迁移 | Alembic |

1.2 目录结构

sql-platform/
├── backend/                    # Python FastAPI 后端
│   ├── app/
│   │   ├── api/v1/endpoints/   # 29 个 API 端点文件
│   │   ├── core/               # 配置/安全/数据库/权限
│   │   ├── dependencies/       # 依赖注入
│   │   ├── models/             # 16 个 ORM 模型
│   │   ├── schemas/            # 17 个 Pydantic Schema
│   │   ├── services/           # 31 个业务服务
│   │   └── utils/              # 工具函数
│   ├── alembic/                # 数据库迁移
│   ├── tests/                  # 46 个测试文件
│   ├── venv/                   # Python 虚拟环境
│   └── requirements.txt
├── frontend/                   # React 前端
│   ├── src/
│   │   ├── api/               # 15 个 API 模块
│   │   ├── components/        # 9 个自定义组件 + 50 个 UI 组件
│   │   ├── hooks/             # 5 个自定义 Hooks
│   │   ├── pages/             # 26 个页面
│   │   ├── lib/               # 工具函数/常量
│   │   ├── constants/         # 菜单常量
│   │   └── types/             # TypeScript 类型定义
│   ├── dist/                   # 构建产物
│   ├── public/                 # 静态资源 (DB logos)
│   └── package.json
├── docker-compose.yml
├── run.sh / run.bat
└── 文档: ROADMAP.md, RELEASE_NOTES.md, TDD_PLAN.md 等

1.3 源代码规模

指标 数值
源文件总数 (排除 dist/venv/node_modules/git) 326
后端 Python 总行数 47,003
前端 TS/TSX 总行数 23,486
项目总代码行数 ~70,489

2. 后端模型统计 (16 个模型)

模型文件 类名 主要字段数 说明
user.py User 10 id, username, display_name, email, phone, hashed_password, role, is_active, last_login, timestamps
instance.py Instance 17 id, name, db_type, host, port, username, password, database, env, description, status, version, access_mode, workflow_id, excluded_databases, mask_fields, group_id
instance_group.py InstanceGroup 9 id, name, description, db_type, permissions, access_type, allowed_databases, is_active, timestamps
ticket.py Ticket 17 id, ticket_no, title, db_type, instance_id, target_database, sql_content, rollback_sql, status, priority, applicant_id, approver_id, reason, audit_result, execute_result, timestamps
workflow.py WorkflowDefinition 6 id, name, description, category, is_default, is_active, timestamps
workflow.py WorkflowVersion 8 id, workflow_id, version_number, version_name, is_active, steps_snapshot, flow_config_snapshot, change_summary
workflow.py WorkflowStep 13 id, workflow_id, step_number, name, step_type, approver_role, approver_ids, is_required, timeout_hours, auto_approve_on_timeout, conditions
workflow.py TicketApproval 15 id, ticket_id, workflow_id, step_number, step_type, approver_id, actual_approver_id, action, comment, transfer, timestamps
workflow.py WorkflowExecutionLog 9 id, workflow_id, ticket_id, step_id, event_type, actor_id, context_data, timestamp
audit_log.py AuditLog 17 id, user_id, username, action, target_type, target_id, detail, db_type, database_name, execution_time_ms, rows_affected, result_status, query_content, ip_address
audit_rule.py AuditRule 10 id, name, description, rule_type, severity, db_type, pattern, value, is_enabled, message
query_history.py QueryHistory 14 id, user_id, username, instance_id, db_type, database_name, query_content, query_type, execution_time_ms, result_rows, is_success, is_favorite
query_history.py QuickQueryModel 12 id, name, description, query_content, db_type, database_pattern, is_shared, created_by, usage_count
scheduled_task.py ScheduledTask 15 id, name, task_sql_type, instance_id, target_db, sql_content, cron_expression, is_enabled, run_count, next_run_at
scheduled_task.py ScheduledTaskLog 8 id, task_id, status, affected_rows, duration_ms, error_message, timestamps
announcement.py Announcement 6 id, title, content, is_published, published_at, timestamps
backup.py Backup 9 id, instance_id, title, database, filename, size_bytes, status, created_by
masking_rule.py MaskingRule 9 id, instance_id, database, table_name, column_name, mask_type, mask_config
notification.py NotificationChannel 6 id, name, channel_type, config, is_enabled
notification_template.py NotificationTemplate 7 id, name, event_type, channel_type, title_template, body_template
ldap_config.py LdapConfig 9 id, ldap_host, ldap_port, use_ldaps, admin_dn, admin_password, search_filter, base_dn
schema_revision.py SchemaRevision 8 id, instance_id, database, revision, ddl_content, checksum, applied_by, status
system_setting.py SystemSetting 8 id, key, value, value_type, group, label, description, default_value, sort_order

模型总计: 22 个类 (16 个文件), ~110+ 字段定义


3. API 端点统计 (29 个文件, 146 条路由)

端点文件 路由数 行数 功能说明
ticket.py 11 1,073 SQL 工单全生命周期管理
redis.py 11 275 Redis 连接/查询/Key 管理
instance.py 10 295 数据库实例 CRUD
instance_detail.py 10 348 实例详情 (表/字段/索引)
instance_group.py 10 437 权限组管理
audit_rule.py 9 206 审核规则管理
scheduled_task.py 8 287 定时任务调度
workflow.py 7 273 审批流定义/版本/步骤
mongo.py 6 256 MongoDB 查询/集合浏览
query_history.py 6 111 查询历史/快速查询
sql_assistant.py 6 182 AI SQL 助手
masking_rule.py 5 337 数据脱敏规则
notification.py 5 153 通知渠道/模板
user.py 5 116 用户管理
db_types.py 4 266 多数据库类型支持
dictionary.py 4 70 数据字典
settings.py 4 162 系统设置
announcement.py 4 93 公告管理
auth.py 3 58 认证 (登录/LDAP)
backup.py 3 62 数据库备份
ldap_config.py 3 138 LDAP 配置
pool.py 3 64 连接池管理
schema_drift.py 3 85 Schema 漂移检测
query.py 2 251 SQL 查询执行
rollback.py 2 176 回滚 SQL 生成
audit.py 1 27 审计日志查询
dashboard.py 1 62 仪表盘数据
impact.py 1 33 影响分析
合计 146 5,896

4. 前端页面统计 (26 个页面, 14,008 行)

页面文件 行数 功能说明
InstancePage.tsx 1,452 数据库实例管理 (最大页面)
TicketCreatePage.tsx 1,192 创建 SQL 工单
QueriesPage.tsx 896 SQL 查询编辑器
UsersPage.tsx 877 用户管理
Dashboard.tsx 825 仪表盘
WorkflowPage.tsx 808 审批流程管理
TicketDetailPage.tsx 808 工单详情
TicketsPage.tsx 742 工单列表
ConfigPlatformPage.tsx 700 平台配置
DataDictionaryPage.tsx 688 数据字典
AuditRulesPage.tsx 596 审核规则
AuditLogsPage.tsx 555 审计日志
InstanceGroupPage.tsx 465 权限组管理
NotificationPage.tsx 456 通知管理
RolesPage.tsx 417 角色权限
MongoDBDetailPage.tsx 386 MongoDB 浏览
AnnouncementPage.tsx 349 公告管理
LdapConfigPage.tsx 335 LDAP 配置
RedisDetailPage.tsx 309 Redis 浏览
AutoTaskPage.tsx 293 定时任务
InstanceDetailPage.tsx 260 实例详情
PlatformConfigPage.tsx 209 平台配置页
NotificationsPage.tsx 180 通知列表
LoginPage.tsx 134 登录页
SettingsPage.tsx 56 设置页
Home.tsx 20 首页占位

自定义组件 (9 个, 1,706 行)

组件文件 行数 功能说明
SchemaSidebar.tsx 614 数据库 Schema 树形浏览
SqlEditor.tsx 431 CodeMirror SQL 编辑器
EditInstanceDialog.tsx 276 实例编辑对话框
Layout.tsx 126 全局布局/侧边栏
SkeletonCard.tsx 65 骨架屏加载
ConfirmDialog.tsx 59 确认对话框
FormDialog.tsx 53 通用表单对话框
PageHeader.tsx 55 页面头部
EmptyState.tsx 27 空状态占位

另外有 50 个 shadcn/ui 基础组件 (components/ui/)。

前端 API 模块 (15 个)

auth.ts, dashboard.ts, dbTypes.ts, dictionary.ts, instance.ts, instanceDetail.ts, instanceGroup.ts, mongo.ts, notification.ts, query.ts, redis.ts, request.ts, ticket.ts, user.ts, workflow.ts


5. 后端服务统计 (31 个服务文件, 22,043 行)

服务文件 行数 功能说明
mysql_audit_rules.py 2,199 MySQL 审核规则库
redis_audit_rules.py 1,869 Redis 审核规则库
audit_engine_v2.py 1,699 审核引擎 V2
ticket_executor.py 1,688 工单执行器
mongodb_audit_rules.py 1,638 MongoDB 审核规则库
workflow_engine.py 1,319 工作流引擎
postgres_audit_rules.py 1,289 PostgreSQL 审核规则库
query_service.py 1,261 查询服务
audit_engine.py 790 审核引擎 V1
mongo_connector.py 780 MongoDB 连接器
explain_service.py 789 EXPLAIN 执行计划分析
audit_rule_seeds.py 637 审核规则种子数据
rollback_generator.py 836 回滚 SQL 生成
data_masker.py 401 数据脱敏
query_history_service.py 451 查询历史服务
backup_executor.py 351 备份执行器
db_connector.py 345 数据库连接器
sql_assistant.py 342 AI SQL 助手
impact_analyzer.py 315 影响分析
schema_drift_detector.py 314 Schema 漂移检测
redis_validator.py 280 Redis 命令验证
role_permissions.py 279 角色/权限服务
redis_connector.py 269 Redis 连接器
sql_analyzer.py 255 SQL 分析器
dictionary_service.py 240 数据字典服务
notification_sender.py 238 通知发送
connection_pool.py 228 连接池管理
audit_rule_seeds_v2.py 500 审核规则种子 V2
instance_service.py 134 实例服务
settings_seeds.py 136 设置种子数据
workflow_seeds.py 93
audit_log_service.py 78
ticket_scheduler.py 🆕 ~200
log_cleanup.py 🆕 ~180

6. 测试统计 (46 个测试文件, 1,075 个测试)

测试总数: 1,075 个测试用例

Top 10 测试文件

测试文件 测试数 覆盖领域
test_query_service.py 75 查询服务
test_ticket_executor.py 67 工单执行器
test_audit_engine_v2.py 65 审核引擎 V2
test_query_history_service.py 47 查询历史服务
test_masking_rule.py 45 脱敏规则
test_explain.py 40 EXPLAIN 分析
test_sql_assistant.py 37 SQL 助手
test_notification.py 35 通知系统
test_user.py 34 用户管理
test_sql_analyzer.py 31 SQL 分析器

测试分布

测试数区间 文件数
50+ 3
30-49 5
20-29 6
15-19 7
10-14 12
5-9 8
<5 5

7. Git 历史 (56 次提交)

最近 30 次提交

9813741 feat: SchemaSidebar 加宽 + Redis key 点击插入查询命令到编辑器
2f76482 refactor: Redis 树取长补短 — 单列内嵌详情 + 类型颜色图标 + 左竖线层级
327ab33 feat: Redis Keys 目录树结构浏览 — 按 : 分隔符构建层级树
ed13243 feat: 多数据库类型支持 — Redis/MongoDB/PostgreSQL 数据库+表浏览
fb16723 fix: TicketCreatePage 去掉优先级选择器+修复Redis实例切换后database残留触发MySQL tables请求
08f0f88 feat: 工单列表重设计+权限组实例过滤+通知修复
88d064e feat: 权限组重构为一组双Transfer(只读+写入) + 用户管理加权限组关联
39d9600 refactor: 权限组从一组一类型改为一组同时包含readonly+write实例
40868c6 feat: 权限组创建改为双Transfer同时配置只读+写入
128de64 feat: 数据源编辑加排除数据库+脱敏字段+审批流关联; 权限组Transfer改为选择实例
4111e1e refactor: 权限组简化为2组(readonly/write) + Transfer穿梭框选择数据库
8161bcf feat: 权限组简化 + 工单撤销按钮
b80d383 refactor: 重构权限组系统 — 新增 access_type/allowed_databases 字段 + 角色权限服务
35a014e feat: 查询页增强 + 权限体系优化
aa2e26c feat: 查询页目标数据库改为下拉选择
e6ab5bf feat: SchemaSidebar 三级树结构 — 库→表→字段 (类似 Navicat)
6a8c4d9 feat: Redis/MySQL 加载骨架屏 loading 效果
ca99f0e fix: 工单提交422错误处理 + SQL模板占位符校验
0aa4595 fix: 查询模板占位符替换 + _auto_add_limit 跳过非SELECT语句 + 默认用户密码修正
0fb947d feat: TicketCreatePage tab化 + SchemaSidebar + Redis快速搜索 + Dashboard导航修复
8471f36 init
c7fccf9 feat: 三大核心功能完成 — query_history持久化 + EXPLAIN真实解析 + Dashboard修复
1fcb984 fix: Dashboard 页面崩溃修复 + 真实 API 数据对接
8b921c6 refactor: mock清理+安全配置+通用组件+菜单优化
ec3a03c docs: 添加 v0.1.0 Release Notes
4ac2528 fix: 审核引擎优化 + 执行结果结构化展示
9f56e86 fix: 移除所有弹框遮罩层点击关闭 — 防止输入时误触关闭
47f077c test: instance端点扩展测试 (8→17) + 数据库列补齐修复
305bbb1 test: P2测试覆盖 — user/pool/schema_drift端点 43个新测试 (895→1017全通过)
b39c426 fix: merge后14个测试修复+前端TS编译修复 - 895/895通过+前端零错误

开发趋势

  • 高频迭代: 近期大量 feat/refactor 提交,围绕权限体系、多数据库支持、UI 优化
  • 质量关注: 测试修复、编译修复、错误处理等 fix 提交占比约 30%
  • 最新方向: Schema 浏览增强 (Redis 目录树、多数据库类型支持)

8. 依赖统计

后端依赖 (requirements.txt: 20 个包)

包名 版本 用途
fastapi >=0.104.0 Web 框架
uvicorn[standard] >=0.24.0 ASGI 服务器
sqlalchemy[asyncio] >=2.0.23 异步 ORM
aiosqlite >=0.19.0 SQLite 异步驱动
pydantic >=2.5.0 数据校验
pydantic-settings >=2.1.0 配置管理
python-jose[cryptography] >=3.3.0 JWT 令牌
passlib[bcrypt] >=1.7.4 密码哈希
python-multipart >=0.0.6 文件上传
cryptography >=41.0.0 加密库
sqlparse >=0.4.4 SQL 解析
alembic >=1.13.0 数据库迁移
aiomysql >=0.2.0 MySQL 异步驱动
asyncpg >=0.29.0 PostgreSQL 异步驱动
motor >=3.3.0 MongoDB 异步驱动
pymongo >=4.6.0 MongoDB 驱动
httpx >=0.25.0 HTTP 客户端
aiosmtplib >=3.0.0 邮件发送
redis >=5.0.0 Redis 客户端

前端依赖

dependencies: 53 个包 (含 Radix UI 全家桶 28 个, CodeMirror 9 个, ECharts/Recharts 等)
devDependencies: 17 个包 (Vite 7, TypeScript 5.9, ESLint, Tailwind CSS 等)


9. 数据库状态 (SQLite)

表统计: 28 张表

表名 行数 说明
audit_rules 117 审核规则 (预置种子数据)
audit_logs 69 审计日志
system_settings 13 系统设置项
workflow_steps 28 工作流步骤
workflow_definitions 12 工作流定义
ticket_approvals 12 工单审批记录
query_histories 24 查询历史
tickets 6 SQL 工单
users 6 用户
instances 4 数据库实例
user_groups 3 用户组
instance_group_members 4 权限组成员
instance_groups 1 权限组
notification_channels 2 通知渠道
announcements 1 公告
alembic_version 1 迁移版本
backups 0 备份记录
masking_rules 0 脱敏规则
ldap_config 0 LDAP 配置
notification_templates 0 通知模板
query_templates 0 查询模板
quick_queries 0 快速查询
scheduled_tasks 0 定时任务
scheduled_task_logs 0 定时任务日志
schema_revisions 0 Schema 版本
slow_logs 0 慢查询日志
workflow_execution_logs 0 工作流执行日志
workflow_versions 0 工作流版本

数据总量: 28 张表, ~357 行数据


10. 功能模块完整度评估

功能模块 后端 前端 测试 状态
用户认证 (JWT/LDAP) ✅ ✅ ✅ (8+34) 🟢 完整
数据库实例管理 ✅ ✅ ✅ (17+16+6) 🟢 完整
SQL 查询执行 ✅ ✅ ✅ (75+22) 🟢 完整
工单管理 ✅ ✅ ✅ (67+13) 🟢 完整
审批工作流 ✅ ✅ ✅ (27) 🟢 完整
审核引擎 (V1+V2) ✅ ✅ ✅ (23+65) 🟢 完整
审核规则 ✅ ✅ ✅ (22+12+13) 🟢 完整
数据脱敏 ✅ ✅ ✅ (45) 🟢 完整
仪表盘 ✅ ✅ ✅ (12) 🟢 完整
Redis 管理 ✅ ✅ ✅ (14) 🟢 完整
MongoDB 管理 ✅ ✅ ✅ (30) 🟢 完整
Schema 浏览 ✅ ✅ ✅ (24+17+13+9) 🟢 完整
查询历史 ✅ ✅ ✅ (47) 🟢 完整
备份恢复 ✅ ❌* ✅ (22) 🟡 后端完整,前端无独立页面
定时任务 ✅ ✅ - 🟡 无专项测试
公告管理 ✅ ✅ ✅ (24) 🟢 完整
通知系统 ✅ ✅ ✅ (35) 🟢 完整
数据字典 ✅ ✅ ✅ (7) 🟢 完整
回滚 SQL ✅ ✅ ✅ (10) 🟢 完整
EXPLAIN 分析 ✅ ✅ ✅ (40) 🟢 完整
SQL 助手 (AI) ✅ ✅ ✅ (37)
权限组 ✅ ✅ ✅ (20+21+14+16)
系统设置 ✅ ✅ ✅ (18+10)
定时执行工单 🆕 ✅ ✅ —
日志自动清理 🆕 ✅ ✅ —
SQL 检测按钮 🆕 — ✅ —
设置种子数据 🆕 ✅ — —
LDAP 配置 ✅ ✅ ✅ (18)
Schema 漂移 ✅ ✅ ✅ (24+13+9)
连接池 ✅ - ✅ (21+12)

11. 总结

项目规模

  • ~70,500 行源代码 (后端 47K + 前端 23.5K)
  • 146 条 API 路由,覆盖 29 个功能域
  • 1,075 个测试用例,46 个测试文件
  • 22 个 ORM 模型,28 张数据库表
  • 26 个前端页面,9 个自定义组件

项目成熟度: ⭐⭐⭐⭐ (高)

优势:

  1. 全栈 TDD 驱动开发,1,075 个测试确保质量
  2. 多数据库完整支持 (MySQL/PostgreSQL/MongoDB/Redis)
  3. 企业级功能完备 (审批流、审核引擎、权限组、数据脱敏)
  4. 代码组织清晰,分层合理 (endpoint → service → model)

待改进:

  1. 部分大文件需要拆分 (InstancePage 1,452行, ticket.py 1,073行)
  2. 审核规则库占用大量代码 (MySQL 2,199行, Redis 1,869行)
  3. 备份功能缺少独立前端页面
  4. 14 张表数据为空 (部分功能尚未使用)
  5. motor 在 requirements.txt 中重复出现