Skip to content

Commit 7a1e378

Browse files
committed
Merge branch '3.5.x'
2 parents a878028 + 6addb25 commit 7a1e378

File tree

14 files changed

+1421
-85
lines changed

14 files changed

+1421
-85
lines changed

.claude/project-rules.md

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
# FIT Framework 项目规则
2+
3+
## 文件权限管理规则
4+
5+
### 规则 1: 新增和修改文件的所有权
6+
7+
**重要:** 所有新增或修改的文件必须设置正确的所有者权限,确保用户可以自主修改。
8+
9+
**原则:** 不要硬编码用户名和用户组,而是从项目中已有文件动态获取权限信息。
10+
11+
**动态获取权限的方法:**
12+
13+
```bash
14+
# 方法1: 从项目根目录的 pom.xml 获取所有者
15+
REF_FILE="pom.xml" # 或其他稳定存在的文件
16+
OWNER=$(ls -l $REF_FILE | awk '{print $3}')
17+
GROUP=$(ls -l $REF_FILE | awk '{print $4}')
18+
19+
# 方法2: 获取当前工作目录的所有者
20+
OWNER=$(ls -ld . | awk '{print $3}')
21+
GROUP=$(ls -ld . | awk '{print $4}')
22+
23+
# 方法3: 使用 stat 命令(更可靠)
24+
OWNER=$(stat -f "%Su" $REF_FILE) # macOS
25+
GROUP=$(stat -f "%Sg" $REF_FILE) # macOS
26+
#
27+
OWNER=$(stat -c "%U" $REF_FILE) # Linux
28+
GROUP=$(stat -c "%G" $REF_FILE) # Linux
29+
```
30+
31+
**实施方法:**
32+
33+
```bash
34+
# 1. 先获取参考文件的所有者
35+
OWNER_GROUP=$(ls -l pom.xml | awk '{print $3":"$4}')
36+
37+
# 2. 应用到新文件
38+
sudo chown $OWNER_GROUP <file_path>
39+
40+
# 或者分步执行
41+
OWNER=$(ls -l pom.xml | awk '{print $3}')
42+
GROUP=$(ls -l pom.xml | awk '{print $4}')
43+
sudo chown $OWNER:$GROUP <file_path>
44+
```
45+
46+
**检查清单:**
47+
- [ ] 使用 Write 工具创建新文件后,立即从已有文件获取权限并设置
48+
- [ ] 使用 Edit 工具修改文件时,确认文件所有者与项目其他文件一致
49+
- [ ] 批量创建文件后,统一修改所有权
50+
- [ ] 创建目录后,递归修改目录及其内容的所有权
51+
52+
**完整示例:**
53+
54+
```bash
55+
# ❌ 错误做法:硬编码用户信息
56+
Write(file_path, content)
57+
Bash("sudo chown jiyujie:staff " + file_path) # 在其他人电脑上会失败
58+
59+
# ✅ 正确做法:动态获取权限
60+
Write(file_path, content)
61+
# 从项目根目录的 pom.xml 获取所有者信息
62+
Bash("OWNER_GROUP=$(ls -l pom.xml | awk '{print $3\":\"$4}') && sudo chown $OWNER_GROUP " + file_path)
63+
64+
# ✅ 更简洁的做法:批量处理
65+
Write(file1, content1)
66+
Write(file2, content2)
67+
Write(file3, content3)
68+
Bash("OWNER_GROUP=$(ls -l pom.xml | awk '{print $3\":\"$4}') && sudo chown $OWNER_GROUP file1 file2 file3")
69+
```
70+
71+
## Pull Request 提交规范
72+
73+
### 规则 2: PR 提交必须遵循项目规范
74+
75+
本项目的 PR 规范定义在 `.github/PULL_REQUEST_TEMPLATE.md` 文件中。
76+
77+
**强制要求:**
78+
1. 创建 PR 前,必须先阅读 `.github/PULL_REQUEST_TEMPLATE.md`
79+
2. PR 描述必须完整填写模板中的所有必填项
80+
3. 不需要每次让用户提醒查看 PR 模板
81+
82+
**PR 模板位置:**
83+
```
84+
.github/PULL_REQUEST_TEMPLATE.md
85+
```
86+
87+
**必填项清单:**
88+
89+
1. **相关问题 / Related Issue**
90+
- [ ] Issue 链接或说明这是微小修改
91+
92+
2. **变更类型 / Type of Change**
93+
- [ ] 选择适当的变更类型(Bug修复/新功能/破坏性变更/文档/重构/性能优化/依赖升级/功能增强/代码清理)
94+
95+
3. **变更目的 / Purpose of the Change**
96+
- [ ] 详细描述变更的目的和必要性
97+
98+
4. **主要变更 / Brief Changelog**
99+
- [ ] 列出主要的变更内容
100+
101+
5. **验证变更 / Verifying this Change**
102+
- [ ] 测试步骤
103+
- [ ] 测试覆盖情况
104+
105+
6. **贡献者检查清单 / Contributor Checklist**
106+
- [ ] 基本要求
107+
- [ ] 代码质量
108+
- [ ] 测试要求
109+
- [ ] 文档和兼容性
110+
111+
**自动化流程:**
112+
113+
当用户要求创建 PR 时:
114+
1. 自动读取 `.github/PULL_REQUEST_TEMPLATE.md`
115+
2. 根据当前变更内容填写 PR 模板
116+
3. 生成完整的 PR 描述
117+
4. 提供推送和创建 PR 的命令
118+
119+
**示例工作流:**
120+
121+
```bash
122+
# 1. 自动读取 PR 模板
123+
Read(".github/PULL_REQUEST_TEMPLATE.md")
124+
125+
# 2. 分析当前变更
126+
Bash("git diff --stat")
127+
Bash("git log -1")
128+
129+
# 3. 生成 PR 描述(根据模板)
130+
# ... 填写各个部分
131+
132+
# 4. 推送并创建 PR
133+
Bash("git push -u origin <branch>")
134+
Bash("gh pr create --base <target> --title <title> --body <description>")
135+
```
136+
137+
## 通用最佳实践
138+
139+
### 文件操作
140+
- 创建文件后立即检查并修改权限
141+
- 使用 `ls -l` 验证文件所有者
142+
- 批量操作后统一修改权限
143+
144+
### Git 操作
145+
- 提交前检查 `.github/` 目录中的规范
146+
- 遵循项目的 commit message 格式
147+
- PR 描述要完整、清晰
148+
149+
### 文档更新
150+
- 修改代码时同步更新相关文档
151+
- 确保 README 的准确性
152+
- 添加必要的使用示例
153+
154+
## 项目特定信息
155+
156+
**项目名称**: FIT Framework
157+
**主分支**: main
158+
**开发分支**: 3.5.x
159+
**仓库**: https://github.com/ModelEngine-Group/fit-framework
160+
161+
**常用命令:**
162+
163+
```bash
164+
# 编译项目
165+
mvn clean install
166+
167+
# 运行测试
168+
mvn test
169+
170+
# 启动应用
171+
./fit start
172+
173+
# 检查文件权限
174+
ls -l <file>
175+
176+
# 动态修改文件权限(从 pom.xml 获取所有者)
177+
OWNER_GROUP=$(ls -l pom.xml | awk '{print $3":"$4}')
178+
sudo chown $OWNER_GROUP <file>
179+
```
180+
181+
---
182+
183+
**最后更新**: 2025-11-08
184+
**Claude Code 版本**: 最新版

0 commit comments

Comments
 (0)