logan
|
aaa7666d66
|
fix: 统一所有弹框组件 padding + 主题风格
- ModalOverlay: 内容容器加 p-6 + border + shadow-xl
- alert-dialog: 统一主题变量 bg-[var(--dg-bg-secondary)] + rounded-xl
- sheet: SheetContent 加 p-6,移除 Header/Footer 重复 p-4
- drawer: DrawerContent 加 p-6,移除 Header/Footer 重复 p-4
- 所有弹框统一: p-6 padding + dg-border + shadow-xl + z-[101]
|
2026-05-31 23:08:08 +08:00 |
|
logan
|
363753653e
|
fix: DialogContent 添加默认 padding p-6,修复确认弹框布局压缩问题
- dialog.tsx: DialogContent 基础样式加 p-6 (24px padding)
- ConfirmDialog.tsx: 按钮区域间距 pt-2 → pt-4
- 修复所有使用 Radix Dialog 的弹框内容紧贴边缘的问题
|
2026-05-31 23:05:51 +08:00 |
|
logan
|
c18fc9bd70
|
feat: Redis cluster UI - SchemaSidebar 集群db0锁定 + InstanceItem cluster_mode 字段
|
2026-05-30 01:51:48 +08:00 |
|
logan
|
889cce140b
|
refactor: 弹框架构重构 + 审核规则seed API + LDAP默认配置 + 全量初始数据
弹框架构:
- Layout header/sidebar z-[200] 隔离弹框层,弹框不再遮挡面包屑
- dialog.tsx 简化: 去掉 border/backdrop-blur,统一暗色主题变量
- ModalOverlay z-[100] 对齐 Radix Dialog overlay 层级
- EditInstanceDialog 同步 z-index 修复
- 修复 InstanceGroupPage/InstancePage/LdapConfigPage 缺失 import
- 修复 InstanceGroupPage 缺失 X icon import
- RedisDetailPage ModalOverlay 迁移为 FormDialog
审核规则:
- POST /audit-rules/seed/:dbType 初始化默认规则 (mysql 11/pg 7/redis 4/mongo 4)
- POST /audit-rules/:id/toggle 开关规则
- PUT /audit-rules/:id 编辑规则
- seed.go 启动时自动创建 26 条默认审核规则
LDAP 默认配置:
- seed.go 自动写入 9 条 LDAP 配置 (8.217.205.92:389, dc=opsx,dc=vip)
- 全新 DB 启动即就位,无需手动配置
|
2026-05-29 22:48:45 +08:00 |
|
logan
|
3c5e1c1f7d
|
fix: 统一弹框组件 — ModalOverlay对齐EditInstanceDialog行为
- ModalOverlay移除遮罩层onClick(不响应外部点击关闭)
- 移除body.style.overflow=hidden(修复白条问题)
- max-h从90vh改为85vh(与EditInstanceDialog一致)
- 10个页面手写fixed弹框替换为ModalOverlay组件
- InstanceGroupPage/WorkflowPage/UsersPage/RedisDetailPage/TicketsPage已替换
- dialog.tsx添加onPointerDownOutside/onInteractOutside阻止外部点击
- index.css添加body[data-scroll-locked]覆盖Radix滚动锁定
- Layout.tsx main添加relative定位上下文
|
2026-05-29 17:16:08 +08:00 |
|
logan
|
557d88d3ed
|
feat: 数据脱敏体系重构 — 全局设置+masked_columns+前端去硬编码
后端:
- applyDataMasking 新增 masked_columns 返回字段,告诉前端哪些列被脱敏
- seedDefaultSettings 添加 data_masking 分组(启用开关+敏感字段列表)
- 脱敏逻辑: 全局敏感字段 + 实例级 mask_fields 合并,开关关闭则跳过
前端:
- QueriesPage 去掉硬编码 sensitiveKeywords 和 maskData()
- 改用后端返回的 masked_columns 显示'敏'标签
- 脱敏值由后端统一处理(替换为*)
- PlatformConfigPage 数据脱敏分组独立显示
- EditInstanceDialog 脱敏字段简化为逗号分隔输入
验证:
- 设置页开关可正常开关/保存
- 查询 ghost_test: email列被脱敏为*,列头显示'敏'标签
- 非敏感列(name, id, status)正常显示
|
2026-05-28 23:26:10 +08:00 |
|
logan
|
e81eed288c
|
feat: SchemaSidebar字段/索引tab切换+选库自动展开+singleDb过滤+表单击展开
- SchemaSidebar: 展开表后显示字段/索引两个tab,可切换查看
- 新增 tableIndexes state + IndexInfo import
- 选库后自动调用 handleExpandDb 加载表(修复之前无表bug)
- singleDb 模式下只显示当前选中库
- 表按钮交互改为: 单击展开/折叠, Alt+点击插入表名
- 菜单重组为工作台/管理/系统三段式
- TicketCreatePage 数据库必选(非Redis不自动选)
|
2026-05-28 22:31:40 +08:00 |
|
logan
|
7e26837c5f
|
refactor: TicketCreatePage用SchemaSidebar替换手写浏览器+SqlEditor暴露insertText光标定位
- SqlEditor: 添加 forwardRef + useImperativeHandle 暴露 insertText 方法
- 支持在光标位置插入文本并移动光标
- TicketCreatePage: 删除300+行手写表结构/Redis/索引浏览代码
- 统一使用 SchemaSidebar 组件(与查询页一致)
- handleSchemaInsert: 已选库插table名,未选库插db.table名
- 清理未用 imports/icons/types/helpers (RedisKeyItem, formatBytes等)
- 848行 → 435行
|
2026-05-28 21:34:59 +08:00 |
|
logan
|
6b5d8bede4
|
fix: 查询页两个细节修复
1. 点击侧边栏表名插入 db.table 格式(如 log_analytics.access_logs)
- SchemaSidebar 表名: onInsert(t.name) → onInsert(`${dbName}.${t.name}`)
- SchemaSidebar 字段名: onInsert(col.Field) → onInsert(`${t.name}.${col.Field}`)
2. 查询不存在的表应显示错误而非'无结果数据'
- QueriesPage handleExecute: 检查 res.error 字段,有错误则 setError + 不设 result
|
2026-05-28 14:41:46 +08:00 |
|
logan
|
4351421848
|
fix: ConfirmDialog确认后弹框不关闭(9页面) + 登录页顶部渐变线移除
- 9个页面 onConfirm 回调添加 setDeleteConfirm(null) 关闭弹框
- InstancePage/InstanceDetailPage/InstanceGroupPage/RedisDetailPage
- UsersPage/AnnouncementPage/NotificationPage/NotificationsPage/WorkflowPage
- 白日梦境(NeonCityView) + 云石纹理(GradientMeshView) 移除顶部蓝色渐变线
|
2026-05-27 22:10:50 +08:00 |
|
logan
|
5a61babd33
|
feat: 霓虹都市→白日梦境 + 渐变网格→云石纹理 — 两个白色浅色主题登录页重写
|
2026-05-27 21:53:27 +08:00 |
|
logan
|
41dab3deab
|
feat: 10个登录页图标统一 — 蓝紫渐变(#3b82f6→#8b5cf6)+白色盾牌勾选,与favicon一致
|
2026-05-27 21:04:45 +08:00 |
|
logan
|
e6b421574d
|
fix: 登录页功能卡片文案对齐实际功能 — 自助查询/变更审批/规则引擎/审计追踪/角色权限
|
2026-05-27 20:36:15 +08:00 |
|
logan
|
d8b9e81635
|
feat: 品牌重命名 SQL-Platform → OpsxSQL — 12个文件18处替换,覆盖所有登录组件+Layout+index.html
|
2026-05-27 20:27:57 +08:00 |
|
logan
|
492bf7f8e3
|
fix: 功能展示风格提到第一位+比例优化 — 右侧400px更紧凑,左侧间距缩减,默认登录页改为sidepanel
|
2026-05-27 18:21:22 +08:00 |
|
logan
|
f8b2266542
|
fix: 侧边面板恢复 commit 35a014e 原始设计 — 左品牌+6功能卡片,右登录表单,白色主题友好
|
2026-05-27 18:15:18 +08:00 |
|
logan
|
b4fa60bc68
|
fix: 侧边面板恢复更早版本 (commit 8aaf227) — 左40%渐变+装饰圆圈+Database图标+主题切换按钮
|
2026-05-27 18:10:27 +08:00 |
|
logan
|
f97c0ab00c
|
fix: 侧边面板恢复原始简洁版 + 星际漫游流星方向修正
- SidePanel: 恢复 commit 46054c8 原始版(左38%暗色品牌区+右62%登录表单)
- 去掉深海鲸歌动画效果,回归简洁专业风格
- AppearanceSettings: 缩略图预览同步更新
- CosmosView: 流星方向从左上→右下改为右上→左下(符合真实流星观感)
|
2026-05-27 18:06:16 +08:00 |
|
logan
|
bf5c077b5b
|
feat: 登录页扩展至10种风格 — 新增极光之境/星际漫游/水墨山水/霓虹都市/渐变网格
- 新增 AuroraView.tsx: 4条极光光带+15星光+毛玻璃卡片
- 新增 CosmosView.tsx: 3星云+45颗星星+2流星+行星装饰
- 新增 InkWashView.tsx: 三层远山+水墨晕染+金色点缀+亮色表单
- 新增 NeonCityView.tsx: 城市剪影+霓虹灯管+雨滴+赛博朋克风格
- 新增 GradientMeshView.tsx: 5渐变光晕+点阵纹理+呼吸动画
- LoginPage.tsx: LoginStyle类型扩展10种+映射+选项
- AppearanceSettings.tsx: 预览颜色+缩略图10种
|
2026-05-27 17:52:34 +08:00 |
|
logan
|
872c204e80
|
fix: SplitView 左黑右白+左侧文字居中醒目
- 右侧改为纯白背景(#fff),输入框浅灰底+深色文字+青绿聚焦边框
- 左侧品牌内容从底部移至垂直居中位置
- 输入框从底线风格改为圆角卡片风格,匹配白色面板
|
2026-05-27 16:25:00 +08:00 |
|
logan
|
03bf7c92a9
|
feat: 登录页3种风格全新重设计 — 数据晶格/晨曦微光/深海鲸歌
- SplitView: 晶格矩阵透视网格+19脉动节点+青绿微光, Tron科技感
- CenteredCard: 黎明渐变+10条金色光柱+地平线光晕+星点残留
- SidePanel: 深海渐变+5层波浪线+15生物发光粒子+3深海光柱
- AppearanceSettings: 预览颜色+缩略图同步更新
- LoginPage: 风格描述文案更新
|
2026-05-27 13:24:24 +08:00 |
|
logan
|
439eb6d6d7
|
feat: 极简暗色替换为深蓝紫曲线风格 — 粉紫流动曲线优雅暗黑
MinimalDark.tsx 全面重写:
- 背景: 深蓝紫渐变(#0a0a1a→#0f0a2a→#150825)代替纯黑
- 7条流动曲线: 粉紫/靛蓝/青色渐变彩带 + blur效果 + 缓慢浮动动画
- 5个脉动装饰点: 粉色/紫色/靛蓝不同delay闪烁
- 2个发光球: 右上紫色光球 + 左下粉色光球
- 毛玻璃居中卡片: backdrop-blur + 半透明边框
- 粉紫渐变logo(#ec4899→#a855f7) + 紫色聚焦高亮
- 按钮粉紫渐变发光阴影
LoginPage + AppearanceSettings 描述和缩略图同步更新
|
2026-05-27 13:06:17 +08:00 |
|
logan
|
1aa729b61b
|
feat: 登录页5种视觉大片级重设计 — 星河/极光/日月/星辰/流星
5个登录组件全面升级为动态视觉效果:
1. SplitView — 星河流转: 深靛蓝渐变(#0f0c29→#302b63) + 3条CSS流星动画
+ 7个漂浮星辰光点 + 脉动光晕,底线输入框聚焦靛蓝
2. CenteredCard — 极光幻境: 深蓝黑底(#0a0a2e) + 3条流动极光色带
(翠绿/靛蓝/紫) filter:blur(80px) 缓慢流动,毛玻璃居中卡片
3. SidePanel — 日月交替(重点重做): 暮光紫→夜空蓝渐变
+ 200px天体球(太阳金→月亮银蓝 8s循环) + 300px旋转轨道环
+ 6个轨道光点 + 3条流星 + 10个闪烁星点
4. FullImage — 星辰连线: 深海军蓝(#0a1628) + 33个随机星点
+ 6条星座连线 + 右上角蓝紫发光球 + 左下角暖色光球
5. MinimalDark — 流星雨: 深紫黑(#0c0a1a) + 6条流星动画
+ 10个静态星点 + 渐变菱形logo + 极简布局
|
2026-05-27 12:48:27 +08:00 |
|
logan
|
46054c8b2f
|
feat: 登录页5种主流高级风格重写 + 主题/登录页设置独立
5个登录组件全面重新设计:
- SplitView: 分屏聚焦风格(Linear/Notion) — 左55%深色渐变+几何动画装饰,右45%纯净表单+底线输入框
- CenteredCard: 沉浸渐变风格(Stripe/Vercel) — 紫蓝辐射背景+毛玻璃卡片+发光效果
- SidePanel: 品牌侧栏风格(Slack/Figma) — 左38%大号标语+feature pills,右62%宽留白表单
- FullImage: 粒子网格风格(GitHub/AWS) — CSS粒子光点+网格线+发光球体+深色内嵌卡片
- MinimalDark: 极简线条风格(Apple/Linear) — 纯黑背景+16px渐变圆点logo+宽字距+底线输入框
AppearanceSettings 主题与登录页完全独立:
- 界面配色区: 5种主题配色即时预览
- 登录页风格区: 5种风格缩略图预览+参考品牌标签(Linear/Notion, Stripe/Vercel等)
- 移除登录页主题切换按钮,风格与主题彻底解耦
|
2026-05-27 03:25:58 +08:00 |
|
logan
|
746a000e8a
|
feat: 全面UI优化 — 5套主题系统 + 设计体系 + 菜单重组 + 页面优化
1. 主题系统扩展 (5套主题)
- ocean-deep(深海蓝) / light-professional(明亮白) / midnight-purple(午夜紫)
- pine-green(松林绿) / orange-vitality(活力橙)
- useTheme hook 重写支持5主题 + 向后兼容
- AppearanceSettings 5主题预览卡片
2. 设计体系 (index.css)
- 按钮系统: dg-btn-primary/secondary/ghost/danger + 尺寸变体
- 徽章系统: dg-badge-* (8色)
- 卡片/表格: dg-card-section, dg-table-row, dg-table-header
- 状态点: dg-status-dot-* (4色)
- 动效关键帧: slideInLeft, scaleIn
3. 菜单重组 (menu.ts)
- 5分组: 概览/数据源/工单/权限/系统
- 6个图标更新: Code2/FileEdit/ShieldCheck/FolderLock/ScrollText/Timer
- 新增 permission 权限码字段
4. Layout 侧边栏增强
- 左侧渐变指示条 + 发光效果
- hover 微动画 + 图标变色
- 面包屑导航头部
- 主题切换循环5主题
5. 核心页面优化
- TicketsPage: 设计系统类 + 颜色对齐
- QueriesPage: 去Card依赖 + dg-table/dg-btn统一
- Breadcrumb组件 + useBreadcrumb hook
|
2026-05-27 01:59:08 +08:00 |
|
logan
|
8aaf2271b8
|
feat: gh-ost真实集成验证通过 + 登录页全面中文化 + 外观设置跨浏览器同步修复
gh-ost集成:
- handler根据instance_id查DB获取连接信息(host/port/user/password)
- 修复gh-ost参数: 去掉不存在的--dry-run(默认noop), 加--execute才真执行
- 加--skip-port-validation(端口映射环境必须)
- 加--allow-on-master(单机MySQL直接执行)
- 加--initially-drop-ghost-table/old-table/socket-file(清理残留)
- GhOstTask增加Port字段, buildArgs同步更新
- dry-run真实验证通过: 连接1.94.55.133:9005, 3行表, 3.85s完成
登录页中文化:
- 5个登录组件(SplitView/CenteredCard/SidePanel/FullImage/MinimalDark)
- 46处英文文案全部替换为中文
- 平台标题统一为'SQL审核平台'
外观设置同步修复:
- GetPublicLoginStyle: GORM First()复用主键导致第二次查询失败
- 改用Take()+重置结构体, 修复theme始终返回dark的bug
- UpdateUserPreferences: 同步写入SystemSetting表(login_style+default_theme)
|
2026-05-27 00:06:13 +08:00 |
|
logan
|
14e394fb09
|
feat: 5种专业登录页风格 + 外观设置 + 文档全面更新
- 新增 5 种登录页组件: SplitView/CenteredCard/SidePanel/FullImage/MinimalDark
- 提取 useLogin hook 共享登录逻辑
- LoginPage 改为风格分发器, localStorage(login-style) 控制渲染
- SettingsPage 新增外观设置 tab: 主题切换 + 登录风格选择器(含缩略图预览)
- AppearanceSettings 组件: 5 种风格卡片式切换
- 文档全面更新为 Go/Gin 架构:
- ARCHITECTURE.md: Go 项目结构/handler/GORM 模型/中间件/LDAP/驱动矩阵
- FEATURES.md: v0.3.1 功能清单含登录主题系统
- ROADMAP.md: Python→Go 迁移历史 + Sprint 计划
|
2026-05-26 21:16:36 +08:00 |
|
logan
|
88e5f4e7ee
|
feat: Go后端LDAP真实对接 — AES-256-GCM密码加解密 + 登录LDAP fallback
- 新增 crypto.go: AES-256-GCM 加解密,与 Python backend 兼容
- auth.go: Login 添加 LDAP fallback(本地优先→LDAP绑定→自动创建本地用户)
- ldap.go: 实现真实 LDAP 连接/用户搜索/密码验证/OU列表/用户列表
- 所有 LDAP 操作解密 admin_password 后使用
- 新增/更新密码存储时加密
- router.go: 补充 delete-user 路由
- 添加 go-ldap/v3 依赖
|
2026-05-25 23:32:15 +08:00 |
|
logan
|
344c519209
|
feat: P0生产加固 — 认证安全+操作审计+错误提示
P0-1 认证安全:
- JWT secret 改为环境变量配置, 未设置则随机生成(重启失效)
- 新增 LoginRateLimitMiddleware: 5次/分钟登录频率限制(滑动窗口)
- 429 响应 + 前端 toast 提示
P0-2 操作审计日志:
- 新增 OperationLog 模型 (user/username/action/resource/detail/ip)
- 新增 AuditLogMiddleware 自动记录 POST/PUT/DELETE/PATCH 操作
- 新增 GET /audit-logs API (分页/过滤/统计)
- 前端 AuditLogsPage 对接真实 API (字段/路径修正)
P0-3 实例密码加密:
- 已确认 crypto.py AES-256-GCM 加密存储, 无需修改
P1 前端错误提示:
- 新增 useToast hook + ToastContainer 组件
- request.ts 拦截器: 4xx/5xx 错误 toast 显示后端 detail 信息
- 422 验证错误提取第一条 msg
- 网络失败显示通用提示
1182 tests passed
|
2026-05-25 12:57:59 +08:00 |
|
logan
|
880dbfefa4
|
feat: Dashboard数据关联修复 + 通知模板优化 + 工单创建页布局
1. Dashboard: stats新增queryStats查询统计, trend API真实工单趋势数据
2. Layout铃铛: 显示真实待审批工单数量
3. 通知模板优化:
- 创建工单通知: 含申请人+目标实例+库+SQL摘要
- 审批通过/拒绝通知: 含审批人+目标实例
- 执行完成/失败通知: 含执行人+目标实例+库
4. 飞书卡片颜色: 创建=turquoise, 审批=blue, 成功=green, 失败=red
5. 钉钉消息: 添加状态emoji标签(🆕✅❌⚠️)
6. TicketCreatePage: 底部操作栏(SQL检测+提交审批)
7. ticket_executor: 移除aiomysql不支持的read_timeout/write_timeout
Tests: 1057 passed, 17 pre-existing failures (notification 35/35 passed)
|
2026-05-25 01:29:24 +08:00 |
|
logan
|
9813741838
|
feat: SchemaSidebar 加宽 + Redis key 点击插入查询命令到编辑器
- QueriesPage grid 从 1:3 改为 2:3,sidebar 更宽
- RedisTree 新增 onInsert prop,点击叶子节点自动插入对应命令
- redisCommand(): string→GET, hash→HGETALL, list→LRANGE, set→SMEMBERS, zset→ZRANGE
|
2026-05-24 23:34:27 +08:00 |
|
logan
|
08f0f88cf1
|
feat: 工单列表重设计+权限组实例过滤+通知修复
后端:
- Ticket model 新增 ticket_no 字段(格式: YYYYMMDDHHmmss+ms+seq, 如20260522160543841)
- create_ticket 自动生成工单编号(flush后生成)
- _enrich_ticket 新增 instance_name, current_approver_name 字段
- current_approver: 从 ticket_approvals 查询第一个 pending 状态的审批步骤获取审核人
- TicketResponse schema 新增 ticket_no, instance_name, current_approver_name
- 新增 /instances/accessible endpoint(按用户权限组过滤实例, 无admin bypass)
- instance_group response_model 改为 InstanceGroupDetailResponse(含readonly/write实例)
- instance_group_members 脏数据清理, 重建 group_id=2 正确数据
- notification 模板修复: \n→\n 换行, 钉钉 \n→\n\n 双换行
- test_notification endpoint 改为真正调用 NotificationSender.send()
- auditor 角色添加到 audit_rule/ticket 只读端点
- seed_data() 创建4个默认用户(admin/zhangsan/laoliu/lurenjia)
- SQLite ALTER TABLE 添加 ticket_no 列, 迁移现有6条工单数据
前端:
- TicketsPage 完全重设计: 工单编号/实例名称/提交人/当前审核人/状态/操作
- 状态映射简化: pending/reviewing/approved→审核中, success→完成, failed→失败
- 执行详情弹框: 解析 execute_result JSON 展示状态/影响行数/耗时/验证/原始输出/错误信息
- 状态流程可视化(提交→审批→通过→执行→完成)
- 快速筛选: 全部/待审批/执行中/完成/失败 (合并 pending+reviewing+approved 统计)
- TicketCreatePage: 去掉数据库类型选择器, 用 accessible(write) 过滤变更实例
- QueriesPage: 用 accessible(readonly) 过滤查询实例
- instance.ts 新增 accessible 方法
- 分页优化: 动态计算页码范围(总页>5时中间滚动)
|
2026-05-24 22:55:51 +08:00 |
|
logan
|
128de64592
|
feat: 数据源编辑加排除数据库+脱敏字段+审批流关联; 权限组Transfer改为选择实例
- EditInstanceDialog: 新增排除数据库(逗号分隔)、脱敏字段(动态表单+表/字段/规则)、审批流程关联
- Instance: workflow JSON字段改为workflow_id FK关联workflow_definitions表
- InstanceGroupPage: Transfer穿梭框从选数据库改为选实例(数据源)
- 后端instance API返回workflow_name, _get_workflow_names批量查询
- DB迁移: instances表添加workflow_id列
- 37个测试全部通过
|
2026-05-24 19:36:39 +08:00 |
|
logan
|
4111e1eee8
|
refactor: 权限组简化为2组(readonly/write) + Transfer穿梭框选择数据库
- access_type 从3值(readonly/datachange/ddl)简化为2值(readonly/write)
- readonly=只读查看(关联只读/从库用于查询) write=写入变更(关联主库用于工单)
- 前端InstanceGroupPage重写: 2权限类型卡片+自定义Transfer穿梭框组件
- Transfer组件: 左侧可选数据库→右侧已授权数据库, 搜索/勾选/箭头移动
- role_permissions.py更新: 2值权限映射, get_accessible_instances按access_type过滤
- 后端schema/模型校验更新为readonly|write正则
- 15个测试全部通过
|
2026-05-24 19:27:04 +08:00 |
|
logan
|
35a014e571
|
feat: 查询页增强 + 权限体系优化
- Redis DB0~DB15 下拉选择,默认DB0
- 查询历史粘贴按钮(一键填入SQL编辑器)
- 去掉导出历史按钮
- SchemaSidebar 按目标数据库筛选
- SQL自动补全 schema 双层注册(db→tables, table→columns)
- 后端 db-schema 接口(INFORMATION_SCHEMA.COLUMNS 一次加载)
- autocompletion 扩展激活
- Redis key 树形结构(冒号分隔层级)
- Redis 查询模板 GET/HGETALL/HGET
- guest 角色彻底移除,改为 auditor
- 登录页优化:去掉演示账号、placeholder 中文提示
|
2026-05-24 18:50:08 +08:00 |
|
logan
|
e6ab5bf496
|
feat: SchemaSidebar 三级树结构 — 库→表→字段 (类似 Navicat)
- MySQL: 先加载数据库列表,点击库展开表,点击表展开字段
- 当前选中的 database 自动展开并标记「当前」
- 搜索框支持搜库名和表名,跨库搜索
- 每个库的表列表独立缓存,切换库不重复请求
- Tab 名改为「库表」更直观
- Redis 部分保持不变
|
2026-05-24 15:52:08 +08:00 |
|
logan
|
6a8c4d95d5
|
feat: Redis/MySQL 加载骨架屏 loading 效果
- SchemaSidebar: MySQL 表列表加载改为 6 行骨架屏 animate-pulse
- SchemaSidebar: Redis key 列表加载改为 6 行骨架屏 animate-pulse
- RedisDetailPage: key 表格加载时显示 5 行骨架屏 + 加载中提示
- 替换原来的纯文字/spinner,视觉上更流畅
|
2026-05-24 15:46:58 +08:00 |
|
logan
|
0fb947dcb5
|
feat: TicketCreatePage tab化 + SchemaSidebar + Redis快速搜索 + Dashboard导航修复
TicketCreatePage 重构:
- SQL编辑器右侧新增数据库浏览器面板(tab化)
- 表结构Tab: 表列表→字段展开(PK/索引标记)→点击插入SQL
- 索引Tab: 选中表的索引详情(索引名/类型/字段/基数)
- Redis Keys Tab: DB选择器+Key模式搜索+Key列表+类型/TTL/值查看
SchemaSidebar 新组件(365行):
- MySQL/PostgreSQL: 左侧数据库表树→字段→点击插入SQL
- Redis: Key树(DB选择→模式搜索→Key值查看, 类似Another Redis Desktop Manager)
- 用于 QueriesPage 查询页面
Dashboard:
- 快捷按钮改用 useNavigate + onClick 替代 <a href>
API增强:
- redis.ts: 新增 getKeys/createKey/deleteKey 方法
- instanceDetail.ts: 导出 TableMeta/TableDetail/ColumnInfo/IndexInfo 类型接口
|
2026-05-24 15:10:31 +08:00 |
|
logan
|
8b921c6c83
|
refactor: mock清理+安全配置+通用组件+菜单优化
P0安全: SECRET_KEY/ADMIN_PASSWORD/CORS环境变量化, seed仅admin
P1Mock: mock.ts 301->88行, 删8数据mock+5generateMock, net-1300行
P2组件: useToast/useFetchList+ConfirmDialog/FormDialog
P3菜单: menuSections/menuItems->constants/menu.ts
P4API: NotificationsPage/WorkflowPage重写+RolesPage演示
测试: 1050passed, tsc clean
|
2026-05-24 02:42:29 +08:00 |
|
logan
|
4ac2528f8e
|
fix: 审核引擎优化 + 执行结果结构化展示
后端审核规则修复:
- Redis SEC-001: SET/DEL等常规命令不再误报AUTH要求,改为仅对管理级命令WARNING
- Redis SEC-003: 降级为INFO,排除已由CMD-001拦截的FLUSHDB/FLUSHALL
- Redis key提取: 排除CONFIG/ACL等管理命令,不再把子命令参数误认为key名
- MySQL SEC-006: 新增GRANT ALL/REVOKE ALL全局权限拦截
- MySQL SEC-007: 新增LOAD DATA/LOAD XML拦截
- MySQL SEC-008: 新增SLEEP()/BENCHMARK()时间盲注拦截
- MySQL SEC-009: 新增INTO OUTFILE/DUMPFILE文件写入拦截
前端执行结果结构化:
- TicketDetailPage执行结果从原始JSON改为结构化展示
- 解析JSON展示: 状态徽章+影响行数+耗时+验证状态
- Errors/Warnings逐条渲染: 红色错误框+黄色警告框+具体消息
- 删除废弃的executeStats/renderExecuteStats
其他: 审核规则6分组/慢查询移除/查询数据重命名/AuditLogs修复
测试: 1040 passed, TSC零错误
|
2026-05-24 01:31:33 +08:00 |
|
logan
|
b39c426317
|
fix: merge后14个测试修复+前端TS编译修复 - 895/895通过+前端零错误
|
2026-05-23 17:50:13 +08:00 |
|
logan
|
58eb78c987
|
merge: SQL平台代码v1 优化包合并 — 193条审核规则 + 16页面UI优化
后端新增 (Step 1):
- mysql_audit_rules.py: 63条 MySQL审核规则 (DDL 36 + DML 9 + 命名 5 + 性能 5 + 安全 5)
- redis_audit_rules.py: 43条 Redis审核规则 (KEY管理 10 + 命令安全 12 + 数据结构 8 + 性能 8 + 安全 5)
- mongodb_audit_rules.py: 42条 MongoDB审核规则 (集合管理 + 查询安全 + 聚合管道 + 写入安全 + 性能)
- postgres_audit_rules.py: 45条 PostgreSQL审核规则 (DDL 18 + DML 8 + DQL 6 + 安全 6 + 性能 7)
后端合并 (Step 2):
- audit_engine_v2.py: 新增4个DB规则模块import (100+→200+规则)
- audit_rule_seeds.py: 新增30条MongoDB种子规则 + 别名映射
- audit_rule.py: 新增数据库类型别名 (postgresql→postgres, pg→postgres, mongo→mongodb)
前端优化 (Step 4) — 16页面全覆盖:
- InstancePage, WorkflowPage, TicketsPage, TicketCreatePage, TicketDetailPage
- UsersPage, SlowQueryPage, DataDictionaryPage, Dashboard
- InstanceGroupPage, AuditLogsPage, QueriesPage, AuditRulesPage, RolesPage
- useAuth.tsx, SqlEditor.tsx
后端测试 895/895 通过, 前端 tsc --noEmit 通过
|
2026-05-23 16:46:13 +08:00 |
|
logan
|
583e891619
|
fix: CodeMirror多实例冲突 — 移除@codemirror/rectangular-selection@0.19.x和codemirror元包
根因: @codemirror/rectangular-selection@0.19.2 引入 @codemirror/state@0.19.9 (旧版)
与主依赖 @codemirror/state@6.6.0 冲突,导致 instanceof 检查失败
修复:
- npm uninstall @codemirror/rectangular-selection (已合并到 @codemirror/view)
- npm uninstall codemirror (元包,无代码引用)
- SqlEditor.tsx 移除 rectangularSelection import 和调用
- 后端测试 843/843 通过
|
2026-05-23 15:07:51 +08:00 |
|
logan
|
4c9427e546
|
sync: 同步 sql-platform-pro 最新代码 — 权限体系安全修复 v0.8.1
- P0: 实例访问控制全线接入权限组 (829测试)
- P1: permissions字段激活 + 操作级权限检查 (843测试)
- 前端: 删除数据权限页面, 权限组合并为唯一入口
- 新增: CodeMirror编辑器 + 查询模板 + 慢查询分析
- 新增: MongoDB管理页面 + Dashboard增强
- 修复: Pydantic V2迁移 + 前端TS错误修复
|
2026-05-23 14:41:06 +08:00 |
|
logan
|
87d2af5e48
|
fix: 脱敏处理 — 移除公司域名和内部实例名
- placeholder: pro-cex-rds → prod-mysql, pro-rds-ro.51aipay.com → mysql.example.com
- test fixtures 同步替换
- 修复 PageHeader 权限检查: 同时检查 routePermissionMap 和 actionPermissionMap
- 前端构建零错误, 后端202测试通过
|
2026-05-22 23:17:43 +08:00 |
|
logan
|
5cbd0e3441
|
refactor: 数据源菜单合一+布局优化
- 4个数据源菜单(MySQL/PG/Redis/Mongo)合并为1个「数据源」
- InstancePage 改为统一入口,顶部Tab切换类型过滤
- 添加数据源改为弹框Modal(默认MySQL)
- 去掉左下角用户区,退出登录移到右上角header
- 侧边栏收窄220px,整体布局更紧凑
- 后端202 tests passing
- 前端构建零错误
|
2026-05-22 22:53:48 +08:00 |
|
logan
|
bab55d3927
|
feat: 审核规则模版+设置页面整合+去掉角色切换demo
后端:
- AuditRule 新增 value 字段, rule_type 扩展 DDL/DML
- MySQL/PG/Redis 预设规则种子接口 POST /audit-rules/seed/{db_type}
- 公告管理 CRUD (announcements)
- 消息推送 CRUD+测试 (notifications: 钉钉/飞书/邮件)
- LDAP 配置 CRUD+测试连接 (ldap-config)
- 164 tests passing (+31 新增)
前端:
- AuditRulesPage 重写: DB类型Tab+DDL/DML分组+参数编辑
- SettingsPage: 系统设置主页(审核规则/公告/推送/LDAP)
- NotificationPage: 钉钉/飞书/SMTP配置
- LdapConfigPage: LDAP设置+测试连接
- AnnouncementPage: 公告Markdown编辑
- 去掉左下角角色切换demo
- 侧边栏合并为: 系统设置(含审核规则+公告+推送+LDAP)
|
2026-05-22 22:26:10 +08:00 |
|
logan
|
d5d19d6be4
|
feat: 项目重命名 SQL-Platform + 数据源表单重写(连接模式/流程/排除DB/脱敏)
- 项目名称 Web-Lite Pro → SQL-Platform 全局替换(13处)
- Instance 模型新增: access_mode, workflow, excluded_databases, mask_fields
- 创建数据源表单: 分区卡片(数据源信息/连接模式/流程/高级配置)
- 后端 JSON 字段序列化/反序列化
- 新增 5 个 Instance 字段测试 (133 total)
|
2026-05-22 22:08:05 +08:00 |
|
 loganandClaude Opus 4.7
|
439155c92e
|
Initial commit: SQL audit platform v0.1.0
FastAPI backend with auth, user, instance, ticket, query, dashboard APIs.
React + TypeScript frontend with mock data UI (10 pages).
SQLite + async SQLAlchemy, JWT auth, role-based access control.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-22 11:11:57 +08:00 |
|