Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
refactor(saas): 重构认证中间件与限流策略
- 登录限流调整为5次/分钟/IP
- 注册限流调整为3次/小时/IP
- GET请求不计入限流
fix(saas): 修复调度器时间戳处理
- 使用NOW()替代文本时间戳
- 兼容TEXT和TIMESTAMPTZ列类型
feat(saas): 实现环境变量插值
- 支持${ENV_VAR}语法解析
- 数据库密码支持环境变量注入
chore: 新增前端管理界面
- 基于React+Ant Design Pro
- 包含路由守卫/错误边界
- 对接58个API端点
docs: 更新安全加固文档
- 新增密钥管理规范
- 记录P0安全项审计结果
- 补充TLS终止说明
test: 完善配置解析单元测试
- 新增环境变量插值测试用例
177 lines
7.0 KiB
Plaintext
177 lines
7.0 KiB
Plaintext
uid=27_0 RootWebArea "ZCLAW Admin" url="http://localhost:3000/logs"
|
|
uid=27_13 alert atomic live="assertive" relevant="additions text"
|
|
uid=28_0 complementary
|
|
uid=28_1 link "Z ZCLAW Admin" url="http://localhost:3000/"
|
|
uid=28_2 StaticText "Z"
|
|
uid=28_3 StaticText "ZCLAW"
|
|
uid=28_4 StaticText "Admin"
|
|
uid=28_5 navigation
|
|
uid=28_6 link "仪表盘" url="http://localhost:3000/"
|
|
uid=28_7 StaticText "仪表盘"
|
|
uid=28_8 link "账号管理" url="http://localhost:3000/accounts"
|
|
uid=28_9 StaticText "账号管理"
|
|
uid=28_10 link "服务商" url="http://localhost:3000/providers"
|
|
uid=28_11 StaticText "服务商"
|
|
uid=28_12 link "模型管理" url="http://localhost:3000/models"
|
|
uid=28_13 StaticText "模型管理"
|
|
uid=28_14 link "Agent 模板" url="http://localhost:3000/agent-templates"
|
|
uid=28_15 StaticText "Agent 模板"
|
|
uid=28_16 link "API 密钥" url="http://localhost:3000/api-keys"
|
|
uid=28_17 StaticText "API 密钥"
|
|
uid=28_18 link "用量统计" url="http://localhost:3000/usage"
|
|
uid=28_19 StaticText "用量统计"
|
|
uid=28_20 link "中转任务" url="http://localhost:3000/relay"
|
|
uid=28_21 StaticText "中转任务"
|
|
uid=28_22 link "系统配置" url="http://localhost:3000/config"
|
|
uid=28_23 StaticText "系统配置"
|
|
uid=28_24 link "提示词管理" url="http://localhost:3000/prompts"
|
|
uid=28_25 StaticText "提示词管理"
|
|
uid=28_26 link "操作日志" focusable focused url="http://localhost:3000/logs"
|
|
uid=28_27 StaticText "操作日志"
|
|
uid=28_28 button
|
|
uid=28_29 StaticText "A"
|
|
uid=28_30 StaticText "Admin"
|
|
uid=28_31 StaticText "super_admin"
|
|
uid=28_32 button "退出登录"
|
|
uid=28_33 banner
|
|
uid=28_34 heading "操作日志" level="1"
|
|
uid=28_35 button "通知"
|
|
uid=28_36 main
|
|
uid=32_0 combobox expandable haspopup="listbox" value="全部操作"
|
|
uid=32_1 button "刷新"
|
|
uid=32_2 StaticText "操作类型"
|
|
uid=32_3 StaticText "目标类型"
|
|
uid=32_4 StaticText "目标 ID"
|
|
uid=32_5 StaticText "详情"
|
|
uid=32_6 StaticText "IP 地址"
|
|
uid=32_7 StaticText "时间"
|
|
uid=32_8 StaticText "account.login"
|
|
uid=32_9 StaticText "account"
|
|
uid=32_10 StaticText "db5fb656..."
|
|
uid=32_11 StaticText "-"
|
|
uid=32_12 StaticText "127.0.0.1"
|
|
uid=32_13 StaticText "2026/03/29 21:47:15"
|
|
uid=32_14 StaticText "account.login"
|
|
uid=32_15 StaticText "account"
|
|
uid=32_16 StaticText "db5fb656..."
|
|
uid=32_17 StaticText "-"
|
|
uid=32_18 StaticText "127.0.0.1"
|
|
uid=32_19 StaticText "2026/03/29 21:45:39"
|
|
uid=32_20 StaticText "account.login"
|
|
uid=32_21 StaticText "account"
|
|
uid=32_22 StaticText "db5fb656..."
|
|
uid=32_23 StaticText "-"
|
|
uid=32_24 StaticText "127.0.0.1"
|
|
uid=32_25 StaticText "2026/03/29 21:45:21"
|
|
uid=32_26 StaticText "account.login"
|
|
uid=32_27 StaticText "account"
|
|
uid=32_28 StaticText "db5fb656..."
|
|
uid=32_29 StaticText "-"
|
|
uid=32_30 StaticText "127.0.0.1"
|
|
uid=32_31 StaticText "2026/03/29 21:44:59"
|
|
uid=32_32 StaticText "account.login"
|
|
uid=32_33 StaticText "account"
|
|
uid=32_34 StaticText "db5fb656..."
|
|
uid=32_35 StaticText "-"
|
|
uid=32_36 StaticText "127.0.0.1"
|
|
uid=32_37 StaticText "2026/03/29 21:11:52"
|
|
uid=32_38 StaticText "account.login"
|
|
uid=32_39 StaticText "account"
|
|
uid=32_40 StaticText "db5fb656..."
|
|
uid=32_41 StaticText "-"
|
|
uid=32_42 StaticText "127.0.0.1"
|
|
uid=32_43 StaticText "2026/03/29 21:11:24"
|
|
uid=32_44 StaticText "account.login"
|
|
uid=32_45 StaticText "account"
|
|
uid=32_46 StaticText "db5fb656..."
|
|
uid=32_47 StaticText "-"
|
|
uid=32_48 StaticText "127.0.0.1"
|
|
uid=32_49 StaticText "2026/03/29 21:09:42"
|
|
uid=32_50 StaticText "account.login"
|
|
uid=32_51 StaticText "account"
|
|
uid=32_52 StaticText "db5fb656..."
|
|
uid=32_53 StaticText "-"
|
|
uid=32_54 StaticText "127.0.0.1"
|
|
uid=32_55 StaticText "2026/03/29 21:09:24"
|
|
uid=32_56 StaticText "account.login"
|
|
uid=32_57 StaticText "account"
|
|
uid=32_58 StaticText "db5fb656..."
|
|
uid=32_59 StaticText "-"
|
|
uid=32_60 StaticText "127.0.0.1"
|
|
uid=32_61 StaticText "2026/03/29 21:06:08"
|
|
uid=32_62 StaticText "account.login"
|
|
uid=32_63 StaticText "account"
|
|
uid=32_64 StaticText "db5fb656..."
|
|
uid=32_65 StaticText "-"
|
|
uid=32_66 StaticText "127.0.0.1"
|
|
uid=32_67 StaticText "2026/03/29 21:03:10"
|
|
uid=32_68 StaticText "account.login"
|
|
uid=32_69 StaticText "account"
|
|
uid=32_70 StaticText "db5fb656..."
|
|
uid=32_71 StaticText "-"
|
|
uid=32_72 StaticText "127.0.0.1"
|
|
uid=32_73 StaticText "2026/03/29 20:57:19"
|
|
uid=32_74 StaticText "account.login"
|
|
uid=32_75 StaticText "account"
|
|
uid=32_76 StaticText "db5fb656..."
|
|
uid=32_77 StaticText "-"
|
|
uid=32_78 StaticText "127.0.0.1"
|
|
uid=32_79 StaticText "2026/03/29 20:56:41"
|
|
uid=32_80 StaticText "account.login"
|
|
uid=32_81 StaticText "account"
|
|
uid=32_82 StaticText "db5fb656..."
|
|
uid=32_83 StaticText "-"
|
|
uid=32_84 StaticText "127.0.0.1"
|
|
uid=32_85 StaticText "2026/03/29 20:53:50"
|
|
uid=32_86 StaticText "account.login"
|
|
uid=32_87 StaticText "account"
|
|
uid=32_88 StaticText "db5fb656..."
|
|
uid=32_89 StaticText "-"
|
|
uid=32_90 StaticText "127.0.0.1"
|
|
uid=32_91 StaticText "2026/03/29 20:40:31"
|
|
uid=32_92 StaticText "account.login"
|
|
uid=32_93 StaticText "account"
|
|
uid=32_94 StaticText "db5fb656..."
|
|
uid=32_95 StaticText "-"
|
|
uid=32_96 StaticText "127.0.0.1"
|
|
uid=32_97 StaticText "2026/03/29 20:37:48"
|
|
uid=32_98 StaticText "account.login"
|
|
uid=32_99 StaticText "account"
|
|
uid=32_100 StaticText "8b1c82f1..."
|
|
uid=32_101 StaticText "-"
|
|
uid=32_102 StaticText "127.0.0.1"
|
|
uid=32_103 StaticText "2026/03/29 20:35:14"
|
|
uid=32_104 StaticText "account.create"
|
|
uid=32_105 StaticText "account"
|
|
uid=32_106 StaticText "8b1c82f1..."
|
|
uid=32_107 StaticText "-"
|
|
uid=32_108 StaticText "127.0.0.1"
|
|
uid=32_109 StaticText "2026/03/29 20:34:49"
|
|
uid=32_110 StaticText "account.login"
|
|
uid=32_111 StaticText "account"
|
|
uid=32_112 StaticText "db5fb656..."
|
|
uid=32_113 StaticText "-"
|
|
uid=32_114 StaticText "127.0.0.1"
|
|
uid=32_115 StaticText "2026/03/29 20:09:59"
|
|
uid=32_116 StaticText "account.login"
|
|
uid=32_117 StaticText "account"
|
|
uid=32_118 StaticText "db5fb656..."
|
|
uid=32_119 StaticText "-"
|
|
uid=32_120 StaticText "127.0.0.1"
|
|
uid=32_121 StaticText "2026/03/29 20:09:27"
|
|
uid=32_122 StaticText "account.login"
|
|
uid=32_123 StaticText "account"
|
|
uid=32_124 StaticText "0a63282a..."
|
|
uid=32_125 StaticText "-"
|
|
uid=32_126 StaticText "127.0.0.1"
|
|
uid=32_127 StaticText "2026/03/29 19:59:22"
|
|
uid=32_128 StaticText "第 "
|
|
uid=32_129 StaticText "1"
|
|
uid=32_130 StaticText " 页 / 共 "
|
|
uid=32_131 StaticText "7"
|
|
uid=32_132 StaticText " 页 ("
|
|
uid=32_133 StaticText "129"
|
|
uid=32_134 StaticText " 条)"
|
|
uid=32_135 button "上一页" disableable disabled
|
|
uid=32_136 button "下一页"
|