docs: 全面项目架构和功能文档 — docs/ 目录
新增 5 个文档: - ARCHITECTURE.md (308行) — 系统架构图 + 核心模块 + 数据模型 + 关键决策 - AUDIT_REPORT.md (432行) — 完整审计报告 (规模/依赖/测试/数据库) - FEATURES.md (194行) — 功能清单 (已完成/开发中/待实现) - PROJECT_EVALUATION.md (63行) — 项目评估 (4.2/5.0 评分 + 竞品对比) - ROADMAP.md (52行) — 开发路线图 (13个里程碑 + 4个Sprint计划)
This commit is contained in:
1 parent
9813741838
commit
198cf7baf7
5 files changed
+1049
No files matched your search
@@ -0,0 +1,308 @@
|
|||||||
|
# SQL-Platform-Pro 系统架构文档
|
||||||
|
|
||||||
|
> 生成时间: 2026-05-24 | 最新 Commit: 9813741
|
||||||
|
|
||||||
|
## 1. 系统定位
|
||||||
|
|
||||||
|
**自助查询 + 数据变更审批流** 平台(对标 Yearning / Archery),支持 MySQL / PostgreSQL / Redis / MongoDB 四种数据库类型。
|
||||||
|
|
||||||
|
## 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 管理 |
|
||||||
|
|
||||||
|
## 3. 系统架构图
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ 前端 (React + Vite) │
|
||||||
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||||
|
│ │ Dashboard │ │ Queries │ │ Tickets │ │ Instances│ │
|
||||||
|
│ └─────┬────┘ └─────┬────┘ └─────┬────┘ └─────┬────┘ │
|
||||||
|
│ ┌──────┴──────┐ ┌────┴─────┐ ┌───┴──────┐ │
|
||||||
|
│ │ SchemaSide │ │ SqlEditor│ │ Workflow │ │
|
||||||
|
│ │ bar(Redis树)│ │ (CM6) │ │ Page │ │
|
||||||
|
│ └─────────────┘ └──────────┘ └──────────┘ │
|
||||||
|
│ ↕ axios /api/v1 │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ 后端 (FastAPI) │
|
||||||
|
│ ┌────────────────────────────────────────────────────┐ │
|
||||||
|
│ │ API Layer (29 endpoints) │ │
|
||||||
|
│ │ auth | user | instance | ticket | query | audit │ │
|
||||||
|
│ │ audit_rule | notification | workflow | settings │ │
|
||||||
|
│ └──────────────────────┬─────────────────────────────┘ │
|
||||||
|
│ ┌──────────────────────┴─────────────────────────────┐ │
|
||||||
|
│ │ Service Layer (31 services) │ │
|
||||||
|
│ │ query_service | audit_engine | ticket_executor │ │
|
||||||
|
│ │ instance_service | notification_sender │ │
|
||||||
|
│ │ approval_timeout | role_permissions │ │
|
||||||
|
│ └──────────────────────┬─────────────────────────────┘ │
|
||||||
|
│ ┌──────────────────────┴─────────────────────────────┐ │
|
||||||
|
│ │ Connector Layer │ │
|
||||||
|
│ │ db_connector(MySQL/PG/SQLite) │ │
|
||||||
|
│ │ redis_connector | mongo_connector │ │
|
||||||
|
│ └──────────────────────┬─────────────────────────────┘ │
|
||||||
|
│ ┌──────────────────────┴─────────────────────────────┐ │
|
||||||
|
│ │ SQLite(metadata) | MySQL | PostgreSQL | Redis | MongoDB│
|
||||||
|
│ └────────────────────────────────────────────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. 核心模块架构
|
||||||
|
|
||||||
|
### 4.1 权限体系(三层模型)
|
||||||
|
|
||||||
|
```
|
||||||
|
Tier 1: 实例可见性 (check_instance_access)
|
||||||
|
→ admin 看全部, 其他角色按权限组过滤
|
||||||
|
→ /instances/accessible?access_type=readonly|write
|
||||||
|
|
||||||
|
Tier 2: 操作权限 (check_instance_permission)
|
||||||
|
→ 7 个 action: query:select, query:export, ticket:create, ticket:approve,
|
||||||
|
ticket:execute, ddl:execute, instance:manage
|
||||||
|
→ 用户级覆盖 > 组默认权限
|
||||||
|
|
||||||
|
Tier 3: 角色权限 (role_permissions.py)
|
||||||
|
→ admin: 全部权限
|
||||||
|
→ dba: 全部库 + 审批+拒绝+执行
|
||||||
|
→ auditor: 全部只读 + 审批+拒绝
|
||||||
|
→ developer: 按权限组 + 创建+撤销(未执行前)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 审批流引擎
|
||||||
|
|
||||||
|
```
|
||||||
|
工单创建 → 查找默认审批流 → 创建 TicketApproval 记录
|
||||||
|
├─ 标准步骤 (step_type='standard') → 单人审批
|
||||||
|
├─ 会签 (step_type='parallel') → 所有人都通过
|
||||||
|
├─ 或签 (step_type='any_one') → 一人通过即可
|
||||||
|
└─ 条件 (step_type='condition') → 按 SQL 类型/风险等级判断
|
||||||
|
|
||||||
|
审批推进:
|
||||||
|
approve → 检查后续步骤
|
||||||
|
├─ 还有 pending 步骤 → status='reviewing'
|
||||||
|
└─ 全部完成 → status='approved'
|
||||||
|
reject → 拒绝所有剩余步骤 → status='rejected'
|
||||||
|
|
||||||
|
超时检查:
|
||||||
|
POST /tickets/check-timeout → timeout_hours + auto_approve_on_timeout
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3 SQL 审核引擎
|
||||||
|
|
||||||
|
```
|
||||||
|
输入 SQL → audit_engine.py
|
||||||
|
├─ sql_analyzer.py (AST 分析)
|
||||||
|
│ ├─ SQL 类型识别 (DDL/DML/DQL/DCL)
|
||||||
|
│ ├─ 风险等级评估 (5级)
|
||||||
|
│ └─ 只读验证
|
||||||
|
├─ rule_templates.py (127 条规则)
|
||||||
|
│ ├─ MySQL: 67 条 (含安全9条 SEC-001~009)
|
||||||
|
│ ├─ PostgreSQL: 31 条
|
||||||
|
│ ├─ Redis: 25 条 (去重优化后)
|
||||||
|
│ └─ MongoDB: 31 条
|
||||||
|
└─ 输出 AuditReport (score + violations)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.4 多数据库查询路由
|
||||||
|
|
||||||
|
```
|
||||||
|
query_service.py → 按 instance.db_type 分发:
|
||||||
|
├─ mysql → aiomysql (SELECT only, auto LIMIT)
|
||||||
|
├─ postgres → asyncpg
|
||||||
|
├─ redis → redis.asyncio (GET/HGETALL/LRANGE/SMEMBERS/ZRANGE/KEYS)
|
||||||
|
└─ mongodb → pymongo (find/aggregate/count)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.5 工单执行引擎
|
||||||
|
|
||||||
|
```
|
||||||
|
ticket_executor.py → 按 instance.db_type 执行:
|
||||||
|
├─ mysql → aiomysql.execute() + affected_rows
|
||||||
|
├─ postgres → asyncpg.execute()
|
||||||
|
├─ redis → redis.asyncio (SET/HSET/LPUSH/SADD/ZADD/DEL)
|
||||||
|
└─ mongodb → pymongo (insert/update/delete)
|
||||||
|
→ ExecutionReport (status/affected_rows/duration/warnings/errors)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. 数据模型
|
||||||
|
|
||||||
|
### 5.1 核心 ORM 模型 (22 个)
|
||||||
|
|
||||||
|
| 模型 | 说明 | 主要字段 |
|
||||||
|
|------|------|----------|
|
||||||
|
| 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 |
|
||||||
|
| 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 |
|
||||||
|
| WorkflowDefinition | 审批流定义 | name, is_default, is_active |
|
||||||
|
| WorkflowStep | 审批流步骤 | workflow_id, step_number, step_type, timeout_hours |
|
||||||
|
| NotificationConfig | 通知渠道 | channel_type(webhook_url), channel_name |
|
||||||
|
| Announcement | 公告 | title, content(Markdown) |
|
||||||
|
| SystemSetting | 系统配置 | key, value, value_type, group |
|
||||||
|
| SlowLog | 慢查询日志 | instance_id, query_text, duration |
|
||||||
|
| QueryHistory | 查询历史 | user_id, sql_text, instance_id |
|
||||||
|
| SchemaSnapshot | Schema 快照 | instance_id, database, snapshot_data |
|
||||||
|
| SchemaDrift | Schema 漂移 | snapshot_id, drift_type, details |
|
||||||
|
| ScheduledTask | 定时任务 | name, task_sql_type, cron_expression |
|
||||||
|
| LdapConfig | LDAP 配置 | server_url, bind_dn, base_dn |
|
||||||
|
| DataDictionary | 数据字典 | instance_id, database, table_name |
|
||||||
|
| DictionaryField | 字典字段 | dictionary_id, column_name, description |
|
||||||
|
|
||||||
|
### 5.2 关联表
|
||||||
|
|
||||||
|
| 表 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| user_groups | 用户-权限组关联 (user_id, group_id, permissions) |
|
||||||
|
| instance_group_members | 权限组-实例关联 (group_id, instance_id, access_type) |
|
||||||
|
| workflow_execution_log | 审批流执行日志 |
|
||||||
|
|
||||||
|
## 6. 前端页面架构
|
||||||
|
|
||||||
|
### 6.1 页面清单 (26 个)
|
||||||
|
|
||||||
|
| 页面 | 路由 | 说明 | 行数 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| LoginPage | /login | 登录 | ~180 |
|
||||||
|
| Dashboard | / | 首页仪表盘 | ~350 |
|
||||||
|
| QueriesPage | /queries | 自助查询 | ~780 |
|
||||||
|
| TicketsPage | /tickets | 工单列表 | ~1100 |
|
||||||
|
| TicketCreatePage | /tickets/create | 新建工单 | ~1000 |
|
||||||
|
| InstancePage | /instances | 数据源管理 | ~700 |
|
||||||
|
| InstanceDetailPage | /instances/:id | 实例详情(6 tab) | ~600 |
|
||||||
|
| RedisDetailPage | /redis/:id | Redis 详情(4 tab) | ~500 |
|
||||||
|
| MongoDBDetailPage | /mongodb/:id | MongoDB 详情 | ~400 |
|
||||||
|
| UsersPage | /users | 用户管理 | ~500 |
|
||||||
|
| AuditLogsPage | /audit-logs | 审计日志 | ~400 |
|
||||||
|
| AuditRulesPage | /audit-rules | 审核规则(6 组) | ~600 |
|
||||||
|
| SettingsPage | /settings | 系统设置(多 tab) | ~400 |
|
||||||
|
| AnnouncementPage | /settings/announcements | 公告管理 | ~300 |
|
||||||
|
| NotificationPage | /settings/notifications | 通知渠道 | ~350 |
|
||||||
|
| InstanceGroupPage | /permissions | 权限管理(Transfer 穿梭框) | ~800 |
|
||||||
|
| WorkflowPage | /workflows | 审批流管理 | ~600 |
|
||||||
|
| PlatformConfigPage | /settings/platform | 平台配置 | ~350 |
|
||||||
|
| DataDictionaryPage | /dictionary | 数据字典 | ~300 |
|
||||||
|
| SlowQueryPage | /slow-query | 慢查询分析 | ~400 |
|
||||||
|
| SchemaDriftPage | /schema-drift | Schema 漂移 | ~300 |
|
||||||
|
|
||||||
|
### 6.2 共享组件 (9 个)
|
||||||
|
|
||||||
|
| 组件 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| Layout | 侧边栏 + Header 布局 |
|
||||||
|
| SqlEditor | CodeMirror 6 编辑器 (SQL/Redis/Mongo 语法) |
|
||||||
|
| SchemaSidebar | 数据库导航树 (MySQL三级/Redis目录树/MongoDB集合) |
|
||||||
|
| PageHeader | 页面标题 + 操作按钮 (权限控制) |
|
||||||
|
| EmptyState | 空状态占位 |
|
||||||
|
| ConfirmDialog | 确认弹框 (useConfirm hook) |
|
||||||
|
| FormDialog | 表单弹框壳 |
|
||||||
|
| EditInstanceDialog | 实例编辑弹框 (复用) |
|
||||||
|
| ui/* | shadcn/ui 基础组件 (Button, Dialog, Input, Select...) |
|
||||||
|
|
||||||
|
### 6.3 SchemaSidebar Redis 树特性
|
||||||
|
|
||||||
|
```
|
||||||
|
Redis Keys 目录树:
|
||||||
|
├─ 按 ':' 分隔构建层级 (如 cache:homepage:banner)
|
||||||
|
├─ 文件夹节点: FolderOpen 琥珀色图标 + 子节点数
|
||||||
|
├─ 叶子节点: KeyRound 图标按类型着色
|
||||||
|
│ ├─ string → emerald (绿)
|
||||||
|
│ ├─ hash → blue (蓝)
|
||||||
|
│ ├─ list → purple (紫)
|
||||||
|
│ ├─ set → orange (橙)
|
||||||
|
│ └─ zset → rose (红)
|
||||||
|
├─ 单列内嵌详情: 选中 key 下方展开 type/TTL/value
|
||||||
|
├─ border-l 左竖线层级指示
|
||||||
|
├─ 查询页: 点击 → 插入对应命令到编辑器
|
||||||
|
│ (GET/HGETALL/LRANGE/SMEMBERS/ZRANGE)
|
||||||
|
└─ 变更页: 同上 + hover 显示「插入」提示
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. 通知系统
|
||||||
|
|
||||||
|
```
|
||||||
|
通知渠道: DingTalk / Feishu / Email(SMTP)
|
||||||
|
通知模板:
|
||||||
|
├─ 工单创建通知 (申请人→审批人)
|
||||||
|
├─ 工单审批通过通知
|
||||||
|
├─ 工单审批拒绝通知
|
||||||
|
└─ 工单执行完成通知
|
||||||
|
|
||||||
|
飞书: \n 换行
|
||||||
|
钉钉: \n\n 双换行 (markdown 特性)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8. 系统配置
|
||||||
|
|
||||||
|
12 项配置分 3 组:
|
||||||
|
|
||||||
|
**查询控制 (7 项)**:
|
||||||
|
- query_require_approval (bool) - 查询是否需要审批
|
||||||
|
- query_max_limit (int, 10000) - 最大返回行数
|
||||||
|
- query_timeout (int, 30s) - 查询超时
|
||||||
|
- query_max_length (int, 10000) - SQL 最大长度
|
||||||
|
- query_auto_limit (bool) - 自动添加 LIMIT
|
||||||
|
- query_enable_masking (bool) - 数据脱敏
|
||||||
|
- query_save_history (bool) - 保存查询历史
|
||||||
|
|
||||||
|
**安全配置 (3 项)**:
|
||||||
|
- security_max_login_attempts (int, 5) - 最大登录尝试
|
||||||
|
- security_password_min_length (int, 6) - 密码最小长度
|
||||||
|
- security_enable_audit_log (bool) - 审计日志开关
|
||||||
|
|
||||||
|
**工单配置 (2 项)**:
|
||||||
|
- ticket_default_workflow (string, "standard") - 默认审批流
|
||||||
|
- ticket_allow_rollback (bool) - 允许回滚
|
||||||
|
|
||||||
|
## 9. 四角色体系
|
||||||
|
|
||||||
|
| 角色 | 权限范围 |
|
||||||
|
|------|----------|
|
||||||
|
| admin (超级管理员) | 全部功能 + 用户管理 + 系统设置 |
|
||||||
|
| dba (DBA管理员) | 全部库访问 + 审批/拒绝/执行工单 |
|
||||||
|
| auditor (审计员) | 全部只读 + 审批/拒绝工单 |
|
||||||
|
| developer (开发者) | 按权限组访问 + 创建/撤销自己的工单 |
|
||||||
|
|
||||||
|
**默认用户**: admin/admin123, zhangsan(张三)/admin123, laoliu(老六)/admin123, lurenjia(路人甲)/admin123
|
||||||
|
|
||||||
|
## 10. 运维部署
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 开发环境启动
|
||||||
|
bash run.sh start # 启动前后端 (后端9000, 前端5173)
|
||||||
|
bash run.sh restart # 重启
|
||||||
|
bash run.sh stop # 停止
|
||||||
|
bash run.sh status # 状态检查
|
||||||
|
|
||||||
|
# 测试
|
||||||
|
bash run.sh test # 后端测试 (pytest)
|
||||||
|
cd frontend && npx tsc --noEmit # 前端类型检查
|
||||||
|
|
||||||
|
# 生产构建
|
||||||
|
bash run.sh build # Docker build
|
||||||
|
docker-compose up -d # 部署
|
||||||
|
```
|
||||||
|
|
||||||
|
## 11. 关键设计决策
|
||||||
|
|
||||||
|
| 决策 | 原因 |
|
||||||
|
|------|------|
|
||||||
|
| SQLite 开发数据库 | 零配置,单文件,便于版本管理 |
|
||||||
|
| AES-256-GCM 加密实例密码 | 安全存储,向后兼容明文 |
|
||||||
|
| JWT 30分钟过期 | 安全与便利平衡 |
|
||||||
|
| 暗色主题 CSS 变量体系 (--dg-) | 统一视觉风格 |
|
||||||
|
| CodeMirror 6 | 现代化编辑器,SQL 自动补全 |
|
||||||
|
| 权限组中间表设计 | 一组同时包含只读+写入实例 |
|
||||||
|
| React.lazy 代码分割 | 首屏 -44% (2676KB→1438KB) |
|
||||||
|
| 工单编号 20 位 | 时间戳+微秒+序号,全局唯一 |
|
||||||
@@ -0,0 +1,432 @@
|
|||||||
|
# SQL-Platform-Pro 全面架构审计报告
|
||||||
|
|
||||||
|
> 生成时间: 2026-05-24
|
||||||
|
> 项目路径: ~/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) |
|
||||||
|
| 容器化 | 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** | 审计日志服务 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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) | 🟢 完整 |
|
||||||
|
| 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 中重复出现
|
||||||
@@ -0,0 +1,194 @@
|
|||||||
|
# SQL-Platform-Pro 功能清单
|
||||||
|
|
||||||
|
> 生成时间: 2026-05-24 | 版本: v1.0
|
||||||
|
|
||||||
|
## ✅ 已完成功能
|
||||||
|
|
||||||
|
### 一、核心功能
|
||||||
|
|
||||||
|
#### 1. 自助查询 (QueriesPage)
|
||||||
|
- [x] 多数据库类型查询 (MySQL/PostgreSQL/Redis/MongoDB)
|
||||||
|
- [x] CodeMirror 6 SQL 编辑器 (语法高亮 + 自动补全)
|
||||||
|
- [x] SQL 模板库 (13 个预置模板,按 DB 类型适配)
|
||||||
|
- [x] Ctrl+Enter 执行 / Ctrl+Shift+F 格式化
|
||||||
|
- [x] 查询结果表格 (点击单元格弹详情 + JSON 格式化)
|
||||||
|
- [x] 查询历史记录 (500 条/用户上限)
|
||||||
|
- [x] 收藏查询 / 快捷查询
|
||||||
|
- [x] Schema 侧边栏 (MySQL 三级树 / Redis 目录树 / MongoDB 集合)
|
||||||
|
- [x] Redis key 点击自动插入查询命令 (GET/HGETALL/LRANGE/SMEMBERS/ZRANGE)
|
||||||
|
- [x] 两阶段 schema 加载 (选实例加载表名, 选库加载列名)
|
||||||
|
- [x] 数据库品牌图标 (techicons.dev SVG)
|
||||||
|
- [x] 实例按权限组过滤 (/instances/accessible?access_type=readonly)
|
||||||
|
|
||||||
|
#### 2. 数据变更审批流 (TicketsPage + TicketCreatePage)
|
||||||
|
- [x] 工单创建 (选择变更授权实例 + 库表浏览辅助)
|
||||||
|
- [x] 工单编号生成 (20位: 时间戳+微秒+序号)
|
||||||
|
- [x] 工单状态机 (pending → reviewing → approved → executing → success/failed)
|
||||||
|
- [x] 多步审批流 (standard / parallel / any_one / condition)
|
||||||
|
- [x] 审批人限定 (必须在权限组成员中)
|
||||||
|
- [x] 工单撤销 (pending/reviewing 状态可撤销)
|
||||||
|
- [x] 执行结果结构化展示 (状态/行数/耗时/验证/错误/警告)
|
||||||
|
- [x] 当前审核人显示
|
||||||
|
- [x] 工单快速筛选 (待审批/进行中/已完成/已拒绝)
|
||||||
|
- [x] 实例按 DB 类型筛选
|
||||||
|
- [x] Redis 目录树浏览 + 点击插入命令
|
||||||
|
- [x] MongoDB 集合浏览 + 点击插入命令
|
||||||
|
- [x] SQL 提交前强制审核规则检查
|
||||||
|
|
||||||
|
#### 3. SQL 审核引擎
|
||||||
|
- [x] 127 条审核规则 (MySQL 67 / PostgreSQL 31 / Redis 25 / MongoDB 31)
|
||||||
|
- [x] 6 个分组 (DDL/DML/DCL/DQL/security/performance)
|
||||||
|
- [x] MySQL 安全规则 SEC-001~009
|
||||||
|
- [x] Redis 规则去重优化 (CMD-001 覆盖 SEC-003)
|
||||||
|
- [x] 规则 CRUD (创建/读取/更新/删除/开关)
|
||||||
|
- [x] 规则统计和筛选
|
||||||
|
- [x] 评分系统 (severity: error/warning/info)
|
||||||
|
|
||||||
|
#### 4. 审批流管理 (WorkflowPage)
|
||||||
|
- [x] 审批流 CRUD (创建/编辑/删除)
|
||||||
|
- [x] 步骤管理 (拖拽排序 + 类型选择)
|
||||||
|
- [x] 3 种高级步骤类型 (parallel 会签 / any_one 或签 / condition 条件分支)
|
||||||
|
- [x] 条件评估引擎 (sql_type/db_type/risk_level/priority)
|
||||||
|
- [x] 超时检查 (timeout_hours + auto_approve_on_timeout)
|
||||||
|
- [x] 默认审批流绑定 (is_default + is_active)
|
||||||
|
|
||||||
|
### 二、数据源管理
|
||||||
|
|
||||||
|
#### 5. 实例管理 (InstancePage)
|
||||||
|
- [x] 实例 CRUD (4 种 DB 类型)
|
||||||
|
- [x] 连接测试 (MySQL/PG/Redis/MongoDB/SQLite)
|
||||||
|
- [x] 实例密码 AES-256-GCM 加密 (向后兼容明文)
|
||||||
|
- [x] 卡片视图 + 列表视图
|
||||||
|
- [x] 按类型 Tab 筛选 (全部/MySQL/PostgreSQL/Redis/MongoDB)
|
||||||
|
- [x] 品牌图标展示
|
||||||
|
- [x] 编辑弹框 (EditInstanceDialog 可复用)
|
||||||
|
- [x] 克隆实例 (名称自动加 "-副本")
|
||||||
|
- [x] 实例详情页 (6 tab: 概览/表/查询/用户/慢查询/进程)
|
||||||
|
- [x] Redis 详情页 (4 tab: Keys/监控/CLI/性能)
|
||||||
|
- [x] MongoDB 详情页 (数据库/集合/统计/查询CLI)
|
||||||
|
|
||||||
|
#### 6. 库表浏览
|
||||||
|
- [x] MySQL: SHOW DATABASES → information_schema.TABLES → COLUMNS
|
||||||
|
- [x] PostgreSQL: pg_database → pg_tables → column list
|
||||||
|
- [x] Redis: CONFIG GET databases → db0~db{N} (无表概念)
|
||||||
|
- [x] MongoDB: list_database_names → list_collection_names
|
||||||
|
- [x] 统一走后端 listDatabases/listTables API
|
||||||
|
|
||||||
|
### 三、权限与安全
|
||||||
|
|
||||||
|
#### 7. 权限管理 (InstanceGroupPage)
|
||||||
|
- [x] 权限组 CRUD
|
||||||
|
- [x] 2 种权限类型 (只读查看 / 写入变更)
|
||||||
|
- [x] Transfer 穿梭框选择数据库
|
||||||
|
- [x] 用户-权限组关联
|
||||||
|
- [x] 实例-权限组关联 (中间表 instance_group_members)
|
||||||
|
- [x] 7 个操作权限 action
|
||||||
|
- [x] 角色权限映射 (admin/dba/auditor/developer)
|
||||||
|
- [x] admin 也按权限组过滤 (无 bypass)
|
||||||
|
|
||||||
|
#### 8. 用户管理 (UsersPage)
|
||||||
|
- [x] 用户 CRUD (4 角色: admin/dba/auditor/developer)
|
||||||
|
- [x] bcrypt 4.0 密码哈希
|
||||||
|
- [x] 默认用户种子数据 (4 个: admin/zhangsan/laoliu/lurenjia)
|
||||||
|
- [x] guest 角色已彻底禁用
|
||||||
|
|
||||||
|
#### 9. 审计日志 (AuditLogsPage)
|
||||||
|
- [x] 全操作审计日志 (实例/用户/工单/查询 CRUD)
|
||||||
|
- [x] 日志筛选 (时间范围/用户/操作类型)
|
||||||
|
- [x] auditor 角色只读访问
|
||||||
|
|
||||||
|
### 四、系统设置
|
||||||
|
|
||||||
|
#### 10. 通知管理 (NotificationPage)
|
||||||
|
- [x] 通知渠道配置 (DingTalk/Feishu/Email)
|
||||||
|
- [x] 真实消息发送 (非模拟)
|
||||||
|
- [x] 通知模板 (创建/通过/拒绝/执行完成)
|
||||||
|
- [x] 钉钉/飞书换行适配
|
||||||
|
- [x] 测试发送功能
|
||||||
|
|
||||||
|
#### 11. 系统配置 (PlatformConfigPage)
|
||||||
|
- [x] 12 项配置 (查询控制 7 + 安全 3 + 工单 2)
|
||||||
|
- [x] 分组卡片布局 (布尔→开关/整数→数字/字符串→文本)
|
||||||
|
- [x] 批量保存 + 变更指示 + 重置默认值
|
||||||
|
- [x] 查询接口集成 (审批检查/长度检查)
|
||||||
|
|
||||||
|
#### 12. 公告管理 (AnnouncementPage)
|
||||||
|
- [x] 公告 CRUD (Markdown 内容)
|
||||||
|
- [x] 发布/撤回状态管理
|
||||||
|
|
||||||
|
#### 13. 审核规则管理 (AuditRulesPage)
|
||||||
|
- [x] 规则列表 (6 组 Tab: DDL/DML/DCL/DQL/security/performance)
|
||||||
|
- [x] 规则开关 (toggle)
|
||||||
|
- [x] 规则统计
|
||||||
|
- [x] 按数据库类型筛选
|
||||||
|
- [x] 规则种子 (POST /audit-rules/seed/{db_type})
|
||||||
|
|
||||||
|
### 五、基础设施
|
||||||
|
|
||||||
|
#### 14. 前端优化
|
||||||
|
- [x] React.lazy 代码分割 (18 页面懒加载)
|
||||||
|
- [x] Vite manualChunks (vendor 拆分)
|
||||||
|
- [x] 首屏 -44% (2676KB → 1438KB)
|
||||||
|
- [x] 暗色主题 (--dg- CSS 变量体系)
|
||||||
|
- [x] 响应式布局
|
||||||
|
- [x] 骨架屏加载动画
|
||||||
|
- [x] 确认弹框 (useConfirm hook, 替代浏览器 confirm)
|
||||||
|
- [x] Toast 通知 (右下角 3 秒消失)
|
||||||
|
|
||||||
|
#### 15. 后端基础设施
|
||||||
|
- [x] JWT 认证 (30 分钟过期)
|
||||||
|
- [x] run.sh PID 管理脚本 (start/stop/restart/status/logs/build/test)
|
||||||
|
- [x] Alembic 数据库迁移
|
||||||
|
- [x] Docker + docker-compose 部署
|
||||||
|
- [x] CORS 策略
|
||||||
|
- [x] 请求日志中间件
|
||||||
|
|
||||||
|
## 🔨 开发中 / 待实现
|
||||||
|
|
||||||
|
### 短期 (P1)
|
||||||
|
- [ ] 自动化任务前端 (AutoTaskPage.tsx + api/autoTask.ts)
|
||||||
|
- [ ] 通知功能前端页面完善
|
||||||
|
- [ ] 两个页面 Redis 树抽取为共享组件
|
||||||
|
- [ ] LDAP 认证对接 (后端已有 LdapConfig 模型)
|
||||||
|
|
||||||
|
### 中期 (P2)
|
||||||
|
- [ ] Schema 漂移检测 (后端有 SchemaSnapshot/SchemaDrift 模型)
|
||||||
|
- [ ] 快照对比可视化
|
||||||
|
- [ ] 数据脱敏规则 (MaskingRule 模型)
|
||||||
|
- [ ] SQL 格式化后端 (sqlparse)
|
||||||
|
- [ ] EXPLAIN 真实解析
|
||||||
|
- [ ] 慢查询实时推送 (WebSocket)
|
||||||
|
- [ ] CSV 导出功能对接
|
||||||
|
|
||||||
|
### 远期 (P3)
|
||||||
|
- [ ] 库级权限控制
|
||||||
|
- [ ] 查询审批工作流
|
||||||
|
- [ ] 多租户支持
|
||||||
|
- [ ] 审批流模板持久化
|
||||||
|
- [ ] 集群模式支持
|
||||||
|
|
||||||
|
## 📊 项目统计
|
||||||
|
|
||||||
|
| 指标 | 数值 |
|
||||||
|
|------|------|
|
||||||
|
| 总提交 | 56 |
|
||||||
|
| 源文件 | 326 |
|
||||||
|
| 后端代码 | ~22,000 行 Python |
|
||||||
|
| 前端代码 | ~14,000 行 TypeScript/TSX |
|
||||||
|
| API 路由 | 146 条 |
|
||||||
|
| 测试用例 | 1,075 个 |
|
||||||
|
| 数据库表 | 28 张 |
|
||||||
|
| ORM 模型 | 22 个 |
|
||||||
|
| 前端页面 | 26 个 |
|
||||||
|
| 审核规则 | 127 条 |
|
||||||
|
| 系统配置 | 12 项 |
|
||||||
|
|
||||||
|
## 🏗️ 数据库连接器支持矩阵
|
||||||
|
|
||||||
|
| 数据库 | 连接库 | 查询 | 执行 | 审核 | 库表浏览 |
|
||||||
|
|--------|--------|------|------|------|----------|
|
||||||
|
| MySQL | aiomysql | ✅ | ✅ | ✅ (67规则) | ✅ |
|
||||||
|
| PostgreSQL | asyncpg | ✅ | ✅ | ✅ (31规则) | ✅ |
|
||||||
|
| Redis | redis.asyncio | ✅ | ✅ | ✅ (25规则) | ✅ (Keys树) |
|
||||||
|
| MongoDB | pymongo | ✅ | ✅ | ✅ (31规则) | ✅ (集合) |
|
||||||
|
| SQLite | sqlite3 | ✅ | — | — | — |
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
# SQL-Platform-Pro 项目评估
|
||||||
|
|
||||||
|
> 更新时间: 2026-05-24
|
||||||
|
|
||||||
|
## 项目健康度评分
|
||||||
|
|
||||||
|
| 维度 | 评分 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 功能完整度 | ⭐⭐⭐⭐ (4/5) | 核心功能完备,缺少自动化任务前端和通知管理页面 |
|
||||||
|
| 代码质量 | ⭐⭐⭐⭐ (4/5) | 1075 测试用例覆盖,Pydantic V2 类型安全,TypeScript strict mode |
|
||||||
|
| 架构设计 | ⭐⭐⭐⭐⭐ (5/5) | 清晰分层(API→Service→Connector),权限体系完整,多数据库统一抽象 |
|
||||||
|
| 前端体验 | ⭐⭐⭐⭐ (4/5) | 暗色主题统一,CM6 编辑器,代码分割,缺少移动端适配 |
|
||||||
|
| 运维友好度 | ⭐⭐⭐⭐ (4/5) | run.sh PID管理,Docker部署,Alembic迁移,缺少监控 |
|
||||||
|
| 安全性 | ⭐⭐⭐⭐ (4/5) | AES加密密码,JWT认证,权限三层模型,缺少RBAC细粒度 |
|
||||||
|
|
||||||
|
## 综合评分: 4.2 / 5.0
|
||||||
|
|
||||||
|
## 优势
|
||||||
|
|
||||||
|
1. **多数据库统一**: MySQL/PG/Redis/MongoDB 统一查询/执行/审核/浏览,同类产品少有
|
||||||
|
2. **测试覆盖率高**: 1075 个测试,核心逻辑全覆盖
|
||||||
|
3. **权限体系完整**: 三层模型(实例可见性→操作权限→角色权限),细粒度控制
|
||||||
|
4. **审批流灵活**: 支持 4 种步骤类型(标准/会签/或签/条件),条件引擎可扩展
|
||||||
|
5. **前端现代化**: React 19 + CM6 + 代码分割 + 暗色主题
|
||||||
|
6. **审核引擎丰富**: 127 条规则,6 个分组,4 种数据库
|
||||||
|
|
||||||
|
## 待改进
|
||||||
|
|
||||||
|
1. **前端测试空白**: 无 Vitest/E2E 测试,前端质量靠 tsc 检查
|
||||||
|
2. **生产数据库**: SQLite 不适合生产环境,需迁移到 PostgreSQL
|
||||||
|
3. **监控体系**: 缺少 APM/日志聚合/告警
|
||||||
|
4. **文档**: API 文档仅有 Swagger 自动生成,缺少使用手册
|
||||||
|
5. **国际化**: 仅中文,无 i18n 支持
|
||||||
|
|
||||||
|
## 竞品对比
|
||||||
|
|
||||||
|
| 功能 | SQL-Platform-Pro | Yearning | Archery |
|
||||||
|
|------|-----------------|----------|---------|
|
||||||
|
| MySQL 支持 | ✅ | ✅ | ✅ |
|
||||||
|
| PostgreSQL 支持 | ✅ | ❌ | ✅ |
|
||||||
|
| Redis 支持 | ✅ | ❌ | ❌ |
|
||||||
|
| MongoDB 支持 | ✅ | ❌ | ❌ |
|
||||||
|
| SQL 审核规则 | 127 条 | ~50 条 | ~30 条 |
|
||||||
|
| 多步审批流 | ✅ (4种) | ✅ (简单) | ✅ |
|
||||||
|
| 会签/或签 | ✅ | ❌ | ❌ |
|
||||||
|
| 条件审批 | ✅ | ❌ | ❌ |
|
||||||
|
| Schema 浏览 | ✅ (树形) | ❌ | ✅ |
|
||||||
|
| Redis Key 树 | ✅ | ❌ | ❌ |
|
||||||
|
| 暗色主题 | ✅ | ❌ | ❌ |
|
||||||
|
| 代码分割 | ✅ (-44%) | N/A | N/A |
|
||||||
|
| 测试覆盖 | 1075 tests | 少量 | 少量 |
|
||||||
|
|
||||||
|
## 技术债务
|
||||||
|
|
||||||
|
| 项目 | 优先级 | 预估工时 |
|
||||||
|
|------|--------|----------|
|
||||||
|
| 前端 Vitest 测试 | P1 | 40h |
|
||||||
|
| SQLite → PostgreSQL 生产迁移 | P1 | 16h |
|
||||||
|
| API 文档完善 | P2 | 16h |
|
||||||
|
| Redis 树共享组件抽取 | P2 | 4h |
|
||||||
|
| 监控接入 (Prometheus) | P2 | 8h |
|
||||||
|
| 国际化 (i18n) | P3 | 32h |
|
||||||
|
| E2E 测试 | P3 | 16h |
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# SQL-Platform-Pro 开发路线图
|
||||||
|
|
||||||
|
> 更新时间: 2026-05-24
|
||||||
|
|
||||||
|
## 当前版本: v1.0 (开发中)
|
||||||
|
|
||||||
|
### 已完成里程碑
|
||||||
|
|
||||||
|
| 阶段 | 版本 | 测试数 | 关键交付 |
|
||||||
|
|------|------|--------|----------|
|
||||||
|
| 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 树 + 权限体系统一 + 代码分割 |
|
||||||
|
|
||||||
|
### 下一步计划
|
||||||
|
|
||||||
|
#### Sprint 1: 功能补全
|
||||||
|
- [ ] 自动化任务前端页面
|
||||||
|
- [ ] 通知页面完善 (渠道管理 + 模板管理)
|
||||||
|
- [ ] Redis 树共享组件抽取
|
||||||
|
- [ ] LDAP 认证对接
|
||||||
|
|
||||||
|
#### Sprint 2: 质量提升
|
||||||
|
- [ ] 前端 Vitest 测试覆盖
|
||||||
|
- [ ] E2E 测试 (Playwright)
|
||||||
|
- [ ] 性能测试 (查询并发/工单并发)
|
||||||
|
- [ ] 国际化 (i18n)
|
||||||
|
|
||||||
|
#### Sprint 3: 高级功能
|
||||||
|
- [ ] Schema 漂移检测 + 可视化
|
||||||
|
- [ ] 数据脱敏规则引擎
|
||||||
|
- [ ] SQL 格式化后端服务
|
||||||
|
- [ ] 慢查询 WebSocket 实时推送
|
||||||
|
|
||||||
|
#### Sprint 4: 生产就绪
|
||||||
|
- [ ] PostgreSQL 生产数据库迁移
|
||||||
|
- [ ] 集群部署 (Redis session + 负载均衡)
|
||||||
|
- [ ] 监控告警 (Prometheus + Grafana)
|
||||||
|
- [ ] 安全审计 (OWASP 检查)
|
||||||
|
- [ ] 性能优化 (查询缓存/连接池)
|
||||||
Reference in new issue
Block a user