- Score: 6.2 -> 7.6 (+1.4) - Security: 5 -> 8 (+3.0, biggest jump) - Tests: 44 -> 85 (41 new) - Next: Phase 4 (SQL AST, rule CRUD, Alembic)
142 lines
6.3 KiB
Markdown
142 lines
6.3 KiB
Markdown
# Web-Lite 数据审核平台 - 项目评估
|
||
|
||
> 评估日期: 2025-05-22
|
||
> 评估版本: v0.3.0 (Phase 1+2+3 已完成)
|
||
|
||
---
|
||
|
||
## 一、项目概况
|
||
|
||
| 项目 | 说明 |
|
||
|------|------|
|
||
| 项目名 | Web-Lite 数据审核平台 (sql-platform) |
|
||
| 定位 | SQL 审核与工单管理平台(对标 Yearning/Archery) |
|
||
| 路径 | ~/devops/sql-platform |
|
||
| 前端 | React 19 + TS + Vite 7 + Tailwind + shadcn/ui |
|
||
| 后端 | FastAPI + SQLAlchemy 2 async + SQLite |
|
||
| 状态 | **Phase 3 完成** — 85 测试通过,AES 加密 + SQL 审核引擎 + 审计日志 |
|
||
|
||
---
|
||
|
||
## 二、功能完成度
|
||
|
||
### 后端 API (完成度: 75%)
|
||
|
||
| 模块 | 端点数 | 状态 | 说明 |
|
||
|------|--------|------|------|
|
||
| 认证 auth | 3 | ✅ 完成 | login/me/logout,JWT+bcrypt |
|
||
| 用户 users | 5 | ✅ 完成 | CRUD,admin 权限控制 |
|
||
| 数据源 instances | 7 | ✅ 完成 | CRUD+测试连接+列库+列表,**密码 AES 加密** |
|
||
| 工单 tickets | 6 | ✅ 完成 | 列表+创建+详情+审核+执行+统计,**自动 SQL 审核** |
|
||
| 查询 query | 1 | ✅ 完成 | MySQL 查询,SQL 关键词防护 |
|
||
| 仪表盘 dashboard | 1 | ✅ 完成 | 统计聚合 |
|
||
| **审计日志 audit** | 1 | ✅ **新增** | GET /audit/logs,分页+过滤 |
|
||
| 审核规则管理 | 0 | ❌ 缺失 | 无后端 API(审核引擎是内置的) |
|
||
| 工作流 | 0 | ❌ 缺失 | 无后端 API |
|
||
| 数据权限 | 0 | ❌ 缺失 | 无后端 API |
|
||
| 公告管理 | 0 | ❌ 缺失 | 无后端 API |
|
||
| 自动任务 | 0 | ❌ 缺失 | 无后端 API |
|
||
|
||
### 核心引擎 (完成度: 70%)
|
||
|
||
| 引擎 | 状态 | 说明 |
|
||
|------|------|------|
|
||
| SQL 审核引擎 | ✅ 完成 | 10 条内置规则(WHERE检查、DROP拦截、生产加固等) |
|
||
| 密码加密引擎 | ✅ 完成 | AES-256-GCM,向后兼容明文 |
|
||
| 审计日志引擎 | ✅ 完成 | 全操作覆盖(instance/user/ticket/query) |
|
||
| 工单流引擎 | ✅ 完成 | pending→approved→executing→success/failed |
|
||
|
||
### 前端页面 (完成度: 70%)
|
||
|
||
| 页面 | 路由 | 状态 | 数据来源 |
|
||
|------|------|------|----------|
|
||
| 登录 | /login | ✅ 完成 | 真实 API |
|
||
| 仪表盘 | /dashboard | ✅ 完成 | 真实 API |
|
||
| 工单管理 | /tickets | ✅ 完成 | 真实 API |
|
||
| 查询审计 | /queries | ✅ 完成 | 真实 API |
|
||
| 数据源管理 | /mysql, /postgres, /redis, /mongo | ✅ 完成 | 真实 API |
|
||
| 用户管理 | /users | ✅ 完成 | 真实 API |
|
||
| **审计日志** | /audit-logs | ✅ **新增** | 真实 API |
|
||
| 角色管理 | /roles | 🔶 UI 骨架 | mock |
|
||
| 数据权限 | /data-permission | 🔶 UI 骨架 | mock |
|
||
| 审核规则 | /audit-rules | 🔶 UI 骨架 | mock |
|
||
| 工作流 | /workflow | 🔶 UI 骨架 | mock |
|
||
| 自动任务 | /auto-task | 🔶 UI 骨架 | mock |
|
||
| 公告管理 | /announcement | 🔶 UI 骨架 | mock |
|
||
| 平台配置 | /config-platform | 🔶 UI 骨架 | mock |
|
||
|
||
---
|
||
|
||
## 三、代码质量评估
|
||
|
||
### ✅ 优点
|
||
|
||
1. **架构清晰** — 后端分层 (models → schemas → services → endpoints),前端分层 (api → hooks → pages)
|
||
2. **现代技术栈** — FastAPI async、React 19、TypeScript 严格模式
|
||
3. **安全体系完善** — JWT + bcrypt + AES-256-GCM + 角色权限 + CORS + SQL 审核引擎
|
||
4. **UI 统一美观** — shadcn/ui + dark/light 主题 + CSS 变量体系完善
|
||
5. **测试覆盖充分** — 85 个测试覆盖 9 个模块,TDD 驱动
|
||
6. **SQL 审核引擎** — 10 条规则 + 评分系统 + 环境感知(production 更严格)
|
||
7. **审计日志完整** — 所有写操作(CRUD + 审核 + 执行 + 查询)均记录
|
||
|
||
### ⚠️ 待改进
|
||
|
||
| # | 级别 | 问题 | 影响 | 建议 |
|
||
|---|------|------|------|------|
|
||
| 1 | ~~严重~~ ✅ | ~~Instance.password 明文存储~~ | ~~已 AES-256-GCM 加密~~ | v0.3.0 已完成 |
|
||
| 2 | ~~高~~ ✅ | ~~无 SQL 审核引擎~~ | ~~10 条规则引擎已完成~~ | v0.3.0 已完成 |
|
||
| 3 | ~~高~~ ✅ | ~~无操作审计日志~~ | ~~全操作覆盖~~ | v0.3.0 已完成 |
|
||
| 4 | **高** | SQL 注入防护仅关键词匹配 | 绕过风险 | SQL AST 解析 (sqlparse) |
|
||
| 5 | **中** | 只支持 MySQL 查询 | 功能限制 | 按需扩展 PG |
|
||
| 6 | **中** | 审核规则硬编码 | 无法动态配置 | 规则 CRUD API |
|
||
| 7 | **中** | 前端 mock.ts 文件过大 | 维护困难 | 按模块拆分 |
|
||
| 8 | **中** | 无数据库迁移工具 | Schema 变更管理 | 引入 Alembic |
|
||
| 9 | **低** | package.json name 为 "my-app" | 不专业 | 改为 sql-platform |
|
||
| 10 | **低** | backend venv 提交到 git | 仓库膨胀 | .gitignore 排除 |
|
||
|
||
---
|
||
|
||
## 四、风险评估
|
||
|
||
| 风险 | 概率 | 影响 | 缓解措施 |
|
||
|------|------|------|----------|
|
||
| SQL 关键词过滤被绕过 | 高 | 高 | 引入 sqlparse 做 AST 解析 |
|
||
| SQLite 并发瓶颈 | 低 | 中 | 后续支持 MySQL/PG |
|
||
| 审核规则无法动态配置 | 中 | 中 | Phase 4 实现规则管理 API |
|
||
| 前端状态管理缺失 | 低 | 低 | 目前 useState 够用 |
|
||
|
||
---
|
||
|
||
## 五、项目评分
|
||
|
||
| 维度 | v0.2.0 | v0.3.0 | 变化 | 说明 |
|
||
|------|--------|--------|------|------|
|
||
| 架构设计 | 8 | **8.5** | +0.5 | 审核引擎+加密层+审计服务分层清晰 |
|
||
| 代码质量 | 7 | **8** | +1.0 | 85 测试(+41),9 个测试模块 |
|
||
| 功能完成度 | 6 | **7.5** | +1.5 | 加密+审核引擎+审计日志+前端审计页 |
|
||
| 安全性 | 5 | **8** | +3.0 | AES-256-GCM + SQL 审核引擎 + 审计追踪 |
|
||
| 可维护性 | 7 | **7.5** | +0.5 | 服务层独立(crypto/audit_engine/audit_log) |
|
||
| UI/UX | 8 | **8** | - | 新增审计日志页面 |
|
||
| 生产就绪度 | 4 | **5.5** | +1.5 | 密码加密+审核引擎+审计日志,但缺部署配置 |
|
||
| **综合** | **6.2** | **7.6** | **+1.4** | 安全性和功能完成度大幅提升 |
|
||
|
||
---
|
||
|
||
## 六、下一步行动 (优先级排序)
|
||
|
||
### Phase 4 — 核心功能补全
|
||
|
||
1. 🔴 **SQL AST 解析** — 用 sqlparse 替换关键词匹配,防注入更可靠
|
||
2. 🔴 **审核规则管理 API** — 规则 CRUD + 启用/禁用 + 自定义规则
|
||
3. 🟡 **Alembic 数据库迁移** — Schema 版本管理
|
||
4. 🟡 **权限矩阵细化** — 数据源级权限、字段级脱敏
|
||
5. 🟡 **多数据库支持** — PostgreSQL 查询+执行
|
||
|
||
### Phase 5 — 生产化
|
||
|
||
6. 🟡 **Docker 部署** — Dockerfile + docker-compose
|
||
7. 🟡 **邮件/飞书通知** — 工单状态变更推送
|
||
8. 🟢 **慢查询日志** — 记录执行超过阈值的 SQL
|
||
9. 🟢 **数据库探针** — 实例健康监控
|
||
10. 🟢 **数据导出** — 查询结果 CSV/Excel 导出
|