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: 更新服务/文件/测试数量统计
This commit is contained in:
logan committed 2026-05-25 00:35:57 +08:00
1 parent 00db0e5bca
commit 0995abce08
5 files changed
+534 -727

No files matched your search

+86 -30
View File
@@ -1,6 +1,6 @@
# SQL-Platform-Pro 系统架构文档
> 生成时间: 2026-05-24 | 最新 Commit: 9813741
> 生成时间: 2026-05-25 | 最新 Commit: 9813741+
## 1. 系统定位
@@ -8,16 +8,17 @@
## 2. 技术栈
| 层级 | 技术 | 版本 |
|------|------|------|
| 后端框架 | FastAPI + SQLAlchemy 2 async | Python 3.11+ |
| 数据库 | SQLite (开发) | aiomysql / asyncpg / redis.asyncio / pymongo |
| 前端框架 | React 19 + TypeScript | Vite 7 |
| UI 组件 | shadcn/ui + Tailwind CSS 4 | Radix UI |
| 代码编辑器 | CodeMirror 6 | @codemirror/lang-sql |
| 图表 | Recharts | — |
| 认证 | JWT (30min) + bcrypt 4.0 | — |
| 部署 | Docker + docker-compose | run.sh PID 管理 |
|| 层级 | 技术 | 版本 |
||------|------|------|
|| 后端框架 | FastAPI + SQLAlchemy 2 async | Python 3.11+ |
|| 数据库 | SQLite (开发) | aiomysql / asyncpg / redis.asyncio / pymongo |
|| 定时调度 | APScheduler 3.11.2 + SQLite 持久化 | apscheduler.db |
|| 前端框架 | React 19 + TypeScript | Vite 7 |
|| UI 组件 | shadcn/ui + Tailwind CSS 4 | Radix UI |
|| 代码编辑器 | CodeMirror 6 | @codemirror/lang-sql |
|| 图表 | Recharts | — |
|| 认证 | JWT (30min) + bcrypt 4.0 | — |
|| 部署 | Docker + docker-compose | run.sh PID 管理 |
## 3. 系统架构图
@@ -27,23 +28,29 @@
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Dashboard │ │ Queries │ │ Tickets │ │ Instances│ │
│ └─────┬────┘ └─────┬────┘ └─────┬────┘ └─────┬────┘ │
│ ┌──────┴──────┐ ┌────┴─────┐ ┌───┴──────┐ │
│ │ SchemaSide │ │ SqlEditor│ │ Workflow │ │
│ │ bar(Redis树)│ │ (CM6) │ │ Page │ │
│ └─────────────┘ └──────────┘ └──────────┘ │
│ ┌──────┴──────┐ ┌────┴─────┐ ┌───┴──────┐ ┌──┴───────┐ │
│ │ SchemaSide │ │ SqlEditor│ │ Workflow │ │AutoTask │ │
│ │ bar(Redis树)│ │ (CM6) │ │ Page │ │Page │ │
│ └─────────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ↕ axios /api/v1 │
├─────────────────────────────────────────────────────────────┤
│ 后端 (FastAPI) │
│ ┌────────────────────────────────────────────────────┐ │
│ │ API Layer (29 endpoints) │ │
│ │ API Layer (29+ endpoints) │ │
│ │ auth | user | instance | ticket | query | audit │ │
│ │ audit_rule | notification | workflow | settings │ │
│ │ ticket_scheduler | log_cleanup │ │
│ └──────────────────────┬─────────────────────────────┘ │
│ ┌──────────────────────┴─────────────────────────────┐ │
│ │ Service Layer (31 services) │ │
│ │ Service Layer (33+ services) │ │
│ │ query_service | audit_engine | ticket_executor │ │
│ │ instance_service | notification_sender │ │
│ │ approval_timeout | role_permissions │ │
│ │ ticket_scheduler | log_cleanup | settings_seeds │ │
│ └──────────────────────┬─────────────────────────────┘ │
│ ┌──────────────────────┴─────────────────────────────┐ │
│ │ Scheduler Layer (APScheduler) │ │
│ │ 定时工单执行 | 日志自动清理 (cron 03:00) │ │
│ └──────────────────────┬─────────────────────────────┘ │
│ ┌──────────────────────┴─────────────────────────────┐ │
│ │ Connector Layer │ │
@@ -51,7 +58,7 @@
│ │ redis_connector | mongo_connector │ │
│ └──────────────────────┬─────────────────────────────┘ │
│ ┌──────────────────────┴─────────────────────────────┐ │
│ │ SQLite(metadata) | MySQL | PostgreSQL | Redis | MongoDB│
│ │ SQLite(metadata) | apscheduler.db | MySQL | PostgreSQL | Redis | MongoDB│
│ └────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
@@ -133,6 +140,44 @@ ticket_executor.py → 按 instance.db_type 执行:
→ ExecutionReport (status/affected_rows/duration/warnings/errors)
```
### 4.6 定时调度器 (APScheduler)
```
ticket_scheduler.py:
├─ APScheduler BackgroundScheduler + SQLite 持久化 (apscheduler.db)
├─ 工单 scheduled_at 到期 → 自动触发执行
├─ 状态流转: approved → scheduled → executing → success/failed
├─ 支持取消定时: POST /tickets/{id}/cancel-schedule
└─ 统计接口: GET /tickets/scheduled/stats
log_cleanup.py:
├─ APScheduler cron job → 每天 03:00 自动执行
├─ 读取 cleanup 分组配置 (6 项)
├─ 按保留天数清理:
│ ├─ 工单 (只清理已完成/已拒绝, 0天=不清理)
│ ├─ 审计日志
│ ├─ 查询历史
│ └─ 定时任务日志
├─ 手动触发: POST /settings/cleanup/run
└─ 预览: GET /settings/cleanup/preview
```
### 4.7 系统设置种子机制
```
settings_seeds.py:
├─ SETTING_GROUPS: 分组元信息 (query_control / security / ticket / cleanup)
├─ _ensure_settings(): 启动时自动补缺失配置项
├─ SETTING_DEFINITIONS: 所有设置项定义 (key/value_type/default/group/label)
└─ 新增 cleanup 分组 (6 项):
├─ cleanup_enabled (bool, false)
├─ cleanup_time (str, "03:00")
├─ cleanup_ticket_days (int, 90)
├─ cleanup_audit_days (int, 180)
├─ cleanup_query_history_days (int, 30)
└─ cleanup_task_log_days (int, 30)
```
## 5. 数据模型
### 5.1 核心 ORM 模型 (22 个)
@@ -142,7 +187,7 @@ ticket_executor.py → 按 instance.db_type 执行:
| User | 用户 | username, password_hash, role, display_name |
| Instance | 数据源实例 | name, host, port, db_type, access_mode, group_id |
| InstanceGroup | 权限组 | name, description, access_type, workflow_id |
| Ticket | 工单 | ticket_no, title, db_type, status, sql_content, audit_result |
|| Ticket | 工单 | ticket_no, title, db_type, status, sql_content, audit_result, **scheduled_at** |
| TicketApproval | 审批记录 | ticket_id, step_number, approver_id, action, step_type |
| AuditLog | 审计日志 | user_id, action, resource_type, resource_id |
| AuditRule | 审核规则 | name, code, db_type, rule_type, severity |
@@ -245,7 +290,7 @@ Redis Keys 目录树:
## 8. 系统配置
12 项配置分 3 组:
18 项配置分 4 组:
**查询控制 (7 项)**:
- query_require_approval (bool) - 查询是否需要审批
@@ -265,6 +310,14 @@ Redis Keys 目录树:
- ticket_default_workflow (string, "standard") - 默认审批流
- ticket_allow_rollback (bool) - 允许回滚
**清理配置 (6 项)** 🆕:
- cleanup_enabled (bool, false) - 启用自动清理
- cleanup_time (string, "03:00") - 清理执行时间
- cleanup_ticket_days (int, 90) - 工单保留天数 (0=不清理)
- cleanup_audit_days (int, 180) - 审计日志保留天数
- cleanup_query_history_days (int, 30) - 查询历史保留天数
- cleanup_task_log_days (int, 30) - 定时任务日志保留天数
## 9. 四角色体系
| 角色 | 权限范围 |
@@ -296,13 +349,16 @@ docker-compose up -d # 部署
## 11. 关键设计决策
| 决策 | 原因 |
|------|------|
| SQLite 开发数据库 | 零配置,单文件,便于版本管理 |
| AES-256-GCM 加密实例密码 | 安全存储,向后兼容明文 |
| JWT 30分钟过期 | 安全与便利平衡 |
| 暗色主题 CSS 变量体系 (--dg-) | 统一视觉风格 |
| CodeMirror 6 | 现代化编辑器,SQL 自动补全 |
| 权限组中间表设计 | 一组同时包含只读+写入实例 |
| React.lazy 代码分割 | 首屏 -44% (2676KB→1438KB) |
| 工单编号 20 位 | 时间戳+微秒+序号,全局唯一 |
|| 决策 | 原因 |
||------|------|
|| SQLite 开发数据库 | 零配置,单文件,便于版本管理 |
|| AES-256-GCM 加密实例密码 | 安全存储,向后兼容明文 |
|| JWT 30分钟过期 | 安全与便利平衡 |
|| 暗色主题 CSS 变量体系 (--dg-) | 统一视觉风格 |
|| CodeMirror 6 | 现代化编辑器,SQL 自动补全 |
|| 权限组中间表设计 | 一组同时包含只读+写入实例 |
|| React.lazy 代码分割 | 首屏 -44% (2676KB→1438KB) |
|| 工单编号 20 位 | 时间戳+微秒+序号,全局唯一 |
|| APScheduler + SQLite 持久化 | 定时任务跨重启不丢失,轻量级方案 |
|| 设置种子数据机制 | `_ensure_settings` 启动自动补全,保证配置完整性 |
|| 工单创建页单页化 | 简化三步向导为一键提交,提升操作效率 |
+26 -19
View File
@@ -1,8 +1,8 @@
# SQL-Platform-Pro 全面架构审计报告
> 生成时间: 2026-05-24
> 生成时间: 2026-05-25
> 项目路径: ~/devops/sql-platform
> Git 总提交数: **56**
> Git 总提交数: **56+**
---
@@ -10,15 +10,16 @@
### 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) |
| 容器化 | Docker Compose + Dockerfile (前后端) |
| 数据库迁移 | Alembic |
|| 层级 | 技术 |
||------|------|
|| 前端框架 | 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 目录结构
@@ -220,8 +221,10 @@ sql-platform/
| `audit_rule_seeds_v2.py` | **500** | 审核规则种子 V2 |
| `instance_service.py` | **134** | 实例服务 |
| `settings_seeds.py` | **136** | 设置种子数据 |
| `workflow_seeds.py` | **93** | 工作流种子数据 |
| `audit_log_service.py` | **78** | 审计日志服务 |
|| `workflow_seeds.py` | **93** | 工作流种子数据 |
|| `audit_log_service.py` | **78** | 审计日志服务 |
|| `ticket_scheduler.py` 🆕 | ~200 | 定时工单调度 (APScheduler) |
|| `log_cleanup.py` 🆕 | ~180 | 日志自动清理 (APScheduler cron) |
---
@@ -398,12 +401,16 @@ b39c426 fix: merge后14个测试修复+前端TS编译修复 - 895/895通过+前
| 数据字典 | ✅ | ✅ | ✅ (7) | 🟢 完整 |
| 回滚 SQL | ✅ | ✅ | ✅ (10) | 🟢 完整 |
| EXPLAIN 分析 | ✅ | ✅ | ✅ (40) | 🟢 完整 |
| SQL 助手 (AI) | ✅ | ✅ | ✅ (37) | 🟢 完整 |
| 权限组 | ✅ | ✅ | ✅ (20+21+14+16) | 🟢 完整 |
| 系统设置 | ✅ | ✅ | ✅ (18+10) | 🟢 完整 |
| LDAP 配置 | ✅ | ✅ | ✅ (18) | 🟢 完整 |
| Schema 漂移 | ✅ | ✅ | ✅ (24+13+9) | 🟢 完整 |
| 连接池 | ✅ | - | ✅ (21+12) | 🟡 基础设施,无独立前端 |
|| SQL 助手 (AI) | ✅ | ✅ | ✅ (37) | 🟢 完整 |
|| 权限组 | ✅ | ✅ | ✅ (20+21+14+16) | 🟢 完整 |
|| 系统设置 | ✅ | ✅ | ✅ (18+10) | 🟢 完整 |
|| 定时执行工单 🆕 | ✅ | ✅ | — | 🟢 完整 (APScheduler) |
|| 日志自动清理 🆕 | ✅ | ✅ | — | 🟢 完整 (APScheduler cron) |
|| SQL 检测按钮 🆕 | — | ✅ | — | 🟢 前端完整 |
|| 设置种子数据 🆕 | ✅ | — | — | 🟢 后端完整 |
|| LDAP 配置 | ✅ | ✅ | ✅ (18) | 🟢 完整 |
|| Schema 漂移 | ✅ | ✅ | ✅ (24+13+9) | 🟢 完整 |
|| 连接池 | ✅ | - | ✅ (21+12) | 🟡 基础设施,无独立前端 |
---
+57 -20
View File
@@ -1,6 +1,6 @@
# SQL-Platform-Pro 功能清单
> 生成时间: 2026-05-24 | 版本: v1.0
> 生成时间: 2026-05-25 | 版本: v1.1
## ✅ 已完成功能
@@ -14,16 +14,20 @@
- [x] 查询结果表格 (点击单元格弹详情 + JSON 格式化)
- [x] 查询历史记录 (500 条/用户上限)
- [x] 收藏查询 / 快捷查询
- [x] Schema 侧边栏 (MySQL 三级树 / Redis 目录树 / MongoDB 集合)
- [x] Redis key 点击自动插入查询命令 (GET/HGETALL/LRANGE/SMEMBERS/ZRANGE)
- [x] Schema 侧边栏 (MySQL 三级树 / Redis 目录树 / MongoDB 集合) — **已加宽 (grid-cols-5 2:3 布局)**
- [x] Redis key 点击自动插入查询命令 (GET/HGETALL/LRANGE/SMEMBERS/ZRANGE) — **onInsert prop**
- [x] 两阶段 schema 加载 (选实例加载表名, 选库加载列名)
- [x] 数据库品牌图标 (techicons.dev SVG)
- [x] 实例按权限组过滤 (/instances/accessible?access_type=readonly)
#### 2. 数据变更审批流 (TicketsPage + TicketCreatePage)
- [x] 工单创建 (选择变更授权实例 + 库表浏览辅助)
- [x] 工单创建 — 单页面一键提交 (原三步向导已简化)
- [x] DB 类型按频率排序 (MySQL → Redis → PostgreSQL → MongoDB)
- [x] 选择 DB 类型后自动筛选目标实例
- [x] 库表浏览面板 (点击展开库/表/字段,辅助填写目标库)
- [x] Redis 目录树按 `:` 分隔构建层级
- [x] 工单编号生成 (20位: 时间戳+微秒+序号)
- [x] 工单状态机 (pending → reviewing → approved → executing → success/failed)
- [x] 工单状态机 (pending → reviewing → approved → **scheduled** → executing → success/failed)
- [x] 多步审批流 (standard / parallel / any_one / condition)
- [x] 审批人限定 (必须在权限组成员中)
- [x] 工单撤销 (pending/reviewing 状态可撤销)
@@ -44,6 +48,36 @@
- [x] 规则统计和筛选
- [x] 评分系统 (severity: error/warning/info)
#### 3.1 SQL 检测按钮 (TicketCreatePage)
- [x] 提交按钮旁新增「SQL 检测」按钮
- [x] 验证通过前提交按钮置灰 + 提示文字
- [x] SQL 内容变化自动重置验证状态
- [x] 定时时间显示为醒目红色字体
#### 3.2 定时执行工单 (ticket_scheduler.py)
- [x] 基于 APScheduler + SQLite 持久化的定时调度器 (`apscheduler.db`)
- [x] Ticket 模型新增 `scheduled_at` 字段
- [x] 新增 `SCHEDULED` 状态 (approved ↔ scheduled → executing → success/failed)
- [x] API: `GET /tickets/scheduled/list` 定时工单列表
- [x] API: `POST /tickets/{id}/cancel-schedule` 取消定时
- [x] API: `GET /tickets/scheduled/stats` 定时统计
- [x] 前端: TicketCreatePage 定时执行 datetime picker
- [x] 前端: AutoTaskPage 定时任务管理页
#### 3.3 日志自动清理 (log_cleanup.py)
- [x] 系统设置新增 `cleanup` 分组 (6 项配置)
- [x] 启用自动清理开关
- [x] 清理执行时间 (默认凌晨 3 点)
- [x] 工单保留天数 (默认 90 天)
- [x] 审计日志保留天数 (默认 180 天)
- [x] 查询历史保留天数 (默认 30 天)
- [x] 定时任务日志保留天数 (默认 30 天)
- [x] 只清理已完成/已拒绝的工单,0 天 = 不清理
- [x] API: `POST /settings/cleanup/run` 手动触发清理
- [x] API: `GET /settings/cleanup/preview` 预览待清理数据
- [x] 前端: PlatformConfigPage 清理分组 + CleanupActions 预览/手动清理按钮
- [x] APScheduler cron job 每天 03:00 自动执行
#### 4. 审批流管理 (WorkflowPage)
- [x] 审批流 CRUD (创建/编辑/删除)
- [x] 步骤管理 (拖拽排序 + 类型选择)
@@ -107,10 +141,13 @@
- [x] 测试发送功能
#### 11. 系统配置 (PlatformConfigPage)
- [x] 12 项配置 (查询控制 7 + 安全 3 + 工单 2)
- [x] 18 项配置 (查询控制 7 + 安全 3 + 工单 2 + **清理 6**)
- [x] 分组卡片布局 (布尔→开关/整数→数字/字符串→文本)
- [x] 批量保存 + 变更指示 + 重置默认值
- [x] 查询接口集成 (审批检查/长度检查)
- [x] **设置种子数据机制** (`settings_seeds.py` 统一管理所有设置项)
- [x] **`_ensure_settings` 启动时自动补缺失配置**
- [x] **`SETTING_GROUPS` 分组元信息**
#### 12. 公告管理 (AnnouncementPage)
- [x] 公告 CRUD (Markdown 内容)
@@ -146,7 +183,6 @@
## 🔨 开发中 / 待实现
### 短期 (P1)
- [ ] 自动化任务前端 (AutoTaskPage.tsx + api/autoTask.ts)
- [ ] 通知功能前端页面完善
- [ ] 两个页面 Redis 树抽取为共享组件
- [ ] LDAP 认证对接 (后端已有 LdapConfig 模型)
@@ -169,19 +205,20 @@
## 📊 项目统计
| 指标 | 数值 |
|------|------|
| 总提交 | 56 |
| 源文件 | 326 |
| 后端代码 | ~22,000 行 Python |
| 前端代码 | ~14,000 行 TypeScript/TSX |
| API 路由 | 146 条 |
| 测试用例 | 1,075 个 |
| 数据库表 | 28 张 |
| ORM 模型 | 22 个 |
| 前端页面 | 26 个 |
| 审核规则 | 127 条 |
| 系统配置 | 12 项 |
|| 指标 | 数值 |
||------|------|
|| 总提交 | 56+ |
|| 源文件 | 328+ |
|| 后端代码 | ~23,000 行 Python |
|| 前端代码 | ~15,000 行 TypeScript/TSX |
|| API 路由 | 152+ 条 |
|| 测试用例 | 1,075+ 个 |
|| 数据库表 | 28+ 张 |
|| ORM 模型 | 22+ 个 |
|| 前端页面 | 26+ 个 |
|| 审核规则 | 127 条 |
|| 系统配置 | 18 项 |
|| 定时调度 | APScheduler + SQLite 持久化 |
## 🏗️ 数据库连接器支持矩阵
+31 -20
View File
@@ -1,33 +1,44 @@
# SQL-Platform-Pro 开发路线图
> 更新时间: 2026-05-24
> 更新时间: 2026-05-25
## 当前版本: v1.0 (开发中)
## 当前版本: v1.1 (开发中)
### 已完成里程碑
| 阶段 | 版本 | 测试数 | 关键交付 |
|------|------|--------|----------|
| Phase 1 | v0.1.0 | 44 | 后端 API + TDD 测试 |
| Phase 2 | v0.2.0 | 44 | 前后端集成 |
| Phase 3 | v0.3.0 | 85 | AES 加密 + SQL 审核引擎 + 审计日志 |
| Phase 4 | v0.4.0 | 128 | SQL AST + 规则 CRUD + Alembic + Docker |
| Phase 5 | v0.5.0 | 128 | run.sh 运维 + DBConnector + CI/CD |
| Phase 6 | v0.6.0 | 298 | Redis/MongoDB + 权限组 + 多步审批流 |
| Phase 7 | v0.7.0 | 475 | 多数据库查询/执行引擎 + SQL 助手 |
| Phase 8 | v0.8.0 | 700 | P2 高级功能测试 + endpoint 修复 |
| Phase 9 | v0.9.0 | 829 | P0 安全修复 — 实例访问控制全线接入权限组 |
| Phase 10 | v0.9.5 | 877 | 公告 + Dashboard 测试 |
| Phase 11 | v0.9.7 | 895 | 查询端点测试扩展 |
| Phase 12 | v0.9.8 | 1017 | P2 测试覆盖 — user/pool/schema_drift |
| Phase 13 | v0.9.9 | 1040 | 审核引擎优化 + 执行结果结构化 |
| Merge | v1.0-merge | — | SQL平台代码 v1 优化包 (193 条审核规则 + 16 页面 UI) |
| Current | — | 1075 | 多数据库浏览 + Redis 树 + 权限体系统一 + 代码分割 |
|| 阶段 | 版本 | 测试数 | 关键交付 |
||------|------|--------|----------|
|| Phase 1 | v0.1.0 | 44 | 后端 API + TDD 测试 |
|| Phase 2 | v0.2.0 | 44 | 前后端集成 |
|| Phase 3 | v0.3.0 | 85 | AES 加密 + SQL 审核引擎 + 审计日志 |
|| Phase 4 | v0.4.0 | 128 | SQL AST + 规则 CRUD + Alembic + Docker |
|| Phase 5 | v0.5.0 | 128 | run.sh 运维 + DBConnector + CI/CD |
|| Phase 6 | v0.6.0 | 298 | Redis/MongoDB + 权限组 + 多步审批流 |
|| Phase 7 | v0.7.0 | 475 | 多数据库查询/执行引擎 + SQL 助手 |
|| Phase 8 | v0.8.0 | 700 | P2 高级功能测试 + endpoint 修复 |
|| Phase 9 | v0.9.0 | 829 | P0 安全修复 — 实例访问控制全线接入权限组 |
|| Phase 10 | v0.9.5 | 877 | 公告 + Dashboard 测试 |
|| Phase 11 | v0.9.7 | 895 | 查询端点测试扩展 |
|| Phase 12 | v0.9.8 | 1017 | P2 测试覆盖 — user/pool/schema_drift |
|| Phase 13 | v0.9.9 | 1040 | 审核引擎优化 + 执行结果结构化 |
|| Merge | v1.0-merge | — | SQL平台代码 v1 优化包 (193 条审核规则 + 16 页面 UI) |
|| v1.0 | — | 1075 | 多数据库浏览 + Redis 树 + 权限体系统一 + 代码分割 |
|| **v1.1** 🆕 | — | 1075+ | **定时执行工单 + 日志自动清理 + SQL检测按钮 + 工单创建页重构 + SchemaSidebar 加宽 + 设置种子数据机制** |
### v1.1 新增功能详情
|| 功能 | 说明 | 状态 |
||------|------|------|
|| 定时执行工单 | APScheduler + SQLite 持久化, scheduled_at 字段, SCHEDULED 状态 | ✅ |
|| 日志自动清理 | 6 项 cleanup 配置, cron 03:00, 预览/手动清理 API | ✅ |
|| SQL 检测按钮 | 提交前验证, 内容变化重置, 定时时间红色字体 | ✅ |
|| 工单创建页重构 | 三步向导→单页面一键提交, DB类型排序, 库表浏览面板 | ✅ |
|| SchemaSidebar 加宽 | grid-cols-5 (2:3), RedisTree onInsert prop | ✅ |
|| 设置种子数据机制 | settings_seeds.py, _ensure_settings, SETTING_GROUPS | ✅ |
### 下一步计划
#### Sprint 1: 功能补全
- [ ] 自动化任务前端页面
- [ ] 通知页面完善 (渠道管理 + 模板管理)
- [ ] Redis 树共享组件抽取
- [ ] LDAP 认证对接