Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,5 @@ currentService := service.SetCurrent(operatorUser, workingOnDomain)

## License

See the [License File](./LICENSE).
See the [License File](./LICENSE).
<!-- CI test -->
88 changes: 88 additions & 0 deletions docs/superpowers/specs/2026-03-10-caskin-modernization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# caskin 现代化迭代设计文档

**日期:** 2026-03-10
**目标:** 分阶段对 caskin 进行现代化维护和文档建设,保持向后兼容,不让存量用户用不了

---

## 背景

caskin 是一个 Go 的多域 RBAC 权限管理库,基于 casbin 开发。最后一次提交是 2023 年 5 月,处于维护停滞状态。依赖版本较旧(Go 1.20),文档不完善,示例缺乏。

## 目标

1. **现代化维护** — Go 版本 + 依赖升级,使用新语法,分阶段进行避免存量用户不兼容
2. **文档建设** — 使用者文档(快速上手、API 说明)+ 贡献者文档(架构设计)

## 原则

- 分阶段渐进,**每个 Phase 切换前等用户确认**
- 每次有意义的改动单独 PR + commit,保持可回滚
- Breaking change 单独 PR,附 CHANGELOG 说明
- 语法现代化和依赖升级分开 PR

---

## Phase 1:地基(2-3 周)

**目标:让项目跑起来、看得懂**

### 任务清单

- [ ] 升级 Go 到最新版(1.24)
- [ ] 依赖升级(只升无破坏性变更的小版本/patch)
- [ ] 跑通所有现有测试,修复失败的
- [ ] 使用新 Go 语法重构:
- `interface{}` → `any`
- `range` over integers(Go 1.22)
- `slices` / `maps` 标准库替换手写循环
- `min()` / `max()` 内置函数
- 适当引入泛型简化重复代码
- [ ] 完善 README:补充真实可运行的 Quick Start 示例
- [ ] 补充 godoc 注释(核心 API)

**卡点:完成后汇报,等用户确认进入 Phase 2**

---

## Phase 2:文档建设(2-3 周)

**目标:让新用户能快速上手,让贡献者能参与**

### 任务清单

- [ ] 重写 Getting Started(step-by-step,有完整可运行代码)
- [ ] API 文档:每个方法说明参数、返回值、使用场景
- [ ] 增加常见使用场景示例:
- 多域管理
- 角色继承
- 权限检查
- 前端/后端权限分离
- [ ] 架构说明文档(给贡献者看)
- [ ] CONTRIBUTING.md

**卡点:完成后汇报,等用户确认进入 Phase 3**

---

## Phase 3:现代化深化(3-4 周)

**目标:主要依赖全面更新,代码质量提升**

### 任务清单

- [ ] 升级 casbin v2 到最新版(评估破坏性影响,分 PR)
- [ ] 升级 gorm、redis-watcher 等主要依赖
- [ ] 提升测试覆盖率(目标 80%+)
- [ ] 每个 breaking change 单独 PR + CHANGELOG

**卡点:完成后汇报,评估是否有 Phase 4**

---

## 推进节奏

- 每 **2-3 天** 自动推进一个小任务
- 完成有意义节点后在对话里发进度报告
- Phase 切换必须等用户确认
- 所有改动都 commit,保持可回滚