Commit Graph

26 Commits

Author SHA1 Message Date
e907315afa 处理返回编码未设置的问题 2025-12-20 10:23:50 +08:00
7a8aac1f73 需求疑问准备 2025-12-19 16:10:33 +08:00
478e37903b 添加callback,迁移文件 2025-12-15 14:37:34 +08:00
ad946af5ee add: 提交部分表设计
update: 1.所有model嵌入gorm公用model 2.所有model嵌入BaseModel
2025-12-15 11:32:33 +08:00
4455b39e42 添加分佣文档说明 2025-11-28 11:24:39 +08:00
6a287b5f9d 数据库迁移 2025-11-19 14:28:00 +08:00
d66323487b refactor: align framework cleanup with new bootstrap flow
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-11-19 12:47:25 +08:00
39d14ec093 Merge branch '004-rbac-data-permission': RBAC 权限系统和数据权限控制
完成 RBAC 权限系统和数据权限控制功能的开发和测试。
详见分支 004-rbac-data-permission 的提交记录。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:44:41 +08:00
eaa70ac255 feat: 实现 RBAC 权限系统和数据权限控制 (004-rbac-data-permission)
主要功能:
- 实现完整的 RBAC 权限系统(账号、角色、权限的多对多关联)
- 基于 owner_id + shop_id 的自动数据权限过滤
- 使用 PostgreSQL WITH RECURSIVE 查询下级账号
- Redis 缓存优化下级账号查询性能(30分钟过期)
- 支持多租户数据隔离和层级权限管理

技术实现:
- 新增 Account、Role、Permission 模型及关联关系表
- 实现 GORM Scopes 自动应用数据权限过滤
- 添加数据库迁移脚本(000002_rbac_data_permission、000003_add_owner_id_shop_id)
- 完善错误码定义(1010-1027 为 RBAC 相关错误)
- 重构 main.go 采用函数拆分提高可读性

测试覆盖:
- 添加 Account、Role、Permission 的集成测试
- 添加数据权限过滤的单元测试和集成测试
- 添加下级账号查询和缓存的单元测试
- 添加 API 回归测试确保向后兼容

文档更新:
- 更新 README.md 添加 RBAC 功能说明
- 更新 CLAUDE.md 添加技术栈和开发原则
- 添加 docs/004-rbac-data-permission/ 功能总结和使用指南

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:44:06 +08:00
e8eb5766cb fix(migration): 为所有 CREATE INDEX 语句添加 IF NOT EXISTS
为 5 个 RBAC 表的所有 18 个索引语句添加 IF NOT EXISTS,使迁移脚本具有幂等性:
- tb_account: 6 个索引(包括 2 个唯一索引)
- tb_role: 2 个索引
- tb_permission: 4 个索引(包括 1 个唯一索引)
- tb_account_role: 4 个索引(包括 1 个唯一索引)
- tb_role_permission: 4 个索引(包括 1 个唯一索引)

这样即使表和索引已经存在(如通过 GORM AutoMigrate 创建),
迁移脚本也能成功执行,COMMENT 语句可以正常应用。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 15:08:18 +08:00
f46beb2d45 docs(migration): 为 RBAC 表添加 PostgreSQL 注释
为 5 个 RBAC 核心表添加完整的表和字段注释:
- tb_account: 账号表(13 个字段)
- tb_role: 角色表(9 个字段)
- tb_permission: 权限表(13 个字段)
- tb_account_role: 账号-角色关联表(9 个字段)
- tb_role_permission: 角色-权限关联表(9 个字段)

使用 PostgreSQL COMMENT ON 语句,提供中文注释说明每个表和字段的用途。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 14:57:33 +08:00
fb83c9a706 feat: 实现统一错误处理系统 (003-error-handling)
- 新增统一错误码定义和管理 (pkg/errors/codes.go)
- 新增全局错误处理器和中间件 (pkg/errors/handler.go, internal/middleware/error_handler.go)
- 新增错误上下文管理 (pkg/errors/context.go)
- 增强 Panic 恢复中间件 (internal/middleware/recover.go)
- 新增完整的单元测试和集成测试
- 新增功能文档 (docs/003-error-handling/)
- 新增功能规范 (specs/003-error-handling/)
- 更新 CLAUDE.md 和 README.md
2025-11-15 12:17:44 +08:00
a371f1cd21 Merge branch '002-gorm-postgres-asynq': 数据持久化与异步任务处理集成 2025-11-13 13:56:57 +08:00
984ccccc63 docs(constitution): 新增数据库设计原则(v2.4.0)
在项目宪章中新增第九条原则"数据库设计原则",明确禁止使用数据库外键约束和ORM关联标签。

主要变更:
- 新增原则IX:数据库设计原则(Database Design Principles)
- 强制要求:数据库表不得使用外键约束
- 强制要求:GORM模型不得使用ORM关联标签(foreignKey、hasMany等)
- 强制要求:表关系必须通过ID字段手动维护
- 强制要求:关联数据查询必须显式编写,避免ORM魔法
- 强制要求:时间字段由GORM处理,不使用数据库触发器

设计理念:
- 提升业务逻辑灵活性(无数据库约束限制)
- 优化高并发性能(无外键检查开销)
- 增强代码可读性(显式查询,无隐式预加载)
- 简化数据库架构和迁移流程
- 支持分布式和微服务场景

版本升级:2.3.0 → 2.4.0(MINOR)
2025-11-13 13:40:19 +08:00
ea0c6a8b16 测试一下修复一部分问题 2025-11-11 18:15:39 +08:00
2b1754728f docs: 修订宪章至 v2.2.0(新增文档规范原则)
新增 Principle VII: Documentation Standards(文档规范)

主要变更:
- 规定功能总结文档必须放在 docs/{feature-id}/ 目录,对应 specs/{feature-id}/
- 要求总结文档使用中文命名(功能总结.md、使用指南.md、架构说明.md)
- 要求总结文档内容使用中文编写,方便中文团队阅读
- 强制要求每次完成功能后更新 README.md,添加 2-3 句简短描述
- 目标:让首次接触项目的开发者能快速了解功能

模板同步更新:
- plan-template.md: 添加文档结构说明和 Documentation Standards 检查项
- tasks-template.md: 新增文档任务模板和文档相关质量检查项

版本升级理由:
MINOR 版本升级(2.1.1 → 2.2.0),因为新增了影响开发工作流程的强制性原则,
要求所有功能完成后必须创建中文总结文档并更新 README.md
2025-11-11 17:24:12 +08:00
2d29e8f7c9 合并功能分支:Fiber 中间件集成完成
此次合并包含完整的 Fiber 中间件集成功能(001-fiber-middleware-integration),所有 Phase 10 质量关卡已通过。

功能特性:
 认证中间件(KeyAuth + Redis,Fail-closed 策略)
 限流中间件(支持内存和 Redis 存储)
 日志系统(Zap + Lumberjack,应用日志和访问日志分离)
 配置热重载(Viper + fsnotify + atomic.Value)
 错误恢复中间件(Panic 自动恢复)
 统一响应格式
 优雅关闭机制

质量指标:
- 测试覆盖率:75.1%(核心模块 90%+)
- 所有测试通过:58/58
- 代码质量:通过 gofmt、go vet、golangci-lint
- 安全审计:完成(已修复日志泄露问题)
- 性能基准:令牌验证 17.5μs,响应序列化 1.1μs
- 总体评分:9.6/10(优秀)

交付物:
- 完整的中文文档(README、快速入门、限流指南)
- 安全审计报告
- 性能基准报告
- 质量关卡报告
- 项目完成总结

部署就绪:(已升级 Go 至 1.25.3+)
2025-11-11 16:53:50 +08:00
fd4bcc464a 更新 CLAUDE.md 项目指南 2025-11-11 16:53:23 +08:00
1f71741836 完成 Phase 10 质量保证,项目达到生产部署标准
主要变更:
-  完成所有文档任务(T092-T095a)
  * 创建中文 README.md 和项目文档
  * 添加限流器使用指南
  * 更新快速入门文档
  * 添加详细的中文代码注释

-  完成代码质量任务(T096-T103)
  * 通过 gofmt、go vet、golangci-lint 检查
  * 修复 17 个 errcheck 问题
  * 验证无硬编码 Redis key
  * 确保命名规范符合 Go 标准

-  完成测试任务(T104-T108)
  * 58 个测试全部通过
  * 总体覆盖率 75.1%(超过 70% 目标)
  * 核心模块覆盖率 90%+

-  完成安全审计任务(T109-T113)
  * 修复日志中令牌泄露问题
  * 验证 Fail-closed 策略正确实现
  * 审查 Redis 连接安全
  * 完成依赖项漏洞扫描

-  完成性能验证任务(T114-T117)
  * 令牌验证性能:17.5 μs/op(~58,954 ops/s)
  * 响应序列化性能:1.1 μs/op(>1,000,000 ops/s)
  * 配置访问性能:0.58 ns/op(接近 CPU 缓存速度)

-  完成质量关卡任务(T118-T126)
  * 所有测试通过
  * 代码格式和静态检查通过
  * 无 TODO/FIXME 遗留
  * 中间件集成验证
  * 优雅关闭机制验证

新增文件:
- README.md(中文项目文档)
- docs/rate-limiting.md(限流器指南)
- docs/security-audit-report.md(安全审计报告)
- docs/performance-benchmark-report.md(性能基准报告)
- docs/quality-gate-report.md(质量关卡报告)
- docs/PROJECT-COMPLETION-SUMMARY.md(项目完成总结)
- 基准测试文件(config, response, validator)

安全修复:
- 移除 pkg/validator/token.go 中的敏感日志记录

质量评分:9.6/10(优秀)
项目状态: 已完成,待部署
2025-11-11 16:53:05 +08:00
39c5b524a9 备份一下 2025-11-11 15:53:01 +08:00
e98dd4d725 做完了一部分,备份一下,防止以外删除 2025-11-11 15:16:38 +08:00
9600e5b6e0 做一次小小的备份,等会又删掉了 2025-11-11 10:09:45 +08:00
37c4404293 初始化项目结构 2025-11-10 15:57:21 +08:00
667559a352 speckit使用规则更新 2025-11-10 15:53:03 +08:00
2413baf945 AI规范准则生成 README.md初始化 2025-11-10 15:48:47 +08:00
eb8a759d4d init 2025-11-10 14:55:46 +08:00