odboy
|
185e458b45
|
refactor(config): 统一使用应用服务器时间
- 删除 dao.Now(),不再额外执行 SELECT NOW(3)
- 配置写入、历史记录和增量游标全部使用 time.Now()
- 移除数据库时间获取失败的错误分支
|
2026-09-21 21:11:34 +08:00 |
|
odboy
|
28c727501f
|
fix(config): 统一历史记录与配置的数据库时间来源
- saveHistory 接收调用方传入的数据库时间,不再使用 time.Now()
- 更新、删除、回滚先取 dao.Now(),避免取时间失败时产生无效历史
- 历史表 created_at 升级为 datetime(3),新增迁移脚本
|
2026-09-18 21:14:53 +08:00 |
|
odboy
|
1f8cae5a8b
|
refactor(auth): 移除 RO/RW 权限机制并完善配置历史
- 删除 GrantPermissons 与 buildPermissionCode,权限只判断超管、组管理员和应用负责人
- GetHistory 增加权限校验,避免越权读取配置历史
- 配置历史改为分页查询,前端历史弹窗增加分页并处理删除后的页码回退
|
2026-09-16 21:11:09 +08:00 |
|
odboy
|
af3cf2f6e6
|
feat(token): 将token迁移至请求体并兼容旧版客户端
- C++客户端在请求payload中添加token字段
- .NET客户端在请求payload中添加token字段
- Rust客户端在请求payload中添加token字段
- SpringBoot2客户端移除buildTokenParameter调用,改为将token放入请求体
- SpringBoot3客户端移除buildTokenParameter调用,改为将token放入请求体
- SpringBoot2/3客户端新增getToken方法供内部调用
- 服务端增加兼容逻辑,优先从请求体获取token,为空时回退至URL query参数
|
2026-09-13 21:07:56 +08:00 |
|
odboy
|
70cb3e301e
|
refactor(api): 移除未生效的 fetchAll 参数
- 删除 FetchChangedRequest 中未使用的 FetchAll 字段
- addChangedConfigs 去掉 fetchAll 参数及两处调用
|
2026-09-11 21:05:41 +08:00 |
|
odboy
|
a2c26cea98
|
feat(config): 增强配置解析的语法校验与错误处理
- 重构 ParseConfigToKVMap 使其在解析失败时返回 error 而非静默忽略
- 新增 ValidateConfig 方法,在保存和更新配置前校验语法正确性
- 将 XML 解析器从简单字符串匹配改为标准库 xml.NewDecoder,支持嵌套标签和实体转义
- 在配置保存和更新接口中集成语法校验,校验失败返回 400 错误
- API 拉取配置时解析失败的条目记录日志并跳过,避免整体请求中断
- 新增 config_parse_test.go 覆盖各配置类型的正常与异常场景
|
2026-09-08 21:19:55 +08:00 |
|
odboy
|
92c09df103
|
feat(config): 增强配置历史管理并统一数据库时间
- 新增 dao.Now() 函数获取数据库毫秒精度时间,避免多实例时钟偏差
- 增量同步查询增加上界(updated_at <= upperBound)防止竞态条件
- 配置创建、更新、删除、回滚统一使用数据库时间替代 time.Now()
- 配置历史新增 operate 字段记录操作类型(update/delete/rollback)
- 删除配置和回滚操作前增加历史快照记录
- 新增 DeleteHistory 接口支持手动删除单条历史记录
- 移除 GetHistory 的 Limit(5) 限制,返回完整历史列表
- 删除应用时同步更新关联配置的 updated_at 以便增量同步识别
- version 字段改为必填,前后端同步增加校验规则
- 前端历史列表增加操作类型列、删除按钮及表格最大高度限制
- 数据库表结构 datetime 升级为 datetime(3) 支持毫秒精度
|
2026-09-06 21:04:25 +08:00 |
|
odboy
|
a62dbfe74c
|
fix(sql): 修复SQL注入漏洞改用参数化查询
- app.go 将查询条件从字符串拼接改为占位符参数绑定
- config.go 将查询条件从字符串拼接改为占位符参数绑定
- user.go 将查询条件从字符串拼接改为占位符参数绑定
- 移除 app.go 中重复的条件构建逻辑
- 对 group_id、enabled 等参数增加类型校验与错误处理
|
2026-09-01 21:17:57 +08:00 |
|
odboy
|
d2c0afa20e
|
refactor: 移除未使用的 user_permission 表及权限加载逻辑
- 删除 UserPermission 模型与 xorm Sync2 注册
- 移除登录/鉴权时从 user_permission 加载授权的逻辑
- 应用列表查询去掉 user_permission 子查询,仅保留负责人和业务组条件
- SQL 导出文件删除建表语句,新增 drop_user_permission.sql 升级脚本
|
2026-08-29 21:11:20 +08:00 |
|
odboy
|
d6a052e0a4
|
feat: 新增 Docker Compose 一键部署(MySQL + 后端 + 前端)
- 新增 docker-compose.yml,按健康检查顺序启动 MySQL 8、Go 后端与 Nginx 前端
- 新增 server/web 多阶段 Dockerfile、nginx 反向代理配置与 .dockerignore
- 后端支持 KENAITO_* 环境变量覆盖配置,新增 /health 健康检查接口
- 补充中英文 README 与 Docker 部署文档、.env.example 环境变量模板
|
2026-08-27 21:17:10 +08:00 |
|
odboy
|
639475b730
|
feat: 实现配置删除通知机制(deletedKeys)
- 服务端 fetchChangedConfigs 接口新增 deletedKeys 字段,返回已删除配置的 key 列表
- Go/Node.js/Python/Spring Boot 客户端支持解析 deletedKeys 并删除本地配置
- Spring Boot 客户端新增 removeConfigs 方法,同步更新 Spring Environment
|
2026-06-17 21:07:51 +08:00 |
|
odboy
|
18b8c4c18b
|
fix: 客户端实例上报 IP 地址优先使用 IPv4
新增 getClientIP 辅助函数,将 IPv6 环回地址(::1)转为 127.0.0.1,
避免在线客户端列表显示 IPv6 地址。
|
2026-06-12 21:17:12 +08:00 |
|
odboy
|
9d475eacba
|
feat: 环境管理页面添加环境名称模糊查询,统一双卡片布局
|
2026-06-02 21:08:32 +08:00 |
|
odboy
|
d9043c6f78
|
perf: 优化 N+1 查询,改为批量 IN 查询
- config.go List 方法:配置列表查询应用名称从循环内逐条查询改为批量 IN 查询
- config_api.go recordClientInstances:客户端实例上报从循环内逐条查询+写入改为批量 IN 查询+批量插入
|
2026-05-30 21:04:38 +08:00 |
|
odboy
|
fd16a61c87
|
feat: 后台管理页面查询条件统一改为独立卡片+按钮触发模式
业务组管理、用户管理、配置管理、应用管理页面的查询条件拆分为独立卡片,
新增查询/重置按钮,移除下拉选中即时触发查询的交互;
应用管理新增应用名称、应用编码模糊查询和业务组精确查询条件。
|
2026-05-28 21:09:26 +08:00 |
|
odboy
|
1d94dbf8e1
|
优化:仅在 debug 模式下显示 SQL 日志
|
2026-05-23 21:01:16 +08:00 |
|
odboy
|
c0aa5b6806
|
refactor: 使用 TableName() 替代硬编码表名 client_instance
|
2026-05-20 21:06:06 +08:00 |
|
odboy
|
07e984828a
|
refactor: 移除启动时旧数据迁移逻辑
|
2026-05-17 21:15:58 +08:00 |
|
odboy
|
0b2e836c27
|
feat: 业务组和应用支持多负责人,修复权限查询表名错误
- 业务组 MasterUid 改为 MasterUids(逗号分隔多用户ID)
- 应用 OwnerId 改为 OwnerIds(逗号分隔多用户ID)
- 前端负责人下拉框改为多选
- 权限查询改用 FIND_IN_SET 匹配多负责人
- 修复 user_permissions 表名错误(应为 user_permission)
- 所有数据库实体添加 TableName() 方法显式指定表名
- xorm tag 显式指定 owner_ids/master_uids 列名
- 启动时自动清理 owner_ids 中的空格
|
2026-05-15 21:09:40 +08:00 |
|
odboy
|
5e55d899c3
|
refactor: 重构菜单结构,配置列表改为应用维度管理
|
2026-05-12 21:01:49 +08:00 |
|
odboy
|
1d2d1ab83e
|
style: 格式化 recordClientInstances 字段对齐并移除未使用的 fmt 导入
|
2026-05-07 21:16:20 +08:00 |
|
odboy
|
1382c7a9f6
|
refactor: 将定时任务抽取到独立的 scheduler 包
|
2026-05-05 21:13:46 +08:00 |
|
odboy
|
9a7679960c
|
refactor: 添加 logger 模块并优化客户端实例清理逻辑
- 新增 logger 模块,统一使用 zap.SugaredLogger
- 将 config_api.go 中的 fmt.Printf 改为 logger.SugaredLogger.Errorf
- 客户端实例清理逻辑改为定时任务(每分钟执行)
- 清理条件改为 last_ping_at 超过 5 分钟
|
2026-05-02 21:01:26 +08:00 |
|
odboy
|
8957286bb5
|
fix: 修复客户端实例记录问题并删除父应用功能
- 客户端实例唯一标识改为 app_config_id+appName+env+ip 四元组
- 新增 last_ping_at 字段,轮询即更新,拉取配置时更新 last_fetch_at
- FetchChangedConfigs 无变更时也记录客户端实例
- 清理逻辑改为基于 last_ping_at 超过5分钟删除
- 删除父应用(ParentId)相关功能
|
2026-04-30 21:06:36 +08:00 |
|
odboy
|
ed94f53306
|
feat: 实现客户端实例上报功能
- 新增 ClientInstance 模型,记录客户端 IP 与配置项的关联
- 配置拉取接口(fetchAll/fetchChanged)自动记录客户端信息
- 配置列表页面展示每个配置的在线客户端数量
- 点击可查看具体 IP 地址、拉取方式、最后拉取时间
- 超过 5 分钟未拉取的记录自动清理
- 注释掉 /api/ping 接口
|
2026-04-27 21:07:37 +08:00 |
|
odboy
|
751a0f770f
|
refactor: 配置刷新优化和加密功能移除
- refactor(springboot2): 简化配置刷新逻辑,移除 EnvironmentChangeEvent 包装
- ConfigChangeHanlder 直接接收 Map<String,String> 参数
- 移除 EnvironmentChangeEvent 事件类
- 优化 token 参数构建和敏感信息脱敏处理
- refactor(server): 移除配置加密功能
- 删除 CryptoConfig 结构体和相关配置项
- 移除 application-dev.properties 中的加密配置
- 项目不再使用配置加密功能
- docs: 更新 README 和模块文档
- fix: 修复 Node.js 客户端配置缓存
|
2026-03-25 21:00:59 +08:00 |
|
odboy
|
858dfcb5cf
|
feat: 查询条件优化和 xorm session 修复
|
2026-03-18 21:01:04 +08:00 |
|
odboy
|
6ab368f21e
|
feat(group): 业务组禁用后限制用户登录和配置拉取
|
2026-03-15 21:19:48 +08:00 |
|
odboy
|
928a95fccd
|
fix: 修复多个代码质量缺陷
|
2026-03-13 21:11:06 +08:00 |
|
odboy
|
932db9fbdc
|
fix: 修复多个安全缺陷和功能问题
- 移除加密相关代码(服务端和所有客户端)
- 修复 JWT 验证未检查签名算法的问题
- 修复重置密码使用不安全随机数的问题
- 实现 Logout 服务端失效机制
- 修复历史版本对比 diff 颜色标记错误
- 修复占位符解析循环引用风险
- 添加用户禁用状态检查
- 更新 bug 清单文档
|
2026-03-10 21:07:22 +08:00 |
|
odboy
|
08b2ba4c25
|
refactor(api): fetchAllConfigs 接口从 GET 改为 POST
- 服务端: 新增 FetchAllRequest 结构体,参数通过 JSON body 传递
- 服务端: 路由从 api.GET 改为 api.POST
- Go/Python/Node.js/Java 客户端同步更新为 POST + JSON body
- 与 fetchChangedConfigs 接口风格统一,token 不再暴露在 URL 中
|
2026-02-20 21:18:43 +08:00 |
|
odboy
|
b011b3a0b3
|
feat(app): 实现应用 Token 校验功能
- 服务端: fetchAllConfigs 和 fetchChangedConfigs 添加 Token 校验
- 前端: 应用列表添加 Token 列和生成/删除 Token 按钮
- 客户端: Python/Node.js/Java 客户端传递 token 参数
- Java: 简化 buildTokenParameter 直接传递 token 值
|
2026-02-18 21:02:30 +08:00 |
|
odboy
|
b895321e9e
|
feat(app): 添加生成/删除应用 Token 的 API
- GenerateToken: 生成 64 字符随机 Token 并保存到应用
- DeleteToken: 清空应用 Token
|
2026-02-13 21:11:47 +08:00 |
|
odboy
|
8bb39f8b49
|
feat(app): Application 模型添加 Token 字段
|
2026-02-10 21:14:25 +08:00 |
|
odboy
|
4436d3ee88
|
feat: 初始化配置中心项目
|
2026-01-14 21:02:13 +08:00 |
|