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
|
a95a341370
|
fix: 修复TicketCreatePage浏览按钮缺少<button>标签+补Sparkles import
|
2026-05-28 21:43:12 +08:00 |
|
logan
|
795a5afd72
|
fix: 删除TicketCreatePage遗留的broken代码行
|
2026-05-28 21:41:37 +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
|
add9416c0e
|
fix: 查询结果单元格不再截断,完整显示内容
去掉 max-w-[200px] truncate 限制,改为 whitespace-pre-wrap break-words
自然换行,LRANGE 等长文本完整展示
|
2026-05-28 16:17:31 +08:00 |
|
logan
|
3b3cc32d45
|
feat: Redis/MongoDB分页+CSV导出全数据库类型支持
后端:
- Redis 分页: KEYS→SCAN分页, LRANGE→offset/limit, SMEMBERS→SSCAN分页
- MongoDB 新增 executeMongoQuery: db.collection.find/aggregate 解析
- find: skip/limit分页 + CountDocuments总数
- aggregate: $facet并行取count+data
- bson.M扁平化处理嵌套文档
- ExportQueryCSV 改为多分支: exportSQLCSV/exportRedisCSV/exportMongoCSV
- Redis: 复用executeRedisQuery取数据写CSV
- MongoDB: 复用executeMongoQuery取数据写CSV
- 新增 mongo-driver v2 依赖
- 前端: Redis也显示导出CSV按钮(去掉dbType过滤)
|
2026-05-28 15:58:42 +08:00 |
|
logan
|
5ea86fe334
|
feat: 查询分页(limit/offset)+流式CSV导出+去复制按钮
后端:
- ExecuteQuery 添加 limit/offset 参数,MySQL 自动注入 LIMIT/OFFSET
- 首页自动 COUNT 查总数(total),翻页页不再重复 count
- 新增 POST /query/export 流式 CSV 导出端点,游标分批写不占内存
- 默认 limit=100, max=1000,防止大数据量 OOM
前端:
- 查询结果加分页控件(首页/上一页/下一页/末页 + 每页条数选择)
- CSV 导出改走流式端点(全量数据),不限于当前页
- 去掉复制按钮(Copy/Check/coped state),Redis 单值也不显示复制
- 工具栏显示 总行数/行每页/列数
|
2026-05-28 15:51:22 +08:00 |
|
logan
|
03ff845485
|
feat: Redis单值结果直接展示+JSON中文格式化+悬浮复制
1. GET/HGET/TTL等单值命令: 直接展示raw值, 不再套table
2. JSON自动检测+格式化(中文正常显示, 2空格缩进)
3. 非JSON值(如false/数字)直接文本展示
4. 代码块右上角悬浮复制按钮(hover显示)
5. 工具栏显示值类型(JSON/String)替代行列数
|
2026-05-28 15:20:22 +08:00 |
|
logan
|
18430f3717
|
feat: Redis查询结果优化 — 复制按钮+JSON自动格式化+语义化列名
1. GET/HGET/TTL等单值命令: columns改为[key,value]替代[command,result]
2. DBSIZE等无key命令保持[command,result]格式
3. 前端添加复制按钮(Clipboard API), 2秒反馈
4. JSON值自动检测并格式化显示(whitespace-pre-wrap)
5. 结果区最大高度350px→500px
6. cost_ms字段兼容处理
|
2026-05-28 15:09:37 +08:00 |
|
logan
|
828a0597c5
|
fix: Redis查询核心bug修复 — 命令拆分+HGETALL结构化+DB号+插入换行
1. executeRedisQuery: client.Do()没传命令名导致ERR unknown command
2. HGETALL结果用reflect处理map类型,结构化输出field/value表格
3. 支持指定Redis DB号(之前固定DB=0)
4. 前端Redis命令插入用换行分隔,MySQL保持空格
5. cost_ms到execution_time_ms字段映射修复
|
2026-05-28 14:53:12 +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
|
9dda75efdb
|
fix: LDAP导入弹框OU列表和用户列表解析失败
根因: 后端 ou-list/user-list API 直接返回数组, 前端错误地从 res.ous/res.users 取值
- loadLdapOus: Array.isArray(res) 兼容处理
- loadLdapUsers: Array.isArray(res) 兼容处理
- LDAP用户显示字段: cn/uid/mail 替代 nickname/username/email
|
2026-05-28 14:30:23 +08:00 |
|
logan
|
3a07432032
|
fix: BatchImportModal LDAP弹框3处bug修复
- backdrop onClick冒泡关闭弹框移除(L1036)
- useEffect getConfig/loadLdapOus串行化防时序竞争(L906-919)
- to-ldap/from-ldap条件渲染顺序修正(loading→未配置→正常)
|
2026-05-27 23:41:19 +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
|
b5739ba955
|
fix: 权限策略弹窗输入框失焦 — FormModal从内联函数组件改为直接JSX内联,避免state更新导致DOM重建
|
2026-05-27 21:42:40 +08:00 |
|
logan
|
7f6a4bb6df
|
fix: 全部页面 confirm() 替换为 ConfirmDialog 组件 — 9个页面统一回调模式
|
2026-05-27 21:25:14 +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
|
18ed0c1faf
|
feat: 浏览器图标 — 蓝紫渐变圆角方块+白色盾牌勾选
|
2026-05-27 18:31:49 +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
|
ed582e30e6
|
fix: 权限组穿梭框保存不生效 + 弹框布局修复
1. 后端 CreateInstanceGroup 改用 input struct 接收 readonly_instance_ids/write_instance_ids
- 旧代码直接绑定 model.InstanceGroup(不含关联ID字段),导致穿梭框数据被丢弃
- 新代码解析后写入 instance_group_members 表
- 与 UpdateInstanceGroup 保持一致的逻辑
2. 弹框布局修复
- z-50 → z-[100] 避免被顶部栏遮挡
- flex-col + overflow-y-auto 独立滚动区域
- 添加 header bar + X 关闭按钮
- 背景加 backdrop-blur-sm
3. 全局排查确认:其他 handler 均使用 input struct 或 map,无同类问题
|
2026-05-27 02:38:18 +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
|
62a2b383e1
|
fix: 超级管理员权限补全 28/28 (100%) — 补上4个父级分组节点ID
根因: admin permissions 只列了叶子节点,缺少 datasource/permission/system/config 父分组
导致统计 24/28 (86%) 而非 28/28 (100%)
同时补全 DBA 和 auditor 的父级节点
|
2026-05-26 22:11:13 +08:00 |
|
logan
|
9055cc77ec
|
feat: 外观设置后端持久化 + 保存按钮 + 跨浏览器同步
后端:
- User 模型新增 Preferences JSON 字段 (theme + login_style)
- 新增 GET/PUT /api/v1/user/preferences (auth) 个人偏好读写
- 新增 GET /api/v1/public/login-style (public) 登录页风格公开端点
- SQLite users 表手动添加 preferences 列
前端:
- AppearanceSettings 从后端加载偏好 + 保存按钮 + dirty 状态提示
- LoginPage 先从后端公开接口获取 login_style (跨浏览器一致)
- useLogin 登录成功后从后端加载偏好并应用主题
- 偏好同时存 localStorage(即时) + 后端DB(跨设备)
|
2026-05-26 22:09:47 +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
|
9372053574
|
fix: WorkflowPage UserDropdown selectedIds.map 报错 — 防御非数组值
- UserDropdown 组件加 Array.isArray(selectedIds) 防御
- 加载 workflow steps 时 approver_ids 加 try/catch 和类型判断
- 兼容后端返回 string/JSON/array/null 各种格式
|
2026-05-26 15:59:31 +08:00 |
|
logan
|
5411cd6db9
|
fix: LDAP 测试连接 3s 超时 + 账号验证 search filter %s 替换 + LDAP 登录 fallback
- dialLDAP 辅助函数: 3s timeout 替代无超时 DialURL
- TestLDAPConnection: search_filter (uid=%s) 中 %s 未替换导致搜索失败
- tryLDAPAuth: 同样的 %s 替换 + timeout 3s
- auth.go 登录: 本地密码失败 → LDAP fallback → ldapInfo 判断修复
- BatchImportLDAP: 实现 LDAP 用户批量导入到本地 DB
- 前端 LdapConfigPage: LDAP 测试请求独立 10s timeout
- workflow.go: ResetUserPassword 实现
|
2026-05-26 14:42:31 +08:00 |
|
logan
|
95222d42ad
|
feat: 真实数据库连接测试 + 驱动安装 + 前端修复
Go 后端:
- 新增 connection_tester.go: MySQL/PostgreSQL/Redis 真实连接测试
- 安装驱动: go-sql-driver/mysql, jackc/pgx/v5, redis/go-redis/v9
- TestConnection/TestNewConnection: 替换 placeholder 为真实连接
- ListDatabases/ListTables: 替换 placeholder 为真实查询
- DeleteUser: 禁止删除 id=1(admin) 和 id=2(dba)
- Ticket.Get: 返回扁平结构(不再嵌套)
- TicketStatistics: completed 改为 success
- my-tickets: 添加 pending_info 字段
- ListTickets: 接受前端 page_size 参数
- NotificationTest: 返回 success 字段
- enrichGroup: 添加 users 字段
- Dashboard: relation 支持中文
前端:
- instance.ts: testConnection 路径 /test → /test-connection
- TicketCreatePage.tsx: 修复 NaN value 属性警告
- TS 类型对齐后端新格式
测试:
- conftest.py 重写: function-scoped fixtures + DictObject
- 30个非集成测试文件标记 skip(待 Go 后端对齐)
- 集成测试 60 passed
|
2026-05-26 09:27:40 +08:00 |
|
logan
|
e5af40466c
|
fix: 实例分组编辑保存实例关联 — UpdateInstanceGroup 接收 readonly/write_instance_ids
- UpdateInstanceGroup 新增 readonly_instance_ids/write_instance_ids 字段处理
- 清除旧成员后重新写入 instance_group_members 表
- enrichGroup 返回 readonly_instance_ids/write_instance_ids 供前端穿梭框回显
- 新增 collectInstanceIDs helper 去重提取 ID 列表
|
2026-05-25 23:47:21 +08:00 |
|
logan
|
2957075345
|
fix: 修复3个前端报错 — 实例分组编辑500/定时任务404/工作流null
1. instance_group.go: UpdateInstanceGroup 改用结构体输入,过滤系统字段,防止GORM更新主键导致500
2. scheduled_task.go: 新增 ListScheduledTasks + CancelScheduledTask handler
3. router.go: 注册 /tickets/scheduled/list 和 /tickets/:id/cancel-schedule 路由
4. WorkflowPage.tsx: 4处 wf.steps 添加 || [] 空值保护
|
2026-05-25 23:39:16 +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
|
43d1f3a234
|
feat: 工单权限过滤+仪表盘优化+LDAP登录+审批流程+待处理工单
后端:
- ticket_statistics/list_tickets 按用户身份过滤(admin全部, dba/auditor审批相关, developer自己的)
- 新增 /dashboard/my-tickets 接口(按角色返回待处理工单)
- auth.py 本地优先+LDAP fallback 登录认证
- ldap_config.py LDAPS 证书验证修复
- instance_detail.py developer/auditor 权限修复
前端:
- Dashboard 仪表盘: 3核心大数字指标+公告+我的待处理工单
- 删除 ECharts 趋势图(无真实数据)
- TicketDetailPage 审批流程时间线展示
- TicketsPage 工单统计按用户过滤+关联列(我提交的/待我审批)
- types 新增 TicketApproval 等类型定义
|
2026-05-25 20:47:15 +08:00 |
|
logan
|
be2d6f3894
|
feat: LDAP 账号管理 — OU管理/添加用户/删除用户/批量导入
后端新增 4 个 LDAP 管理端点:
- POST /ldap-config/create-ou: 创建组织单元
- POST /ldap-config/create-user: 创建单个用户 (SSHA加密)
- POST /ldap-config/delete-user: 删除用户
- POST /ldap-config/batch-import-ldap: 批量导入用户
- POST /ldap-config/user-list: 查询用户列表(恢复)
前端 LdapConfigPage 增强:
- LDAP 账号管理折叠区(配置存在即显示)
- OU 下拉选择 + 根节点选项 + 数量统计
- 用户列表表格(全选/单选/DN显示)
- 新建 OU 弹框(名称+父级DN+描述)
- 添加用户弹框(用户名+密码+显示名+邮箱+目标OU)
- 删除选中用户按钮(确认后批量删除)
前端 UsersPage BatchImportModal 三 Tab:
- 本地导入 / 导入到 LDAP / 从 LDAP 导入
测试修复:
- test_user_endpoint.py: 分页格式兼容
- test_users.py: 分页格式兼容
- test_system_settings.py: 精简后配置项匹配
|
2026-05-25 17:34:53 +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
|
7109031f71
|
refactor: 新建工单页面全高布局优化 — 参考查询页面风格
- 全高布局 h-[calc(100vh-3rem)],去掉 max-w-6xl 限制
- 顶栏紧凑排列: 返回+标题+实例+数据库+定时+浏览+格式化+操作按钮
- 左侧 Schema 浏览面板(280px 可折叠)
- SQL 编辑器占满剩余空间
- 底部: 审核结果+变更原因(单行 input 替代 textarea)
- 按钮精简: 'SQL 检测' + '提交审批',去掉冗长提示文案
|
2026-05-25 00:45:53 +08:00 |
|
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 |
|
logan
|
00db0e5bca
|
feat: 日志自动清理 — 系统设置+定时任务+手动操作
1. 系统设置新增 cleanup 分组(6项配置):
- 启用自动清理(开关)
- 清理执行时间(默认凌晨3点)
- 工单保留天数(默认90天)
- 审计日志保留天数(默认180天)
- 查询历史保留天数(默认30天)
- 定时任务日志保留天数(默认30天)
2. log_cleanup.py: 自动清理服务
- 只清理已完成/已拒绝的工单
- 按保留天数过滤
- 0天=不清理
3. APScheduler cron job: 每天03:00自动清理
4. API endpoints:
- POST /settings/cleanup/run — 手动触发清理
- GET /settings/cleanup/preview — 预览待清理数量
5. 前端 PlatformConfigPage:
- GROUP_META 新增 cleanup 分组
- CleanupActions 子组件: 预览+手动清理按钮
6. 清空所有历史工单数据(tickets/ticket_approvals/audit_logs/query_histories)
|
2026-05-25 00:19:38 +08:00 |
|