Files
opsxsql/docs/FEATURES.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

9.2 KiB

SQL-Platform-Pro 功能清单

生成时间: 2026-05-25 | 版本: v1.1

✅ 已完成功能

一、核心功能

1. 自助查询 (QueriesPage)

  • 多数据库类型查询 (MySQL/PostgreSQL/Redis/MongoDB)
  • CodeMirror 6 SQL 编辑器 (语法高亮 + 自动补全)
  • SQL 模板库 (13 个预置模板,按 DB 类型适配)
  • Ctrl+Enter 执行 / Ctrl+Shift+F 格式化
  • 查询结果表格 (点击单元格弹详情 + JSON 格式化)
  • 查询历史记录 (500 条/用户上限)
  • 收藏查询 / 快捷查询
  • Schema 侧边栏 (MySQL 三级树 / Redis 目录树 / MongoDB 集合) — 已加宽 (grid-cols-5 2:3 布局)
  • Redis key 点击自动插入查询命令 (GET/HGETALL/LRANGE/SMEMBERS/ZRANGE) — onInsert prop
  • 两阶段 schema 加载 (选实例加载表名, 选库加载列名)
  • 数据库品牌图标 (techicons.dev SVG)
  • 实例按权限组过滤 (/instances/accessible?access_type=readonly)

2. 数据变更审批流 (TicketsPage + TicketCreatePage)

  • 工单创建 — 单页面一键提交 (原三步向导已简化)
  • DB 类型按频率排序 (MySQL → Redis → PostgreSQL → MongoDB)
  • 选择 DB 类型后自动筛选目标实例
  • 库表浏览面板 (点击展开库/表/字段,辅助填写目标库)
  • Redis 目录树按 : 分隔构建层级
  • 工单编号生成 (20位: 时间戳+微秒+序号)
  • 工单状态机 (pending → reviewing → approved → scheduled → executing → success/failed)
  • 多步审批流 (standard / parallel / any_one / condition)
  • 审批人限定 (必须在权限组成员中)
  • 工单撤销 (pending/reviewing 状态可撤销)
  • 执行结果结构化展示 (状态/行数/耗时/验证/错误/警告)
  • 当前审核人显示
  • 工单快速筛选 (待审批/进行中/已完成/已拒绝)
  • 实例按 DB 类型筛选
  • Redis 目录树浏览 + 点击插入命令
  • MongoDB 集合浏览 + 点击插入命令
  • SQL 提交前强制审核规则检查

3. SQL 审核引擎

  • 127 条审核规则 (MySQL 67 / PostgreSQL 31 / Redis 25 / MongoDB 31)
  • 6 个分组 (DDL/DML/DCL/DQL/security/performance)
  • MySQL 安全规则 SEC-001~009
  • Redis 规则去重优化 (CMD-001 覆盖 SEC-003)
  • 规则 CRUD (创建/读取/更新/删除/开关)
  • 规则统计和筛选
  • 评分系统 (severity: error/warning/info)

3.1 SQL 检测按钮 (TicketCreatePage)

  • 提交按钮旁新增「SQL 检测」按钮
  • 验证通过前提交按钮置灰 + 提示文字
  • SQL 内容变化自动重置验证状态
  • 定时时间显示为醒目红色字体

3.2 定时执行工单 (ticket_scheduler.py)

  • 基于 APScheduler + SQLite 持久化的定时调度器 (apscheduler.db)
  • Ticket 模型新增 scheduled_at 字段
  • 新增 SCHEDULED 状态 (approved ↔ scheduled → executing → success/failed)
  • API: GET /tickets/scheduled/list 定时工单列表
  • API: POST /tickets/{id}/cancel-schedule 取消定时
  • API: GET /tickets/scheduled/stats 定时统计
  • 前端: TicketCreatePage 定时执行 datetime picker
  • 前端: AutoTaskPage 定时任务管理页

3.3 日志自动清理 (log_cleanup.py)

  • 系统设置新增 cleanup 分组 (6 项配置)
  • 启用自动清理开关
  • 清理执行时间 (默认凌晨 3 点)
  • 工单保留天数 (默认 90 天)
  • 审计日志保留天数 (默认 180 天)
  • 查询历史保留天数 (默认 30 天)
  • 定时任务日志保留天数 (默认 30 天)
  • 只清理已完成/已拒绝的工单,0 天 = 不清理
  • API: POST /settings/cleanup/run 手动触发清理
  • API: GET /settings/cleanup/preview 预览待清理数据
  • 前端: PlatformConfigPage 清理分组 + CleanupActions 预览/手动清理按钮
  • APScheduler cron job 每天 03:00 自动执行

4. 审批流管理 (WorkflowPage)

  • 审批流 CRUD (创建/编辑/删除)
  • 步骤管理 (拖拽排序 + 类型选择)
  • 3 种高级步骤类型 (parallel 会签 / any_one 或签 / condition 条件分支)
  • 条件评估引擎 (sql_type/db_type/risk_level/priority)
  • 超时检查 (timeout_hours + auto_approve_on_timeout)
  • 默认审批流绑定 (is_default + is_active)

二、数据源管理

5. 实例管理 (InstancePage)

  • 实例 CRUD (4 种 DB 类型)
  • 连接测试 (MySQL/PG/Redis/MongoDB/SQLite)
  • 实例密码 AES-256-GCM 加密 (向后兼容明文)
  • 卡片视图 + 列表视图
  • 按类型 Tab 筛选 (全部/MySQL/PostgreSQL/Redis/MongoDB)
  • 品牌图标展示
  • 编辑弹框 (EditInstanceDialog 可复用)
  • 克隆实例 (名称自动加 "-副本")
  • 实例详情页 (6 tab: 概览/表/查询/用户/慢查询/进程)
  • Redis 详情页 (4 tab: Keys/监控/CLI/性能)
  • MongoDB 详情页 (数据库/集合/统计/查询CLI)

6. 库表浏览

  • MySQL: SHOW DATABASES → information_schema.TABLES → COLUMNS
  • PostgreSQL: pg_database → pg_tables → column list
  • Redis: CONFIG GET databases → db0~db{N} (无表概念)
  • MongoDB: list_database_names → list_collection_names
  • 统一走后端 listDatabases/listTables API

三、权限与安全

7. 权限管理 (InstanceGroupPage)

  • 权限组 CRUD
  • 2 种权限类型 (只读查看 / 写入变更)
  • Transfer 穿梭框选择数据库
  • 用户-权限组关联
  • 实例-权限组关联 (中间表 instance_group_members)
  • 7 个操作权限 action
  • 角色权限映射 (admin/dba/auditor/developer)
  • admin 也按权限组过滤 (无 bypass)

8. 用户管理 (UsersPage)

  • 用户 CRUD (4 角色: admin/dba/auditor/developer)
  • bcrypt 4.0 密码哈希
  • 默认用户种子数据 (4 个: admin/zhangsan/laoliu/lurenjia)
  • guest 角色已彻底禁用

9. 审计日志 (AuditLogsPage)

  • 全操作审计日志 (实例/用户/工单/查询 CRUD)
  • 日志筛选 (时间范围/用户/操作类型)
  • auditor 角色只读访问

四、系统设置

10. 通知管理 (NotificationPage)

  • 通知渠道配置 (DingTalk/Feishu/Email)
  • 真实消息发送 (非模拟)
  • 通知模板 (创建/通过/拒绝/执行完成)
  • 钉钉/飞书换行适配
  • 测试发送功能

11. 系统配置 (PlatformConfigPage)

  • 18 项配置 (查询控制 7 + 安全 3 + 工单 2 + 清理 6)
  • 分组卡片布局 (布尔→开关/整数→数字/字符串→文本)
  • 批量保存 + 变更指示 + 重置默认值
  • 查询接口集成 (审批检查/长度检查)
  • 设置种子数据机制 (settings_seeds.py 统一管理所有设置项)
  • _ensure_settings 启动时自动补缺失配置
  • SETTING_GROUPS 分组元信息

12. 公告管理 (AnnouncementPage)

  • 公告 CRUD (Markdown 内容)
  • 发布/撤回状态管理

13. 审核规则管理 (AuditRulesPage)

  • 规则列表 (6 组 Tab: DDL/DML/DCL/DQL/security/performance)
  • 规则开关 (toggle)
  • 规则统计
  • 按数据库类型筛选
  • 规则种子 (POST /audit-rules/seed/{db_type})

五、基础设施

14. 前端优化

  • React.lazy 代码分割 (18 页面懒加载)
  • Vite manualChunks (vendor 拆分)
  • 首屏 -44% (2676KB → 1438KB)
  • 暗色主题 (--dg- CSS 变量体系)
  • 响应式布局
  • 骨架屏加载动画
  • 确认弹框 (useConfirm hook, 替代浏览器 confirm)
  • Toast 通知 (右下角 3 秒消失)

15. 后端基础设施

  • JWT 认证 (30 分钟过期)
  • run.sh PID 管理脚本 (start/stop/restart/status/logs/build/test)
  • Alembic 数据库迁移
  • Docker + docker-compose 部署
  • CORS 策略
  • 请求日志中间件

🔨 开发中 / 待实现

短期 (P1)

  • 通知功能前端页面完善
  • 两个页面 Redis 树抽取为共享组件
  • LDAP 认证对接 (后端已有 LdapConfig 模型)

中期 (P2)

  • Schema 漂移检测 (后端有 SchemaSnapshot/SchemaDrift 模型)
  • 快照对比可视化
  • 数据脱敏规则 (MaskingRule 模型)
  • SQL 格式化后端 (sqlparse)
  • EXPLAIN 真实解析
  • 慢查询实时推送 (WebSocket)
  • CSV 导出功能对接

远期 (P3)

  • 库级权限控制
  • 查询审批工作流
  • 多租户支持
  • 审批流模板持久化
  • 集群模式支持

📊 项目统计

|| 指标 | 数值 | ||------|------| || 总提交 | 56+ | || 源文件 | 328+ | || 后端代码 | ~23,000 行 Python | || 前端代码 | ~15,000 行 TypeScript/TSX | || API 路由 | 152+ 条 | || 测试用例 | 1,075+ 个 | || 数据库表 | 28+ 张 | || ORM 模型 | 22+ 个 | || 前端页面 | 26+ 个 | || 审核规则 | 127 条 | || 系统配置 | 18 项 | || 定时调度 | APScheduler + SQLite 持久化 |

🏗️ 数据库连接器支持矩阵

数据库 连接库 查询 执行 审核 库表浏览
MySQL aiomysql ✅ ✅ ✅ (67规则) ✅
PostgreSQL asyncpg ✅ ✅ ✅ (31规则) ✅
Redis redis.asyncio ✅ ✅ ✅ (25规则) ✅ (Keys树)
MongoDB pymongo ✅ ✅ ✅ (31规则) ✅ (集合)
SQLite sqlite3 ✅ — — —