Logan.Li
ac498c7ba2
refactor(frontend): split 7 oversized pages into feature co-location
...
Per guide ch.7 page split pattern (skeleton orchestrates, private
components live in features/<domain>/):
- InstancePage 1716->328, UsersPage 1309->240, TicketsPage 1076->195,
TicketDetailPage 911->287, QueriesPage 883->479, LdapConfigPage 860->393,
WorkflowPage 852->194
- new feature modules: datasource/ rbac/ ticket/ query/ system/ldap/
governance/workflow/ (components + hooks + types + utils)
- stable keys replace index keys in dynamic lists; polling intervals
and toast call sites preserved 1:1 (verified by agents)
- filter/pagination state moved to URL query via new useQueryState hook
(Instance/Users/Tickets/AuditLogs pages): refresh/share/back-button
restore state; composite updates applied atomically
- permission pure functions extracted to lib/permissions.ts (used by
useAuth + useLogin); page-size audit: 0 pages over 700-line budget
2026-10-26 17:54:15 +08:00
Logan.Li
58bbc394e9
feat: enhance redis and production IA
2026-07-07 10:39:33 +08:00
logan
bef2f98f28
feat: 审批/执行角色权限校验 + LDAP用户禁止重置密码
...
- ticket.go: ApproveTicket 前置角色检查(admin/dba/auditor),ExecuteTicket 前置角色检查(admin/dba)
- ticket.go: 创建工单时自动从 instance.workflow_id 读取关联审批流程
- UsersPage.tsx: LDAP 用户重置密码按钮置灰(disabled+opacity-30+提示文案)
- 权限模型: 审核=管理员/DBA/审核员, 执行=管理员/DBA, 提交=所有角色
2026-05-31 22:20:24 +08:00
logan
c5270f82c1
fix: 批量删除用户改用 ConfirmDialog 替代浏览器原生 confirm()
...
- handleBatchAction 删除分支改为 setDeleteConfirm 弹 ConfirmDialog
- 确认后执行删除,取消则关闭弹框
2026-05-31 14:34:21 +08:00
hermes-$(hostname)
8384006ae9
feat: 用户管理列表增加来源字段(auth_source),支持本地/LDAP筛选
2026-05-29 17:05:56 +00: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
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
7f6a4bb6df
fix: 全部页面 confirm() 替换为 ConfirmDialog 组件 — 9个页面统一回调模式
2026-05-27 21:25:14 +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
88d064ea95
feat: 权限组重构为一组双Transfer(只读+写入) + 用户管理加权限组关联
...
后端:
- 新增 instance_group_members 中间表 (group_id + instance_id + access_type)
- 一个权限组同时包含 readonly 和 write 两类实例
- API create/update 支持 readonly_instance_ids + write_instance_ids
- Schema Response 返回 readonly_instances + write_instances 分类型列表
- 20 个测试全部通过
前端:
- InstanceGroupPage: 创建/编辑都是上下两个 Transfer 同时配置只读和写入
- 列表卡片显示 [N只读 · M写入] 标签
- 详情页分只读实例和写入实例两块展示
- UsersPage 编辑用户弹框加权限组多选
- instanceGroup.ts API 适配新接口
2026-05-24 20:08:31 +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
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
9f56e866f2
fix: 移除所有弹框遮罩层点击关闭 — 防止输入时误触关闭
...
涉及文件 (12处):
- InstancePage.tsx: 添加数据源弹框
- UsersPage.tsx: 新建/编辑/重置密码/详情弹框 (4处)
- RolesPage.tsx: 克隆角色弹框
- InstanceGroupPage.tsx: 新建/编辑/关联实例/关联用户弹框 (4处)
- SlowQueryPage.tsx: 查询对比弹框
- RedisDetailPage.tsx: 键详情/新增键弹框 (2处)
改动: 遮罩层div移除onClick,只能通过X按钮或取消按钮关闭
2026-05-23 23:38:58 +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
27989274f5
feat: Phase 2 — frontend-backend integration complete
...
- All 5 core pages now use real API instead of mock data
- Dashboard: /api/v1/dashboard/stats
- Tickets: list/create/detail/approve/execute/statistics
- Users: list/create/toggle-active/delete
- Instances: list/create/test-connection/delete
- Queries: execute with result display + sensitive field masking
- Updated DashboardStats type to match backend schema
- Fixed InstancePage to work with InstanceResponse (no qps/cpu/metrics yet)
- Added create forms for Tickets, Users, Instances
- Added connection test in InstanceDetail
- Updated TDD_PLAN.md: Phase 1 ✅ (44 tests), Phase 2 ✅
- Updated ROADMAP.md: v0.2.0 ✅
- Updated PROJECT_EVALUATION.md: score 5.7 → 6.2
- Frontend build passes with zero TS errors
- 44 backend tests still passing
2026-05-22 12:39:48 +08:00
logan and Claude 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