- Add phone field to user model with index and helper methods - Implement SMS provider interface with UniSMS (合一短信) implementation - Add SMS verification code sending endpoint with rate limiting (1/60s) - Support SMS registration in Register() (mutually exclusive with email) - Add SMS configuration to admin settings (provider, keys, signature, template) - Display phone number in admin user list contact column - Add i18n translations for all SMS-related messages (zh-CN, en, zh-TW) - Add Claude Code skills: sync-upstream, migrate-server - Update CLAUDE.md with git conventions and deployment guide Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.1 KiB
3.1 KiB
Sync Upstream - 从上游仓库拉取合并
从 Calcium-Ion/new-api 上游仓库拉取最新代码并安全合并到当前分支。
执行步骤
1. 环境准备
- 检查当前工作区是否有未提交的更改,如有则先提示用户处理
- 检查是否已配置
upstreamremote,如果没有则添加:git remote add upstream https://github.com/Calcium-Ion/new-api.git
2. 拉取上游代码
git fetch upstream
3. 分析差异
- 运行
git log HEAD..upstream/main --oneline查看上游有哪些新提交 - 运行
git diff HEAD...upstream/main --stat查看哪些文件被改动 - 将差异分析结果展示给用户
4. 冲突风险评估
重点关注以下我们自定义修改过的文件,标记为高风险:
CLAUDE.md— 我们的项目规范,必须保留我们的版本.claude/— 我们的 Claude Code 配置和 skills,必须保留common/sms.go,common/sms_unisms.go— 短信功能(我们新增)middleware/sms-verification-rate-limit.go— 短信限流(我们新增)common/constants.go— 我们新增了 SMS 相关常量model/user.go— 我们新增了 Phone 字段和相关方法model/option.go— 我们新增了 SMS 相关配置controller/misc.go— 我们新增了 SMS 验证接口controller/user.go— 我们修改了注册逻辑router/api-router.go— 我们新增了 SMS 路由i18n/— 我们新增了 SMS 相关翻译web/src/components/auth/RegisterForm.jsx— 手机号注册 UIweb/src/components/settings/SystemSetting.jsx— SMS 配置 UIweb/src/components/table/users/UsersColumnDefs.jsx— 用户列表手机号列web/src/i18n/locales/— 前端翻译
将风险评估结果展示给用户,让用户确认是否继续。
5. 执行合并
- 使用
git merge upstream/main进行合并 - 绝不使用
--force或--strategy-option theirs
6. 处理冲突
如果出现合并冲突:
- 逐个冲突文件分析
- 对于我们新增的文件(如
common/sms.go):保留我们的版本 - 对于
CLAUDE.md和.claude/:始终保留我们的版本 - 对于双方都修改的文件(如
model/user.go):智能合并,保留双方的改动- 读取冲突内容,理解上游改了什么、我们改了什么
- 将两者的改动合并到一起
- 确保我们的自定义功能(如 Phone 字段、SMS 验证)不丢失
- 解决完所有冲突后,展示修改摘要给用户确认
7. 验证
- 运行
go build ./common/... ./model/... ./controller/... ./middleware/... ./router/...确认 Go 编译通过 - 检查是否有遗漏的冲突标记 (
<<<<<<<,=======,>>>>>>>)
8. 完成
- 提示用户合并结果
- 如果用户要求,创建合并提交
重要原则
- 安全第一:任何不确定的决策都要询问用户
- 保护自定义代码:我们的新增功能和修改绝不能在合并中丢失
- 不自动推送:合并完成后不会自动 push,需要用户确认后手动推送
- 可逆操作:如果合并出问题,提示用户可以用
git merge --abort回退