Commit Graph

62 Commits

Author SHA1 Message Date
WrBug 60dbfbcfde refactor: 将部署和删除功能分离到独立的 workflow 文件
- 创建 docker-build.yml:专门负责构建和推送 Docker 镜像
- 创建 docker-delete.yml:专门负责删除 Docker 镜像标签
- 简化 docker-build.yml,移除删除逻辑
- 更新文档,说明两个独立的 workflow 文件及其职责
2025-12-07 17:26:04 +08:00
WrBug 5e5e2813ea fix: 修复 Docker 镜像删除时的 401 认证错误
- 改用 JWT Token 认证方式(推荐用于 Access Token)
- 添加 Basic Auth 降级方案(适用于密码)
- 改进 Token 提取逻辑,支持多种格式
- 添加详细的错误提示(401、403 等)
- 更新文档,说明如何配置 Docker Hub Access Token 权限
2025-12-07 17:13:56 +08:00
WrBug 7d752073fb feat: 添加安全检查和部署优化
- 添加 JWT_SECRET 和 ADMIN_RESET_PASSWORD_KEY 安全检查,防止使用默认值
- 创建 docker-compose.prod.yml 和 docker-compose.prod.env.example,支持独立部署
- 添加 Nginx 反向代理配置示例,支持 HTTPS 和域名绑定
- 更新部署文档,将 Docker Hub 部署方式放在首位
- 添加多架构构建支持(amd64、arm64)
- 优化部署文档结构,提供更清晰的部署指南
2025-12-07 17:08:56 +08:00
WrBug c114241ffb docs: 重新整理 README 并创建开发文档
- 重新组织 README 为三个部分:产品功能说明、如何部署、开发文档
- 创建 DEVELOPMENT.md 开发文档,包含完整的开发指南
- 优化文档结构和内容,提升可读性
2025-12-07 16:53:59 +08:00
WrBug b069e54b89 feat: 添加版本号显示和自动构建/删除 Docker 镜像功能
- 添加前端版本号显示(桌面端和移动端)
- 实现 GitHub Actions 自动构建和推送 Docker 镜像
- 实现删除 release 时自动删除对应 Docker 镜像
- 支持版本号格式:v数字.数字.数字 或 v数字.数字.数字-后缀
- 添加版本号管理文档
- 更新 Dockerfile 和部署脚本支持版本号构建参数
2025-12-07 16:46:18 +08:00
WrBug 07d1b50b9b feat: 实现公告板功能
- 后端:从 GitHub Issues API 获取公告数据
  - 支持筛选指定 assignees 的评论
  - 支持排除指定 issue 的评论
  - 从评论第一行提取标题(移除 Markdown 格式)
  - 支持获取 reactions 数据(+1、heart、laugh 等)
  - 实现 10 分钟缓存机制
  - 强制刷新时,如果被限流则保留缓存数据
  - 添加 GitHub API 健康检查

- 前端:公告列表和详情页面
  - 响应式设计(移动端和桌面端)
  - 移动端使用侧边抽屉显示列表
  - 支持 Markdown 渲染
  - 支持内容折叠(超过 30 行)
  - 显示 reactions(使用 emoji)
  - 添加刷新按钮(支持强制刷新)
  - 公告菜单项放在第一位
  - 默认页面改为公告页

- 其他:
  - 更新 favicon 为 SVG 格式
  - 添加 GitHub API 限流方案文档
  - 添加 GitHub Token 配置文档
2025-12-07 16:15:59 +08:00
WrBug 89e3c726b2 feat: 优化UI和功能,添加图标生成脚本
- 修复未匹配订单更新逻辑,添加去重机制避免重复赎回
- 优化跟单配置列表,移除订单菜单中的编辑选项
- 限制账户编辑功能,只允许编辑账户名称
- 优化Layout布局,将PC端图标移至标题下方,添加Telegram群链接
- 添加图标生成脚本到polymarket-demo目录
- 添加多个尺寸的favicon图标文件
2025-12-07 14:45:59 +08:00
WrBug 5c136ab0f4 fix: 修复未匹配订单更新逻辑和前端API类型定义
- 修复 PositionCheckService 中未匹配订单更新逻辑,当仓位数量大于等于订单数量总和时也能正确处理
- 修复前端 API 类型定义,添加 remark 和 website 字段支持
- 添加 Leader 备注和网站字段支持
2025-12-07 05:07:58 +08:00
WrBug cb167d442f feat: 重构仓位轮训逻辑并修复多语言配置
主要改动:
1. 创建独立的 PositionCheckService 服务
   - 将仓位检查逻辑从 PositionPushService 中分离
   - 实现待赎回仓位检查和未卖出订单检查
   - 实现订单状态更新逻辑(FIFO策略)

2. 修改 PositionPushService
   - 后端启动时自动启动轮训任务
   - 每次轮训后推送全量数据给所有订阅的客户端
   - 调用 PositionCheckService 进行仓位检查

3. 自动赎回功能调整
   - 将自动赎回从跟单配置级别移到系统级别
   - 添加系统级自动赎回配置管理
   - 支持 Builder API Key 配置检查

4. 多语言配置修复
   - 修复 PositionCheckService 中的硬编码消息
   - 使用 MessageSource 获取多语言文本
   - 添加自动赎回和 Builder API Key 相关的多语言资源

5. 数据库迁移
   - V8: 添加跟单配置名称字段
   - V9: 将自动赎回配置移到系统配置表

6. 前端更新
   - 添加系统级自动赎回配置界面
   - 更新跟单配置管理界面
   - 添加 Builder API Key 配置界面
2025-12-07 02:06:19 +08:00
WrBug bfbbbdd1de feat: 实现 Builder API Key 系统级配置和 Gasless 交易支持
- 新增系统配置表(SystemConfig)用于存储 Builder API Key
- 实现 Builder API Key 的前端配置页面
- 集成 Builder Relayer API 支持 Gasless 交易
- 在 API 健康检查中添加 Builder Relayer API 检测
- 移除前端 API 测试功能,简化配置页面
- 修复赎回仓位时的 Builder API Key 检查逻辑
- 更新错误处理,引导用户配置 Builder API Key
2025-12-06 23:10:26 +08:00
WrBug 3369dbb248 feat: 添加价格区间过滤功能并优化UI
- 添加价格区间过滤功能(minPrice/maxPrice)
  - 数据库迁移:添加价格区间字段到 copy_trading 和 copy_trading_templates 表
  - 后端:实体类、DTO、服务层支持价格区间配置和过滤
  - 前端:模板和配置页面添加价格区间配置UI
  - 过滤逻辑:在订单创建前检查价格是否在配置区间内

- 优化价格区间文案,使其更易懂
  - 明确说明是 Leader 交易价格
  - 详细说明三种配置方式(区间、只填最低价、只填最高价)

- 补充多语言翻译
  - 为 zh-CN、zh-TW、en 添加价格区间相关翻译
  - 添加价格区间过滤类型翻译
  - 添加通用翻译(prev、next、items、total)

- 修复复制模板功能
  - 补充缺失的过滤条件字段(minOrderDepth、maxSpread、minOrderbookDepth、minPrice、maxPrice)
  - 在复制模板表单中添加所有过滤条件配置项

- 已过滤订单列表优化
  - 添加移动端卡片样式布局
  - 在筛选下拉菜单中添加价格区间过滤类型选项

- 订单页面返回按钮优化
  - 买入订单、卖出订单、匹配关系页面的返回按钮改为返回上一页(navigate(-1))
  - 使用多语言支持返回按钮文本
2025-12-05 23:52:49 +08:00
WrBug 6c13362b17 fix: 修复前端编译错误(移除未使用的导入和参数) 2025-12-05 05:20:54 +08:00
WrBug 9b8150cf92 feat: 实现跟单筛选条件记录和展示功能
- 新增 FilteredOrder 实体和数据库表,记录被过滤的订单信息
- 在筛选失败时自动记录到数据库并发送 Telegram 通知
- 创建 FilteredOrderService 和 API 接口,支持查询被过滤订单列表
- 前端新增被过滤订单列表页面,支持按过滤类型筛选
- 修复价差计算逻辑,使用数组最大值和最小值而非第一个元素
- 优化编辑页面 UI,钱包和 Leader 显示与创建页面一致(只读)
- 添加多语言支持(中文、繁体中文、英文)
2025-12-05 05:18:20 +08:00
WrBug e68309ada0 fix: 修复 Telegram 推送消息对齐问题和自动生成账户名
- 修复 Telegram 订单成功/失败消息的左对齐问题,移除前导空格
- 在导入钱包时,如果未提供账户名,自动生成使用钱包地址后四位的名称
- 优化消息格式,确保在 Telegram 中正确显示
2025-12-05 02:59:49 +08:00
WrBug d0b454e7c8 fix: 修复前端语言切换时后端 header 未更新的问题
- 统一 localStorage key:LanguageSwitcher 同时保存到 i18n_language 和 i18nextLng
- 优化 API 请求拦截器:添加 getCurrentLanguage() 函数,优先从 localStorage 读取最新语言设置
- 支持兼容性:同时读取 i18n_language 和 i18nextLng(i18next 默认 key)
- 规范化语言格式:确保返回正确的语言代码(zh-CN, zh-TW, en)
2025-12-05 02:33:02 +08:00
WrBug 777710c2ed feat: 完善 Telegram 推送通知功能
- 推送模板优化:
  - 优先使用账户名称而不是钱包地址
  - 使用市场标题而不是16进制ID
  - 添加可点击的市场链接(支持 slug 和 conditionId)
  - 添加市场方向(outcome)显示
  - 数量和价格从订单详情API获取实际值
  - 失败通知只显示后端返回的msg,不显示完整堆栈

- 多语言支持:
  - 后端推送消息支持多语言(使用前端最后请求的语言)
  - 添加所有 ErrorCode 的多语言资源文件(中文简体、繁体、英文)
  - 通知消息文本全部使用多语言资源

- 功能改进:
  - 从订单详情获取实际的 side、price、size、outcome
  - 支持买入/卖出方向的多语言显示
  - 错误信息优化,只显示后端返回的错误消息
2025-12-05 02:20:46 +08:00
WrBug 41596887c9 feat: 改进下单错误处理和市场价格接口
- 修复市场价格接口:移除side参数,使用outcomeIndex判断方向
- 添加规范:禁止使用YES/NO字符串判断side,必须使用outcomeIndex
- 改进所有下单错误处理:所有错误都打印详细日志并存入数据库
  - AccountService.sellPosition: 添加完整错误日志
  - CopyOrderTrackingService.createOrderWithRetry: 所有失败都记录详细日志
  - recordFailedTrade: 改进错误信息存储,包含堆栈信息
  - PolymarketClobService.createSignedOrder: 添加完整错误日志
- 前端:更新市场价格接口调用,使用outcomeIndex替代side参数
- 清理:删除过时的i18n文档
2025-12-05 00:23:44 +08:00
WrBug 1a9407c544 feat: 完成前端多语言支持和菜单优化
- 缩短菜单标题,解决显示不全问题
- 添加跟随系统语言选项,作为默认选项
- 移除语言切换时的页面刷新,实现无刷新切换
- 完成主要页面的多语言替换:
  * ConfigPage - 全局配置页面
  * ResetPassword - 重置密码页面
  * LeaderList - Leader 列表页面
  * UserList - 用户列表页面
  * Statistics - 统计信息页面
  * OrderList - 订单列表页面
  * TemplateList - 模板列表页面
  * CopyTradingList - 跟单配置列表页面
- 添加简体中文、繁体中文和英文的完整翻译键
- 优化语言设置页面,支持跟随系统语言
2025-12-04 10:36:28 +08:00
WrBug 88be178cde fix: 修复移动端跟单配置管理和重试订单日志
- 移动端跟单配置管理添加Switch开关,支持开启/停用跟单
  - 在移动端卡片布局中添加Switch组件
  - 与桌面端功能保持一致

- 优化重试订单的日志记录逻辑
  - 第一次失败时不记录日志,静默重试
  - 只在重试后仍然失败时才记录日志
  - 减少不必要的日志输出,提高日志质量
2025-12-03 23:38:01 +08:00
WrBug a855a226e9 fix: 移除未使用的Checkbox导入
- 修复AccountDetail.tsx中未使用的Checkbox导入导致的编译错误
2025-12-03 23:08:37 +08:00
WrBug 166bec737b feat: 实现JWT失效机制和优化订单精度
- 实现JWT tokenVersion机制,修改密码后所有token自动失效
  - 在User实体中添加tokenVersion字段
  - 创建V2数据库迁移文件添加token_version列
  - 修改密码时递增tokenVersion
  - JWT中包含tokenVersion,验证时检查版本是否匹配
  - 支持HTTP API和WebSocket连接的token验证

- 优化订单精度计算,与SDK保持一致
  - BUY订单:使用原始价格计算makerAmount,避免精度丢失
  - SELL订单:使用原始价格计算takerAmount,确保与SDK结果一致
  - 修复之前使用舍入后价格导致的精度问题

- 前端自动登出功能
  - 响应拦截器检测认证错误(code 2001-2999)自动登出
  - 支持成功响应和错误响应中的认证错误检测
  - 自动清除token、断开WebSocket并跳转登录页
2025-12-03 23:01:43 +08:00
WrBug 2ad558da36 feat: 优化账户管理和订单功能
- 重置密码后自动跳转到登录页,登录页添加重置密码入口
- 移除默认账户相关逻辑和UI
- 移除前端API Key自动获取提示文案(后端保留自动获取逻辑)
- 修复SELL订单takerAmount计算精度问题,使用精确计算避免精度丢失
- 修复导入账户页面白屏问题(缺少Alert组件导入)
- 持仓出售支持百分比模式,使用原始精度数据计算,支持小数百分比
- 优化订单金额计算逻辑,确保与SDK一致
2025-12-03 21:39:48 +08:00
WrBug 99f2d7a850 feat: 实现 API Secret 和 API Passphrase 加密存储
- 修改 Account 实体注释,说明 apiSecret 和 apiPassphrase 已加密存储
- AccountService: 保存时加密 apiSecret 和 apiPassphrase,使用时解密
- CopyOrderTrackingService: 添加解密方法,使用前先解密
- OrderPushService: 添加解密方法,使用前先解密
- 移除所有向后兼容逻辑,直接解密,失败时抛出异常
- 所有敏感信息(私钥、API Secret、API Passphrase)现在都使用 AES-256 加密存储
2025-12-03 12:41:49 +08:00
WrBug 13c5a64dc3 fix: 修改跟单状态时统一使用 restartMonitoring 确保状态同步
- 创建跟单时:如果启用了,调用 restartMonitoring
- 更新跟单状态时:调用 restartMonitoring(而不是 addLeaderMonitoring/removeLeaderMonitoring)
- 删除跟单时:调用 restartMonitoring(而不是 removeLeaderMonitoring)
- 确保所有跟单状态变更后,轮询监听都能完全同步最新状态
2025-12-03 06:41:42 +08:00
WrBug ea8df61c59 fix: 修改跟单状态时使用 restartMonitoring 确保状态同步
- 在 updateCopyTradingStatus 中使用 restartMonitoring 替代 addLeaderMonitoring/removeLeaderMonitoring
- 确保启用/禁用跟单时,轮询监听状态完全同步
- 避免部分更新导致的状态不一致问题
2025-12-03 06:37:06 +08:00
WrBug 8bac55b943 feat: 优化跟单轮询自动启动/停止逻辑
- addLeader 时自动启动轮询任务(如果还没有运行)
- removeLeader 时自动停止轮询任务(如果没有需要监听的 Leader)
- 确保轮询任务根据跟单状态动态调整,避免不必要的资源消耗
2025-12-03 06:25:28 +08:00
WrBug 56caba963c fix: 修复 CopyOrderTrackingService 中重复声明 decryptedPrivateKey 的编译错误
- 在 processSellTrade 方法中,将私钥解密移到方法开始处,只声明一次
- 后续签名订单和创建订单时复用同一个解密后的私钥
2025-12-03 06:07:49 +08:00
WrBug 7f85274a96 feat: 实现私钥加密存储功能
- 创建 CryptoUtils 加密工具类,支持 AES-256/CBC/PKCS5Padding 加密
- encryption.key 支持任意长度密钥(通过 SHA-256 哈希成 32 字节)
- 修改 AccountService,在保存时加密私钥,在使用时解密
- 修改 CopyOrderTrackingService,在使用私钥前先解密
- 更新 Account 实体注释,说明私钥已加密存储
- 添加向后兼容支持:如果私钥未加密(旧数据),直接返回明文
2025-12-03 06:02:26 +08:00
WrBug 86dc772b7d fix: 修复 JWT 密钥长度不足的问题
- 支持十六进制字符串密钥(自动解析)
- 如果密钥长度不足 32 字节,使用 SHA-256 哈希扩展到 32 字节
- 确保密钥长度至少 256 位,满足 JWT 规范要求
- 解决 'key byte array is 184 bits which is not secure enough' 错误
2025-12-03 05:52:25 +08:00
WrBug d47542c5c9 feat: 在创建 .env 文件时自动生成随机密码和密钥
- 添加 generate_random_string 函数生成随机字符串
- 自动生成 DB_PASSWORD(32 字符)
- 自动生成 JWT_SECRET(64 字符)
- 自动生成 ADMIN_RESET_PASSWORD_KEY(32 字符)
- 更新提示信息,显示生成的值的前 8 个字符
- 适用于 deploy.sh 和 backend/deploy.sh
2025-12-03 05:46:55 +08:00
WrBug f33f03a4a8 fix: 使用 root 用户启动 Nginx,后端应用以 appuser 运行
- Nginx 以 root 用户运行(解决 80 端口绑定权限问题)
- 后端应用以 appuser 用户运行(保持安全性)
- 移除 setcap 相关配置(不再需要)
- 更新目录权限设置(Nginx 相关目录使用 root,应用目录使用 appuser)
2025-12-03 05:34:26 +08:00
WrBug 5451dd87e5 fix: 修复 Nginx 绑定 80 端口的权限问题
- 使用 setcap 允许非 root 用户绑定特权端口
  - 安装 libcap2-bin 包
  - 设置 cap_net_bind_service 权限给 nginx 二进制文件
- 修复 Nginx PID 文件路径
  - 从 /tmp/nginx.pid 改为 /var/run/nginx.pid
  - 创建 /var/run 目录并设置权限
- 解决 'bind() to 0.0.0.0:80 failed (13: Permission denied)' 错误
2025-12-03 05:25:14 +08:00
WrBug bb671bfd89 fix: 修复 MySQL 连接配置并合并数据库迁移文件
- 修复 MySQL 连接配置
  - 添加 allowPublicKeyRetrieval=true 参数(解决 Public Key Retrieval 错误)
  - 将 characterEncoding=utf8mb4 改为 utf8(兼容性修复)
  - 更新所有配置文件:docker-compose.yml, deploy.sh, docs/DEPLOYMENT.md

- 合并数据库迁移文件
  - 将 V1, V2, V3 迁移文件合并为一个 V1__init_database.sql
  - 删除 V2__create_proxy_config_table.sql
  - 删除 V3__rename_copy_trading_accounts_to_wallet_accounts.sql
  - 新的 V1 包含所有表结构(11 个表)
2025-12-03 05:16:44 +08:00
WrBug 58cc096a77 feat: 重命名项目为 PolyHermes 并添加下单签名前日志
- 将所有 polymarket-bot 相关名称改为 PolyHermes
  - 容器名称: polyhermes, polyhermes-mysql, polyhermes-backend
  - 数据库名称: polyhermes
  - 应用名称: polyhermes-backend, polyhermes-frontend
  - 网络名称: polyhermes-network
  - 更新所有配置文件和文档

- 在 OrderSigningService 中添加下单签名前的详细日志输出
  - 输出订单方向、价格、数量、地址、金额等所有参数
  - 便于调试和排查下单问题
2025-12-03 04:01:45 +08:00
WrBug 950acfeb04 fix: 修改 MySQL 默认端口映射为 3307,避免与本地 MySQL 冲突
- 将 docker-compose.yml 中 MySQL 端口映射默认值改为 3307
- 更新 deploy.sh 中的示例配置
- 容器内部仍使用 3306,仅外部映射端口改为 3307
- 容器间通信不受影响(通过 Docker 网络)
2025-12-03 03:42:21 +08:00
WrBug 65a8e71b8d fix: 修复 Dockerfile 中用户创建顺序问题
- 先创建 appuser 用户,再执行 chown 命令
- 修复 'chown: invalid user' 错误
2025-12-03 03:39:13 +08:00
WrBug d513acfdec fix: 修复 TemplateList.tsx 中 setSourceTemplate 的类型错误
- 修复 useState 解构错误,将 setSourceTemplate 正确声明为函数
- 前端编译成功
2025-12-03 03:32:38 +08:00
WrBug cd707255b2 fix: 修复前端编译错误
- 修复 ConfigPage.tsx 类型错误,改为提示页面(配置功能已迁移)
- 修复未使用变量警告(isMobile, Account, Space, Input, Row, Col, sourceTemplate)
- 前端编译成功,构建时间约 19 秒
2025-12-03 03:29:04 +08:00
WrBug c1003fcb12 fix: 修复 Docker 镜像问题,使用 eclipse-temurin 替代已废弃的 openjdk
- 将 openjdk:17-jre-slim 替换为 eclipse-temurin:17-jre-jammy
- 修复根目录 Dockerfile(一体化部署)
- 修复 backend/Dockerfile(后端单独部署)
2025-12-03 03:15:52 +08:00
WrBug 1216fc5ed5 feat: 添加前后端一体化 Docker 部署支持
- 创建根目录 Dockerfile,支持前后端一起部署到一个容器
- 添加 Nginx 配置,自动代理后端 API 和 WebSocket
- 创建启动脚本,同时启动后端和 Nginx
- 更新 docker-compose.yml 支持一体化部署
- 创建一体化部署脚本 deploy.sh
- 修复前端环境变量支持,默认使用相对路径
- 优化部署脚本:.env 文件不存在时创建后终止部署
- 更新部署文档,添加一体化部署说明
2025-12-03 03:08:53 +08:00
WrBug 59722d7311 feat: 添加完整的部署支持
- 后端多环境配置(dev, prod)
- Docker 部署支持(Dockerfile, docker-compose.yml)
- Java 部署脚本(deploy.sh)
- 前端构建脚本(build.sh,支持自定义后端地址)
- 健康检查接口(/api/health)
- 完整的部署文档(docs/DEPLOYMENT.md)
- 前端环境变量支持(VITE_API_URL, VITE_WS_URL)
2025-12-03 02:48:02 +08:00
WrBug 220afd748f fix: 修复订单金额精度问题
- 修复 makerAmount 和 takerAmount 的精度限制
  - makerAmount (USDC) 最多 2 位小数
  - takerAmount (shares) 最多 4 位小数
- 区分 BUY 和 SELL 订单的精度处理
- 确保在转换为 wei 之前先进行精度舍入,符合 Polymarket API 要求
2025-12-03 02:35:09 +08:00
WrBug 7eb310b35e feat: 开源准备和功能优化
- 添加 MIT 许可证
- 创建完整的项目 README.md
- 前端添加 GitHub 和 Twitter 链接
- 重构表名:copy_trading_accounts -> wallet_accounts
  - 更新 Account 实体类
  - 添加数据库迁移脚本 V3
  - 更新初始化脚本和文档
- 优化跟单订单类型:GTC -> FAK
  - 买入和卖出订单均使用 FAK (Fill-And-Kill)
  - 允许部分成交,未成交部分立即取消
  - 提高跟单响应速度和价格匹配准确性
2025-12-03 02:27:05 +08:00
WrBug 719b01508a feat: 完成统计功能实现并修复 WebSocket 并发问题
- 实现全局统计接口(/api/copy-trading/statistics/global)
- 实现 Leader 统计接口(/api/copy-trading/statistics/leader)
- 实现分类统计接口(/api/copy-trading/statistics/category)
- 优化前端统计页面,支持时间范围筛选和响应式布局
- 修复 WebSocket 并发发送消息导致的状态冲突问题
  - 为每个会话添加同步锁,确保消息按顺序发送
  - 优化错误处理,避免 TEXT_PARTIAL_WRITING 异常
2025-12-03 02:02:18 +08:00
WrBug dec165cb24 chore: 从 Git 跟踪中移除 clob-client 目录 2025-12-03 01:47:03 +08:00
WrBug 30fae27a23 chore: 将 clob-client 目录添加到 .gitignore 2025-12-03 01:46:46 +08:00
WrBug 4679080d55 feat: 添加系统管理功能(代理配置和API健康检查)
- 新增代理配置管理功能,支持HTTP代理配置(host、port、用户名、密码)
- 代理配置存储在数据库中,支持实时生效,无需重启服务
- 代理配置变更时自动重连WebSocket连接(订单推送和跟单服务)
- 新增API健康状态检查功能,监控Polymarket各API和Polygon RPC的可用性
- 优化API健康状态UI,支持响应式设计(移动端和桌面端)
- 将Ethereum RPC相关配置和代码统一改为Polygon RPC
- 修复代理检查时的SSL证书验证问题
- 优化代理配置:关闭代理时保留配置信息,避免重新输入
2025-12-03 01:44:35 +08:00
WrBug dd553ae160 feat: 添加JWT登录鉴权和用户管理功能
- 后端功能:
  - 实现JWT登录鉴权,token有效期7天,超过1天自动刷新
  - 添加用户管理功能,支持创建、删除、修改密码
  - 首次创建的用户为默认账户,拥有管理权限
  - 实现密码重置功能,支持重置密钥和频率限制(1分钟最多3次)
  - 所有API接口需要JWT鉴权
  - WebSocket连接需要JWT鉴权,绑定用户身份

- 前端功能:
  - 添加登录页面和密码重置页面
  - 添加用户管理页面,默认账户可管理所有用户,普通用户只能查看和修改自己
  - 添加退出登录功能,带二次确认
  - 未登录时不建立WebSocket连接
  - API请求自动携带JWT token,认证失败自动跳转登录页

- 安全特性:
  - 密码使用BCrypt加密存储
  - 重置密码错误信息统一处理,避免信息泄露
  - 用户操作严格绑定JWT,防止数据篡改和越权
2025-12-03 00:24:46 +08:00
WrBug f1c9b34488 重构错误码:统一使用 ErrorCode 枚举
- 创建 ErrorCode 枚举类,按业务模块划分错误码范围
  - 1001-1999: 参数错误
  - 2001-2999: 认证/权限错误
  - 3001-3999: 资源不存在
  - 4001-4999: 业务逻辑错误(按模块细分)
  - 5001-5999: 服务器内部错误(按服务细分)
- 重构 ApiResponse 支持 ErrorCode 枚举
- 重构所有 Controller 使用 ErrorCode 枚举替代硬编码错误码
- 保留旧方法(标记为 @Deprecated)以保持兼容性
- 修复未使用变量警告
2025-12-02 22:58:51 +08:00
WrBug 792ddb8635 删除后端无用日志
- 删除所有 logger.debug 调试日志
- 删除过于详细的 logger.info 常规操作日志
- 保留 logger.error 和 logger.warn 重要错误和警告日志
- 优化日志输出,减少生产环境日志噪音
2025-12-02 22:22:39 +08:00