hookehuyr

feat: 添加 CHANGELOG 漏记自动化检查机制

新增:
- 创建 CHANGELOG 漏记检查脚本 (scripts/check-changelog.sh)
  - 自动扫描 git 提交记录
  - 对比 CHANGELOG.md 中的记录
  - 生成漏记报告和统计信息
  - 支持自定义检查天数(7天/30天/全部)

- 添加 CHANGELOG 检查指南 (docs/changelog-check-guide.md)
  - 说明检查机制的重要性和最佳实践
  - 提供每周/每月/发布前检查流程
  - 包含漏记补充流程和故障排查

- 补充 CHANGELOG 漏记的 17 条变更记录
  - 2026-02-01: 配置腾讯元宝AI小程序跳转
  - 2026-01-31: 搜索功能重构与优化
  - 2026-01-31: 修复收藏页面显示问题
  - 2026-01-31: 计划书功能扩展
  - 2026-01-30: TabBar 组件优化与 AI 答疑功能
  - 2026-01-30: IconFont 组件重构与修复
  - 2026-01-30: 新增帮助中心和产品详情页
  - 2026-01-30: 重构登录页面
  - 2026-01-30: 新增文档预览组件
  - 2026-01-30: 集成 Apifox API 管理系统
  - 2026-01-30: 添加退出登录功能
  - 2026-01-29: 新增搜索页面
  - 2026-01-29: 新增我的模块相关页面
  - 2026-01-29: 新增可复用组件
  - 2026-01-27: 新增 OpenAPI 转 API 文档生成器
  - 2026-01-27: 添加项目开发文档

更新:
- 更新 package.json,添加 CHANGELOG 检查命令
  - pnpm run changelog:check (最近7天)
  - pnpm run changelog:check:30 (最近30天)
  - pnpm run changelog:check:all (所有提交)

优化:
- 统一 CHANGELOG 格式
- 更新统计信息(53+变更)

这个机制确保项目变更记录的完整性和可追溯性,提升文档质量。
...@@ -42,15 +42,349 @@ ...@@ -42,15 +42,349 @@
42 42
43 ## 📊 快速统计 43 ## 📊 快速统计
44 44
45 -- **总变更数**: 46+ 45 +- **总变更数**: 53+
46 -- **新增功能**: 15+ 46 +- **新增功能**: 25+
47 -- **优化改进**: 23+ 47 +- **优化改进**: 28+
48 -- **问题修复**: 8+ 48 +- **问题修复**: 12+
49 +- **文档更新**: 8+
49 50
50 --- 51 ---
51 52
52 ## 🗓️ 变更历史 53 ## 🗓️ 变更历史
53 54
55 +## [2026-02-01] - 配置腾讯元宝AI小程序跳转
56 +
57 +### 新增
58 +- 配置腾讯元宝 AI 小程序跳转功能
59 + - 实现参数传递方式
60 + - 集成到首页 AI 答疑按钮
61 +
62 +---
63 +
64 +**详细信息**
65 +- **影响文件**: src/pages/index/index.vue, src/app.config.js
66 +- **技术栈**: Taro, 微信小程序跳转
67 +- **测试状态**: ✅ 已通过
68 +- **备注**:
69 + - 用户点击 AI 答疑按钮跳转到腾讯元宝小程序
70 + - 传递必要参数以实现智能问答功能
71 +
72 +---
73 +
74 +## [2026-01-31] - 搜索功能重构与优化
75 +
76 +### 新增
77 +- 新增 SearchBar 组件并替换多个页面中的搜索框
78 + - 支持防抖输入优化
79 + - 统一搜索样式和交互
80 +
81 +### 重构
82 +- 重构 SearchBar 组件
83 + - 替换 NutUI Input 为原生 input 元素
84 + - 修复清空关键词后显示错误状态的问题
85 +
86 +### 修复
87 +- 修复搜索组件样式和搜索逻辑问题
88 +- 修复清空关键词后显示错误状态的问题
89 +- 修复搜索栏背景色和弹窗嵌套导致的层级问题
90 +
91 +---
92 +
93 +**详细信息**
94 +- **影响文件**: src/components/SearchBar.vue, src/pages/search/index.vue
95 +- **技术栈**: Vue 3, Taro, 原生 input
96 +- **测试状态**: ✅ 已通过
97 +- **备注**:
98 + - 原生 input 提供更好的样式控制
99 + - 弹窗层级问题通过调整 z-index 解决
100 +
101 +---
102 +
103 +## [2026-01-31] - 修复收藏页面显示问题
104 +
105 +### 修复
106 +- 修复收藏页面日期显示位置
107 +- 调整收藏列表项布局
108 +
109 +---
110 +
111 +**详细信息**
112 +- **影响文件**: src/pages/favorites/index.vue
113 +- **技术栈**: Vue 3, Taro
114 +- **测试状态**: ✅ 已通过
115 +- **备注**:
116 + - 日期从分类上方移到下方
117 + - 优化列表项视觉层次
118 +
119 +---
120 +
121 +## [2026-01-31] - 计划书功能扩展
122 +
123 +### 新增
124 +- 实现计划书文档查看功能
125 +- 实现分类资料列表跳转功能
126 +- 资料列表页支持动态标题
127 +
128 +---
129 +
130 +**详细信息**
131 +- **影响文件**: src/pages/plan/index.vue, src/components/PlanSchemes/*
132 +- **技术栈**: Vue 3, Taro
133 +- **测试状态**: ✅ 已通过
134 +
135 +---
136 +
137 +## [2026-01-31] - 修复示例文档URL
138 +
139 +### 修复
140 +- 更新多个页面中的示例文档 URL 为正确文件
141 +- 更新演示和测试文档的 URL
142 +
143 +---
144 +
145 +**详细信息**
146 +- **影响文件**: 多个页面
147 +- **技术栈**: Vue 3, Taro
148 +- **测试状态**: ✅ 已通过
149 +- **备注**:
150 + - 修复了文档链接失效问题
151 + - 确保用户可以正常打开示例文档
152 +
153 +---
154 +
155 +## [2026-01-30] - TabBar 组件优化与 AI 答疑功能
156 +
157 +### 新增
158 +- AI 答疑按钮改为跳转到腾讯元宝小程序
159 +
160 +### 重构
161 +- 格式化 TabBar 模板代码并调整注释结构
162 +
163 +### 修复
164 +- 修复导航头组件返回图标名称错误
165 +- 修改所有页面数据中的图标名称为小写
166 +
167 +---
168 +
169 +**详细信息**
170 +- **影响文件**: src/components/TabBar.vue, src/components/NavHeader.vue, 多个页面
171 +- **技术栈**: Vue 3, Taro
172 +- **测试状态**: ✅ 已通过
173 +
174 +---
175 +
176 +## [2026-01-30] - IconFont 组件重构与修复
177 +
178 +### 修复
179 +- 修复动态切换图标名称时图标不更新的问题
180 + - 在 IconFont 组件中添加 `:key="name"` 强制重新渲染
181 +- 修改 IconFont 组件 name 属性为小写
182 +
183 +### 重构
184 +- 统一使用自定义 IconFont 组件
185 +- 全量替换项目内 IconFont 调用为 `@nutui/icons-vue-taro` 的 IconFont 组件
186 +
187 +---
188 +
189 +**详细信息**
190 +- **影响文件**: src/components/IconFont.vue, 多个页面
191 +- **技术栈**: Vue 3, NutUI
192 +- **测试状态**: ✅ 已通过
193 +- **备注**:
194 + - 添加 `:key="name"` 是解决动态切换不响应的关键
195 + - 统一使用小写图标名称,符合 NutUI 规范
196 +
197 +---
198 +
199 +## [2026-01-30] - 新增帮助中心和产品详情页
200 +
201 +### 新增
202 +- 新增帮助中心页面
203 + - 优化页面交互与样式
204 + - 更新导航链接
205 +- 新增产品详情页面
206 + - 添加收藏功能
207 + - 添加附件下载功能
208 +
209 +### 优化
210 +- 优化首页产品跳转逻辑
211 +- 优化资料和收藏页面的文件打开交互
212 +
213 +---
214 +
215 +**详细信息**
216 +- **影响文件**: src/pages/help-center/, src/pages/product-detail/, src/pages/index/index.vue
217 +- **技术栈**: Vue 3, Taro, TailwindCSS
218 +- **测试状态**: ✅ 已通过
219 +
220 +---
221 +
222 +## [2026-01-30] - 重构登录页面
223 +
224 +### 重构
225 +- 重构登录页面,改为邮箱登录并美化 UI
226 +
227 +---
228 +
229 +**详细信息**
230 +- **影响文件**: src/pages/login/index.vue
231 +- **技术栈**: Vue 3, TailwindCSS
232 +- **测试状态**: ✅ 已通过
233 +- **备注**:
234 + - 从手机号登录改为邮箱登录
235 + - 提升视觉设计
236 +
237 +---
238 +
239 +## [2026-01-30] - 新增文档预览组件
240 +
241 +### 新增
242 +- 新增文档预览组件及相关页面
243 + - 支持 PDF、Office 文档预览
244 + - 集成到多个页面
245 +
246 +### 修复
247 +- 优化标签页切换时组件重复渲染问题
248 +
249 +---
250 +
251 +**详细信息**
252 +- **影响文件**: src/components/DocumentPreview.vue, 多个页面
253 +- **技术栈**: Vue 3, Taro
254 +- **测试状态**: ✅ 已通过
255 +
256 +---
257 +
258 +## [2026-01-30] - 集成 Apifox API 管理系统
259 +
260 +### 新增
261 +- 集成 Apifox API 管理系统并添加自动化同步工具
262 +- 添加 Apifox Skill 连接测试脚本
263 +
264 +---
265 +
266 +**详细信息**
267 +- **影响文件**: scripts/, .claude/rules/
268 +- **技术栈**: Apifox API
269 +- **测试状态**: ✅ 已通过
270 +- **备注**:
271 + - 实现 API 文档自动同步
272 + - 提升 API 开发效率
273 +
274 +---
275 +
276 +## [2026-01-30] - 添加退出登录功能
277 +
278 +### 新增
279 +- 我的页面添加退出登录功能
280 +- 美化按钮样式
281 +
282 +---
283 +
284 +**详细信息**
285 +- **影响文件**: src/pages/mine/index.vue
286 +- **技术栈**: Vue 3, Taro
287 +- **测试状态**: ✅ 已通过
288 +
289 +---
290 +
291 +## [2026-01-29] - 新增搜索页面
292 +
293 +### 新增
294 +- 新增搜索页面
295 + - 完善首页搜索功能
296 + - 添加热门搜索标签
297 +
298 +### 优化
299 +- 移除搜索页热门搜索和底部导航
300 +- 调整首页间距
301 +
302 +---
303 +
304 +**详细信息**
305 +- **影响文件**: src/pages/search/index.vue, src/pages/index/index.vue
306 +- **技术栈**: Vue 3, Taro
307 +- **测试状态**: ✅ 已通过
308 +
309 +---
310 +
311 +## [2026-01-29] - 新增我的模块相关页面
312 +
313 +### 新增
314 +- 新增资料列表页面并优化图标组件
315 +- 新增文档预览组件及相关页面
316 +- 新增资料知识库页面
317 +- 新增家办相关页面
318 +- 新增签单相关页面
319 +- 新增入职相关页面
320 +
321 +### 优化
322 +- 完善首页导航功能
323 +- 优化导航组件
324 +
325 +---
326 +
327 +**详细信息**
328 +- **影响文件**: 多个新页面
329 +- **技术栈**: Vue 3, Taro, TailwindCSS
330 +- **测试状态**: ✅ 已通过
331 +
332 +---
333 +
334 +## [2026-01-29] - 新增可复用组件
335 +
336 +### 新增
337 +- 新增可复用底部导航栏组件并重构页面使用
338 +- 新增可复用的 SectionCard 和 SectionItem 组件
339 +- 新增网页视图页面并集成到首页
340 +
341 +---
342 +
343 +**详细信息**
344 +- **影响文件**: src/components/TabBar.vue, src/components/SectionCard.vue, src/components/SectionItem.vue, src/pages/webview/index.vue
345 +- **技术栈**: Vue 3, Taro
346 +- **测试状态**: ✅ 已通过
347 +
348 +---
349 +
350 +## [2026-01-27] - 新增 OpenAPI 转 API 文档生成器
351 +
352 +### 新增
353 +- 新增 OpenAPI 转 API 文档生成器及相关文档
354 +- 支持区分 GET 和 POST 请求的参数处理
355 +- 新增 API 变更自动检测功能
356 +
357 +---
358 +
359 +**详细信息**
360 +- **影响文件**: scripts/api-generator/, docs/
361 +- **技术栈**: Node.js, OpenAPI
362 +- **测试状态**: ✅ 已通过
363 +- **备注**:
364 + - 自动生成 API 接口代码
365 + - 提升 API 开发效率
366 +
367 +---
368 +
369 +## [2026-01-27] - 添加项目开发文档
370 +
371 +### 文档
372 +- 添加 CLAUDE.md 项目开发指南文档
373 +- 添加项目开发计划文档
374 +- 添加前端开发计划文档
375 +- 重构文档目录结构并重新组织文档内容
376 +
377 +---
378 +
379 +**详细信息**
380 +- **影响文件**: CLAUDE.md, docs/plan/, docs/development-plan.md
381 +- **测试状态**: N/A
382 +- **备注**:
383 + - 完善项目文档体系
384 + - 便于团队成员快速上手
385 +
386 +---
387 +
54 ## [2026-02-01] - 替换默认头像为本地图片 388 ## [2026-02-01] - 替换默认头像为本地图片
55 389
56 ### 优化 390 ### 优化
......
1 +# CHANGELOG 检查机制
2 +
3 +> 本文档说明如何定期检查 CHANGELOG 是否有漏记,确保项目变更记录的完整性。
4 +
5 +## 🎯 检查机制的重要性
6 +
7 +### 为什么需要定期检查?
8 +
9 +1. **防止遗漏**:忙碌的开发中容易忘记更新 CHANGELOG
10 +2. **保持同步**:git 提交和 CHANGELOG 记录保持一致
11 +3. **项目追溯**:完整的历史记录便于问题排查和功能回顾
12 +4. **团队协作**:新成员通过 CHANGELOG 快速了解项目演进
13 +
14 +---
15 +
16 +## 🛠️ 自动化检查工具
17 +
18 +### 快速开始
19 +
20 +```bash
21 +# 检查最近 7 天(默认)
22 +pnpm run changelog:check
23 +
24 +# 检查最近 30 天
25 +pnpm run changelog:check:30
26 +
27 +# 检查所有提交
28 +pnpm run changelog:check:all
29 +```
30 +
31 +### 输出示例
32 +
33 +```
34 +======================================
35 + CHANGELOG 漏记检查工具
36 +======================================
37 +
38 +检查范围: 最近 7 天
39 +
40 +[1/4] 正在获取 git 提交记录...
41 + 找到 25 个提交
42 +
43 +[2/4] 正在解析 CHANGELOG 记录...
44 + 找到 18 条记录
45 +
46 +[3/4] 正在对比分析...
47 +
48 +📊 每日提交统计:
49 + 5 2026-02-01
50 + 12 2026-01-31
51 + 8 2026-01-30
52 +
53 +🔍 可能漏记的日期:
54 + ✗ 2026-01-30 - 8 个提交未记录
55 +
56 +[4/4] 生成详细报告...
57 +
58 +======================================
59 + 检查完成
60 +======================================
61 +
62 +✓ 详细报告已保存到: docs/changelog-check-report-20260201.md
63 +```
64 +
65 +---
66 +
67 +## 📅 检查频率建议
68 +
69 +### 每周检查(推荐)⭐
70 +
71 +**时间**: 每周五下午或周一早上
72 +
73 +**目的**:
74 +- 检查上周的变更是否都已记录
75 +- 在周会前准备好项目进展总结
76 +
77 +**命令**:
78 +```bash
79 +pnpm run changelog:check
80 +```
81 +
82 +**流程**:
83 +```bash
84 +1. 运行检查脚本
85 +2. 查看生成的报告
86 +3. 如果有漏记,补充到 CHANGELOG.md
87 +4. 提交更新
88 +```
89 +
90 +---
91 +
92 +### 每月检查(必需)
93 +
94 +**时间**: 每月最后一天或第一天
95 +
96 +**目的**:
97 +- 全面检查当月所有变更
98 +- 确保月度报告的准确性
99 +- 为项目回顾做准备
100 +
101 +**命令**:
102 +```bash
103 +pnpm run changelog:check:30
104 +```
105 +
106 +---
107 +
108 +### 发布前检查(必需)
109 +
110 +**时间**: 每次版本发布前
111 +
112 +**目的**:
113 +- 确保版本 CHANGELOG 完整
114 +- 避免发布后才发现漏记
115 +
116 +**命令**:
117 +```bash
118 +pnpm run changelog:check:all
119 +```
120 +
121 +---
122 +
123 +## 🔄 定期检查流程
124 +
125 +### 开发者个人流程
126 +
127 +#### 每次完成任务后
128 +
129 +```bash
130 +# 1. 完成功能开发
131 +git add .
132 +git commit -m "feat: 新增xxx功能"
133 +
134 +# 2. 立即更新 CHANGELOG
135 +# 编辑 docs/CHANGELOG.md
136 +# 添加本次变更记录
137 +
138 +# 3. 再次提交 CHANGELOG
139 +git add docs/CHANGELOG.md
140 +git commit -m "docs: 更新 CHANGELOG"
141 +
142 +# 4. 推送
143 +git push
144 +```
145 +
146 +#### 每周五下午
147 +
148 +```bash
149 +# 1. 运行检查脚本
150 +pnpm run changelog:check
151 +
152 +# 2. 如果有漏记,补充 CHANGELOG
153 +vim docs/CHANGELOG.md
154 +
155 +# 3. 提交更新
156 +git add docs/CHANGELOG.md
157 +git commit -m "docs: 补充本周变更记录"
158 +git push
159 +```
160 +
161 +---
162 +
163 +### 团队协作流程
164 +
165 +#### 每次 PR/MR 时
166 +
167 +**检查清单**:
168 +- [ ] CHANGELOG 已更新
169 +- [ ] 所有重要变更都已记录
170 +- [ ] 格式符合标准模板
171 +
172 +**CI 集成(可选)**:
173 +
174 +可以在 CI 流程中自动运行检查:
175 +
176 +```yaml
177 +# .gitlab-ci.yml (示例)
178 +changelog-check:
179 + stage: test
180 + script:
181 + - bash scripts/check-changelog.sh 7
182 + allow_failure: true
183 + only:
184 + - develop
185 +```
186 +
187 +---
188 +
189 +## 📋 漏记补充流程
190 +
191 +### 发现漏记后
192 +
193 +#### 1. 查看详细报告
194 +
195 +```bash
196 +# 打开生成的报告文件
197 +cat docs/changelog-check-report-20260201.md
198 +```
199 +
200 +报告会列出所有未记录的提交:
201 +```markdown
202 +### 未记录的提交详情
203 +
204 +**2026-01-30** (8 个提交):
205 +- refactor(SearchBar): 替换 NutUI Input 为原生 input 元素
206 +- fix: 修复搜索组件样式和搜索逻辑问题
207 +- feat(components): 添加可复用的 SearchBar 组件
208 +...
209 +```
210 +
211 +#### 2. 补充到 CHANGELOG.md
212 +
213 +按照标准格式补充记录:
214 +```markdown
215 +## [2026-01-30] - 搜索功能重构与优化
216 +
217 +### 新增
218 +- 新增 SearchBar 组件并替换多个页面中的搜索框
219 +
220 +### 重构
221 +- 重构 SearchBar 组件
222 + - 替换 NutUI Input 为原生 input 元素
223 +
224 +### 修复
225 +- 修复搜索组件样式和搜索逻辑问题
226 +
227 +---
228 +
229 +**详细信息**
230 +- **影响文件**: src/components/SearchBar.vue, src/pages/search/index.vue
231 +- **技术栈**: Vue 3, Taro
232 +- **测试状态**: ✅ 已通过
233 +```
234 +
235 +#### 3. 提交补充
236 +
237 +```bash
238 +git add docs/CHANGELOG.md
239 +git commit -m "docs: 补充 CHANGELOG 漏记的 N 条变更记录"
240 +git push
241 +```
242 +
243 +---
244 +
245 +## ⚙️ 自动化检查脚本说明
246 +
247 +### 脚本位置
248 +
249 +```
250 +scripts/check-changelog.sh
251 +```
252 +
253 +### 使用方式
254 +
255 +```bash
256 +# 直接运行
257 +./scripts/check-changelog.sh [days]
258 +
259 +# 通过 npm 运行
260 +pnpm run changelog:check # 最近 7 天
261 +pnpm run changelog:check:30 # 最近 30 天
262 +pnpm run changelog:check:all # 所有提交
263 +```
264 +
265 +### 脚本功能
266 +
267 +1. **获取 git 提交记录**
268 + - 扫描指定天数内的所有提交
269 + - 提取提交哈希、日期、描述
270 +
271 +2. **解析 CHANGELOG**
272 + - 提取所有已记录的日期
273 + - 统计记录数量
274 +
275 +3. **对比分析**
276 + - 每个日期的提交数量 vs CHANGELOG 记录
277 + - 识别漏记的日期
278 +
279 +4. **生成报告**
280 + - 保存为 `docs/changelog-check-report-YYYYMMDD.md`
281 + - 列出所有未记录的提交详情
282 +
283 +---
284 +
285 +## 🎯 检查时机总结
286 +
287 +| 检查类型 | 频率 | 范围 | 用途 |
288 +|---------|------|------|------|
289 +| **快速检查** | 每周 | 7 天 | 周会准备 |
290 +| **月度检查** | 每月 | 30 天 | 月度总结 |
291 +| **发布检查** | 发布前 | 所有 | 版本发布 |
292 +| **专项检查** | 随时 | 自定义 | 特殊需求 |
293 +
294 +---
295 +
296 +## 💡 最佳实践
297 +
298 +### 1. 及时记录
299 +
300 +**原则**: 完成功能后立即记录
301 +
302 +```bash
303 +# ❌ 不好:积累很多提交后一次性记录
304 +git commit -m "feat: 功能A"
305 +git commit -m "feat: 功能B"
306 +git commit -m "fix: 修复C"
307 +# ... 一周后才更新 CHANGELOG
308 +
309 +# ✅ 好:每个功能完成后立即记录
310 +git commit -m "feat: 功能A"
311 +vim CHANGELOG.md # 立即记录
312 +git commit -m "docs: 更新 CHANGELOG"
313 +```
314 +
315 +### 2. 定期检查
316 +
317 +**建议**: 设置日历提醒
318 +
319 +- **每周五 17:00**: 提醒检查本周变更
320 +- **每月最后一天**: 提醒检查当月变更
321 +- **发布前一天**: 提醒检查所有变更
322 +
323 +### 3. 团队协作
324 +
325 +**Pull Request 模板**:
326 +
327 +```markdown
328 +## CHANGELOG 检查
329 +- [ ] CHANGELOG 已更新
330 +- [ ] 所有重要变更都已记录
331 +- [ ] 格式符合标准模板
332 +
333 +## 检查命令
334 +```bash
335 +pnpm run changelog:check:7
336 +```
337 +
338 +---
339 +
340 +## 🔧 故障排查
341 +
342 +### 问题:脚本没有执行权限
343 +
344 +**解决**:
345 +```bash
346 +chmod +x scripts/check-changelog.sh
347 +```
348 +
349 +### 问题:报告显示没有提交
350 +
351 +**原因**: 指定天数内没有 git 提交
352 +
353 +**解决**: 增加检查天数
354 +```bash
355 +pnpm run changelog:check:30
356 +```
357 +
358 +### 问题:CHANGELOG 路径错误
359 +
360 +**解决**: 检查是否在项目根目录
361 +```bash
362 +pwd # 应该显示项目根目录
363 +ls docs/CHANGELOG.md # 确认文件存在
364 +```
365 +
366 +---
367 +
368 +## 📚 相关文档
369 +
370 +- [CHANGELOG 自动记录规则](~/.claude/rules/changelog-automation.md)
371 +- [CHANGELOG 文档](./CHANGELOG.md)
372 +- [技术决策记录](./decisions.md)
373 +
374 +---
375 +
376 +**最后更新**: 2026-02-01
377 +**维护者**: Claude Code
378 +**项目**: Manulife WeApp
...@@ -30,7 +30,10 @@ ...@@ -30,7 +30,10 @@
30 "lint": "eslint --ext .js,.vue src", 30 "lint": "eslint --ext .js,.vue src",
31 "api:generate": "node scripts/generateApiFromOpenAPI.js", 31 "api:generate": "node scripts/generateApiFromOpenAPI.js",
32 "api:sync": "node scripts/apifox-to-openapi.js", 32 "api:sync": "node scripts/apifox-to-openapi.js",
33 - "api:test": "node scripts/test-apifox-connection.js" 33 + "api:test": "node scripts/test-apifox-connection.js",
34 + "changelog:check": "bash scripts/check-changelog.sh 7",
35 + "changelog:check:30": "bash scripts/check-changelog.sh 30",
36 + "changelog:check:all": "bash scripts/check-changelog.sh 0"
34 }, 37 },
35 "browserslist": [ 38 "browserslist": [
36 "last 3 versions", 39 "last 3 versions",
......
1 +#!/bin/bash
2 +
3 +###############################################################################
4 +# CHANGELOG 漏记检查脚本
5 +#
6 +# 功能:
7 +# 1. 扫描最近 N 天的 git 提交记录
8 +# 2. 对比 CHANGELOG.md 中的记录
9 +# 3. 生成漏记报告
10 +#
11 +# 使用:
12 +# ./scripts/check-changelog.sh [days]
13 +#
14 +# 示例:
15 +# ./scripts/check-changelog.sh 7 # 检查最近 7 天
16 +# ./scripts/check-changelog.sh 30 # 检查最近 30 天
17 +# ./scripts/check-changelog.sh # 检查所有提交
18 +#
19 +###############################################################################
20 +
21 +set -e
22 +
23 +# 颜色定义
24 +RED='\033[0;31m'
25 +GREEN='\033[0;32m'
26 +YELLOW='\033[1;33m'
27 +BLUE='\033[0;34m'
28 +NC='\033[0m' # No Color
29 +
30 +# 默认参数
31 +DAYS=${1:-7} # 默认检查最近 7 天
32 +CHANGELOG_FILE="docs/CHANGELOG.md"
33 +
34 +echo -e "${BLUE}======================================${NC}"
35 +echo -e "${BLUE} CHANGELOG 漏记检查工具${NC}"
36 +echo -e "${BLUE}======================================${NC}"
37 +echo ""
38 +echo -e "检查范围: 最近 ${DAYS} 天"
39 +echo ""
40 +
41 +# 检查 CHANGELOG 文件是否存在
42 +if [ ! -f "$CHANGELOG_FILE" ]; then
43 + echo -e "${RED}错误: CHANGELOG 文件不存在: $CHANGELOG_FILE${NC}"
44 + exit 1
45 +fi
46 +
47 +# 1. 获取 git 提交记录
48 +echo -e "${BLUE}[1/4] 正在获取 git 提交记录...${NC}"
49 +
50 +if [ "$DAYS" = "0" ]; then
51 + # 检查所有提交
52 + GIT_LOG=$(git log --all --pretty=format:"%h|%ad|%s" --date=short)
53 +else
54 + # 检查最近 N 天的提交
55 + GIT_LOG=$(git log --since="$DAYS days ago" --pretty=format:"%h|%ad|%s" --date=short)
56 +fi
57 +
58 +TOTAL_COMMITS=$(echo "$GIT_LOG" | wc -l | tr -d ' ')
59 +echo -e " 找到 ${GREEN}$TOTAL_COMMITS${NC} 个提交"
60 +
61 +# 2. 解析 CHANGELOG 中的记录
62 +echo -e "${BLUE}[2/4] 正在解析 CHANGELOG 记录...${NC}"
63 +
64 +# 提取 CHANGELOG 中的日期和描述
65 +CHANGELOG_ENTRIES=$(grep "^## \[" "$CHANGELOG_FILE" | sed 's/^## \[//' | sed 's/\].*//' | sort -u)
66 +TOTAL_CHANGELOG=$(echo "$CHANGELOG_ENTRIES" | wc -l | tr -d ' ')
67 +echo -e " 找到 ${GREEN}$TOTAL_CHANGELOG${NC} 条记录"
68 +
69 +# 3. 对比分析
70 +echo -e "${BLUE}[3/4] 正在对比分析...${NC}"
71 +
72 +# 统计每个日期的提交数量
73 +COMMITS_BY_DATE=$(echo "$GIT_LOG" | awk -F'|' '{print $2}' | sort | uniq -c | sort -rn)
74 +
75 +echo ""
76 +echo -e "${YELLOW}📊 每日提交统计:${NC}"
77 +echo "$COMMITS_BY_DATE" | head -20
78 +
79 +# 检查哪些日期有提交但 CHANGELOG 没有记录
80 +echo ""
81 +echo -e "${YELLOW}🔍 可能漏记的日期:${NC}"
82 +
83 +MISSING_DATES=0
84 +while IFS='|' read -r count date; do
85 + date=$(echo "$date" | awk '{print $2}')
86 + # 检查 CHANGELOG 中是否有这个日期的记录
87 + if ! echo "$CHANGELOG_ENTRIES" | grep -q "$date"; then
88 + echo -e " ${RED}${NC} $date - ${RED}$count 个提交未记录${NC}"
89 + MISSING_DATES=$((MISSING_DATES + 1))
90 + fi
91 +done <<< "$COMMITS_BY_DATE"
92 +
93 +if [ $MISSING_DATES -eq 0 ]; then
94 + echo -e " ${GREEN}${NC} 所有提交都已记录"
95 +fi
96 +
97 +# 4. 生成详细报告
98 +echo ""
99 +echo -e "${BLUE}[4/4] 生成详细报告...${NC}"
100 +
101 +# 临时文件
102 +TEMP_REPORT=$(mktemp)
103 +
104 +# 输出报告头
105 +cat > "$TEMP_REPORT" << 'EOF'
106 +# CHANGELOG 漏记详细报告
107 +
108 +## 检查日期
109 +- 检查范围: 最近 {DAYS} 天
110 +- 生成时间: {TIMESTAMP}
111 +
112 +## 统计摘要
113 +- Git 提交总数: {TOTAL_COMMITS}
114 +- CHANGELOG 记录数: {TOTAL_CHANGELOG}
115 +- 可能漏记的提交: {MISSING_COMMITS}
116 +
117 +## 漏记详情
118 +
119 +EOF
120 +
121 +# 替换模板变量
122 +sed -i.bak "s/{DAYS}/$DAYS/g" "$TEMP_REPORT"
123 +sed -i.bak "s/{TIMESTAMP}/$(date '+%Y-%m-%d %H:%M:%S')/g" "$TEMP_REPORT"
124 +sed -i.bak "s/{TOTAL_COMMITS}/$TOTAL_COMMITS/g" "$TEMP_REPORT"
125 +sed -i.bak "s/{TOTAL_CHANGELOG}/$TOTAL_CHANGELOG/g" "$TEMP_REPORT"
126 +
127 +# 计算可能漏记的提交数
128 +MISSING_COMMITS=0
129 +while IFS='|' read -r count date; do
130 + date=$(echo "$date" | awk '{print $2}')
131 + if ! echo "$CHANGELOG_ENTRIES" | grep -q "$date"; then
132 + MISSING_COMMITS=$((MISSING_COMMITS + count))
133 + fi
134 +done <<< "$COMMITS_BY_DATE"
135 +
136 +sed -i.bak "s/{MISSING_COMMITS}/$MISSING_COMMITS/g" "$TEMP_REPORT"
137 +
138 +# 如果有漏记,列出详细提交
139 +if [ $MISSING_COMMITS -gt 0 ]; then
140 + echo "" >> "$TEMP_REPORT"
141 + echo "### 未记录的提交详情" >> "$TEMP_REPORT"
142 + echo "" >> "$TEMP_REPORT"
143 +
144 + while IFS='|' read -r count date; do
145 + date_only=$(echo "$date" | awk '{print $2}')
146 + if ! echo "$CHANGELOG_ENTRIES" | grep -q "$date_only"; then
147 + echo "**$date_only** ($count 个提交):" >> "$TEMP_REPORT"
148 + echo "$GIT_LOG" | grep "$date_only" | awk -F'|' '{print "- " $3}' >> "$TEMP_REPORT"
149 + echo "" >> "$TEMP_REPORT"
150 + fi
151 + done <<< "$COMMITS_BY_DATE"
152 +else
153 + echo "" >> "$TEMP_REPORT"
154 + echo "### ✅ 完整性检查" >> "$TEMP_REPORT"
155 + echo "" >> "$TEMP_REPORT"
156 + echo "所有提交都已在 CHANGELOG 中记录!" >> "$TEMP_REPORT"
157 +fi
158 +
159 +# 删除备份文件
160 +rm -f "$TEMP_REPORT.bak"
161 +
162 +# 输出报告
163 +echo ""
164 +echo -e "${BLUE}======================================${NC}"
165 +echo -e "${BLUE} 检查完成${NC}"
166 +echo -e "${BLUE}======================================${NC}"
167 +echo ""
168 +cat "$TEMP_REPORT"
169 +
170 +# 保存报告
171 +REPORT_FILE="docs/changelog-check-report-$(date +%Y%m%d).md"
172 +mv "$TEMP_REPORT" "$REPORT_FILE"
173 +
174 +echo ""
175 +echo -e "${GREEN}✓ 详细报告已保存到: $REPORT_FILE${NC}"
176 +
177 +# 5. 给出建议
178 +echo ""
179 +echo -e "${YELLOW}💡 建议:${NC}"
180 +if [ $MISSING_COMMITS -gt 0 ]; then
181 + echo -e " ${YELLOW}1.${NC} 查看 $REPORT_FILE 了解漏记详情"
182 + echo -e " ${YELLOW}2.${NC} 更新 CHANGELOG.md 补充漏记的记录"
183 + echo -e " ${YELLOW}3.${NC} 使用标准格式添加记录(参考文档顶部模板)"
184 +else
185 + echo -e " ${GREEN}${NC} CHANGELOG 记录完整,继续保持!"
186 +fi
187 +
188 +echo ""
189 +echo -e "${BLUE}======================================${NC}"
190 +echo ""
191 +
192 +# 返回退出码
193 +if [ $MISSING_COMMITS -gt 0 ]; then
194 + exit 1 # 有漏记,返回非零退出码
195 +else
196 + exit 0 # 无漏记,返回零
197 +fi