CHANGELOG.md 21.8 KB

变更日志

记录项目开发过程中的重要变更和完成任务。

2026-02-28

20:07:54 - refactor(search): 搜索 Tab 显示结果数量

影响文件:

变更摘要:

  • 搜索 Tab 显示结果数量

相关提交:

  • f059121 - refactor(search): 搜索 Tab 显示结果数量

20:00:51 - fix(changelog): 修复多行 commit message 导致的重复内容问题

影响文件:

变更摘要:

  • 修复多行 commit message 导致的重复内容问题

相关提交:

  • 8b44aa1 - fix(changelog): 修复多行 commit message 导致的重复内容问题

19:54:54 - docs

  • 更新搜索 API 响应字段:files → article
  • 字段名规范化:name/value/extension → post_title/post_excerpt/post_link
  • 文章详情 API 添加 file_list 字段类型定义
  • 计划书 API 完善参数文档说明

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com(api

  • 更新搜索 API 响应字段:files → article
  • 字段名规范化:name/value/extension → post_title/post_excerpt/post_link
  • 文章详情 API 添加 file_list 字段类型定义
  • 计划书 API 完善参数文档说明

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com): 同步搜索 API 文档,将 file 类型改为 article

  • 更新搜索 API 响应字段:files → article
  • 字段名规范化:name/value/extension → post_title/post_excerpt/post_link
  • 文章详情 API 添加 file_list 字段类型定义
  • 计划书 API 完善参数文档说明

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

影响文件:

  • docs/api-specs/search/search.md
  • src/api/article.js
  • src/api/plan.js

变更摘要:

  • 同步搜索 API 文档,将 file 类型改为 article

  • 更新搜索 API 响应字段:files → article

  • 字段名规范化:name/value/extension → post_title/post_excerpt/post_link

  • 文章详情 API 添加 file_list 字段类型定义

  • 计划书 API 完善参数文档说明

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

相关提交:

  • a4ef54a - docs

  • 更新搜索 API 响应字段:files → article

  • 字段名规范化:name/value/extension → post_title/post_excerpt/post_link

  • 文章详情 API 添加 file_list 字段类型定义

  • 计划书 API 完善参数文档说明

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com(api

  • 更新搜索 API 响应字段:files → article
  • 字段名规范化:name/value/extension → post_title/post_excerpt/post_link
  • 文章详情 API 添加 file_list 字段类型定义
  • 计划书 API 完善参数文档说明

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com): 同步搜索 API 文档,将 file 类型改为 article

  • 更新搜索 API 响应字段:files → article
  • 字段名规范化:name/value/extension → post_title/post_excerpt/post_link
  • 文章详情 API 添加 file_list 字段类型定义
  • 计划书 API 完善参数文档说明

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com


17:11:05 - fix

  • 删除 if/else 块外部的重复 mv 命令
  • TEMP_FILE 变量只在块内有效,外部无法访问

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com(husky

  • 删除 if/else 块外部的重复 mv 命令
  • TEMP_FILE 变量只在块内有效,外部无法访问

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com): 修复 CHANGELOG 脚本重复 mv 命令错误

  • 删除 if/else 块外部的重复 mv 命令
  • TEMP_FILE 变量只在块内有效,外部无法访问

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

影响文件:

  • CHANGELOG.md

变更摘要:

  • 修复 CHANGELOG 脚本重复 mv 命令错误

  • 删除 if/else 块外部的重复 mv 命令

  • TEMP_FILE 变量只在块内有效,外部无法访问

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

相关提交:

  • 04f7261 - fix

  • 删除 if/else 块外部的重复 mv 命令

  • TEMP_FILE 变量只在块内有效,外部无法访问

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com(husky

  • 删除 if/else 块外部的重复 mv 命令
  • TEMP_FILE 变量只在块内有效,外部无法访问

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com): 修复 CHANGELOG 脚本重复 mv 命令错误

  • 删除 if/else 块外部的重复 mv 命令
  • TEMP_FILE 变量只在块内有效,外部无法访问

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com


17:10:43 - refactor

  • 检测逻辑:从 "## [日期] - 标题" 改为 "## 日期"
  • 生成格式:匹配根目录格式(时间 + commit hash + 文件列表)
  • 插入逻辑:追加到日期下,而非文件开头
  • 解决误判问题,现在能正确识别今日已有条目

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com(husky

  • 检测逻辑:从 "## [日期] - 标题" 改为 "## 日期"
  • 生成格式:匹配根目录格式(时间 + commit hash + 文件列表)
  • 插入逻辑:追加到日期下,而非文件开头
  • 解决误判问题,现在能正确识别今日已有条目

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com): 重写 CHANGELOG 自动更新格式匹配根目录

  • 检测逻辑:从 "## [日期] - 标题" 改为 "## 日期"
  • 生成格式:匹配根目录格式(时间 + commit hash + 文件列表)
  • 插入逻辑:追加到日期下,而非文件开头
  • 解决误判问题,现在能正确识别今日已有条目

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

影响文件:

变更摘要:

  • 重写 CHANGELOG 自动更新格式匹配根目录

  • 检测逻辑:从 "## [日期] - 标题" 改为 "## 日期"

  • 生成格式:匹配根目录格式(时间 + commit hash + 文件列表)

  • 插入逻辑:追加到日期下,而非文件开头

  • 解决误判问题,现在能正确识别今日已有条目

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

相关提交:

  • 06fe556 - refactor

  • 检测逻辑:从 "## [日期] - 标题" 改为 "## 日期"

  • 生成格式:匹配根目录格式(时间 + commit hash + 文件列表)

  • 插入逻辑:追加到日期下,而非文件开头

  • 解决误判问题,现在能正确识别今日已有条目

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com(husky

  • 检测逻辑:从 "## [日期] - 标题" 改为 "## 日期"
  • 生成格式:匹配根目录格式(时间 + commit hash + 文件列表)
  • 插入逻辑:追加到日期下,而非文件开头
  • 解决误判问题,现在能正确识别今日已有条目

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com): 重写 CHANGELOG 自动更新格式匹配根目录

  • 检测逻辑:从 "## [日期] - 标题" 改为 "## 日期"
  • 生成格式:匹配根目录格式(时间 + commit hash + 文件列表)
  • 插入逻辑:追加到日期下,而非文件开头
  • 解决误判问题,现在能正确识别今日已有条目

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com


17:02:37 - feat(plan): 年缴保费显示添加千分位分隔符

影响文件:

  • src/components/plan/PlanFields/AmountKeyboard.vue

变更摘要:

  • 修改 AmountKeyboard 组件的 displayValue 计算属性
  • 显示已确认数值时自动添加千分位(如 1,000、15,000)
  • 输入过程中保持原始显示,避免跳动干扰
  • 数据存储不变,仅影响显示层

相关提交:

  • efbd4d8 - feat(plan): 年缴保费显示添加千分位分隔符

16:47:38 - feat(plan): 新增提取期自定义输入功能

影响文件:

  • src/components/plan/PlanFields/PeriodInput.vue - 新增自定义提取期输入组件
  • src/components/plan/PlanFields/SelectPickerGlobal.vue - 支持自定义选项触发器
  • src/components/plan/PlanTemplates/SavingsTemplate.vue - 多阶段提取期支持自定义输入

变更摘要:

  • 新增 PeriodInput 组件,支持用户自定义输入提取期
  • 支持数值验证(min/max/allowed_formats/custom_validators)
  • SelectPickerGlobal 新增 @custom-select 事件,触发自定义输入弹窗
  • 多阶段提取期选项合并:预设选项 + 用户自定义选项
  • 配置驱动:multi_stage_withdrawal.custom_period 控制功能开关

相关提交:

  • 34bf2e8 - feat(plan): 新增提取期自定义输入功能

16:09:33 - fix(plan): 修复计划书文件预览功能

影响文件:

  • src/composables/usePlanView.js - 恢复 useFileOperation 依赖

变更摘要:

  • 修复计划书文件预览无法打开的问题
  • 恢复 useFileOperation composable 的导入

相关提交:

  • 2f8937c - fix(plan): 修复计划书文件预览功能,恢复 useFileOperation 依赖

15:59:26 - fix(mock): 修复小程序环境 process 不存在的错误

影响文件:

  • src/utils/mockData.js

变更摘要:

  • 修复小程序环境调用 process.env 导致的报错
  • 改用 Taro.getEnv() 判断运行环境

相关提交:

  • 72e59da - fix(mock): 修复小程序环境 process 不存在的错误

15:58:40 - feat(mock): 新增 POST API Mock 支持 AI 自动测试

影响文件:

  • src/utils/mockData.js
  • src/utils/__tests__/postMock.test.js

变更摘要:

  • 新增 POST 请求 Mock 数据支持
  • 支持根据请求体动态返回不同结果
  • 新增 AI 自动测试用例(覆盖增删改查)

相关提交:

  • d8ffb54 - feat(mock): 新增 POST API Mock 支持 AI 自动测试

15:33:22 - docs(api): 更新计划书 API 文档

影响文件:

  • docs/api-specs/plan/add.md

变更摘要:

  • 更新计划书 API 文档,年龄与出生年月日改为二选一
  • 明确字段校验规则

相关提交:

  • 5e7bfe7 - docs(api): 更新计划书API文档,年龄与出生年月日改为二选一

15:32:08 - fix(plan): 修复储蓄类多阶段模版保存问题

影响文件:

  • src/components/plan/PlanTemplates/SavingsTemplate.vue

变更摘要:

  • 修复多阶段模式下 stages 数据无法从 props.modelValue 恢复的问题
  • 修复 validate() 函数中单阶段字段被错误校验的问题
  • 添加详细的调试日志以方便排查问题

相关提交:

  • 4b8f69d - fix(plan): 修复储蓄类多阶段模版保存问题

13:36:27 - docs(changelog): 记录 htmlUtils 工具库新增

影响文件:

  • docs/CHANGELOG.md

变更摘要:

  • 记录 htmlUtils 工具库新增到文档变更日志

相关提交:

  • 03c4609 - docs(changelog): 记录 htmlUtils 工具库新增

13:17:26 - fix(article): 文章列表页收藏状态与详情页同步

影响文件:

  • src/pages/article-detail/index.vue
  • src/pages/material-list/index.vue

变更摘要:

  • 修复文章详情页收藏后返回列表页状态未更新的问题
  • 使用 Taro.eventCenter 监听收藏事件,实现跨页面通信

相关提交:

  • fc49890 - fix(article): 文章列表页收藏状态与详情页同步

11:14:25 - feat(ui): RichTextRenderer 新增链接长按复制功能

影响文件:

  • src/components/RichTextRenderer.vue
  • src/pages/rich-text-test/index.vue

变更摘要:

  • 新增链接长按复制功能(支持 http/https 链接)
  • 使用 Taro.setClipboardData 实现复制
  • 新增复制成功提示 Toast

相关提交:

  • 2cb6454 - feat(ui): RichTextRenderer 新增链接长按复制功能

01:03:28 - docs(changelog): 补充 2-27 的详细更新记录

影响文件:

  • docs/CHANGELOG.md

变更摘要:

  • 补充 2026-02-27 富文本和文章模块的详细更新记录

相关提交:

  • c653298 - docs(changelog): 补充 2-27 的详细更新记录

00:21:17 - fix(rich-text): 修复 v-html 样式不生效问题

影响文件:

  • src/components/RichTextRenderer.vue
  • src/pages/rich-text-test/index.vue

变更摘要:

  • 修复 v-html 渲染的富文本样式不生效的问题
  • 改用内联样式 + scoped 样式的 ID 选择器方案

相关提交:

  • cd36f28 - fix(rich-text): 修复 v-html 样式不生效问题

00:34:39 - feat(plan): 储蓄类计划书表单调整

影响文件:

  • src/components/plan/PlanTemplates/SavingsTemplate.vue - 注释掉年龄-出生日期自动联动逻辑
  • src/config/plan-templates.js - 移除储蓄类产品的吸烟字段和映射

变更摘要:

  • 移除储蓄类产品的"吸烟"字段(客户需求)
  • 切断年龄与出生日期的自动联动,改为独立填写(客户需求)
  • 更新储蓄类提交字段映射(savingsSubmitMapping),移除吸烟字段
  • 更新组件注释,移除"是否吸烟"描述

相关提交:

  • 5c7df88 - feat(plan): 储蓄类计划书表单调整

00:37:01 - docs(components): 更新组件文档和 CHANGELOG

影响文件:

  • src/components/RichTextRenderer.vue - 修正 scoped 样式相关注释
  • src/components/README.md - 添加 RichTextRenderer 组件完整文档
  • docs/CHANGELOG.md - 记录今日计划书表单调整

变更摘要:

  • 修正 RichTextRenderer.vue 的注释说明( scoped 样式 → 内联样式 + ID 选择器)
  • 更新 components/README.md,添加 RichTextRenderer 组件到文档索引
  • 添加 RichTextRenderer 详细文档(Props、Events、功能特性、使用示例)

相关提交:

  • cd09fc9 - docs(components): 更新组件文档和 CHANGELOG

00:39:10 - docs(changelog): 更新根目录 CHANGELOG 记录今日任务

影响文件:

  • CHANGELOG.md - 添加 2026-02-28 计划书表单调整记录

变更摘要:

  • 添加 2026-02-28 计划书表单调整记录
  • 添加组件文档更新记录

相关提交:

  • 247c63d - docs(changelog): 更新根目录 CHANGELOG 记录今日任务

00:40:50 - docs(changelog): 移除错误添加的项目功能变更记录

影响文件:

  • docs/CHANGELOG.md - 删除错误的项目功能变更记录

变更摘要:

  • docs/CHANGELOG.md 应只记录文档相关的变更,不应记录项目功能变更
  • 项目功能变更应记录在根目录的 CHANGELOG.md 中

相关提交:

  • ac207cf - docs(changelog): 移除错误添加的项目功能变更记录

13:35:17 - refactor(utils): 新增 htmlUtils 工具库并重构 RichTextRenderer

影响文件:

  • src/utils/htmlUtils.js - 新增 HTML 工具函数库
  • src/components/RichTextRenderer.vue - 使用工具库,移除内联实现

变更摘要:

  • 新增 htmlUtils.js 工具函数库,包含 200+ HTML 实体解码支持
  • 支持 DOM API(H5)和手动映射(小程序)双模式自适应
  • 新增工具函数:
    • decodeHtmlEntities() - HTML 实体解码(支持基本符号、货币、数学符号、希腊字母等)
    • encodeHtmlEntities() - HTML 实体编码(XSS 防护)
    • stripHtmlTags() - 移除 HTML 标签
    • truncateHtml() - 截取 HTML 并保留标签完整性
  • RichTextRenderer 组件改用工具库,移除内联实现(减少 53 行代码)
  • 清理所有测试 console.log(保留 error 日志)

相关提交:

  • fb33196 - refactor(utils): 新增 htmlUtils 工具库并重构 RichTextRenderer

2026-02-27

09:56-10:00 - docs(utils): 更新工具函数库文档

影响文件:

  • src/utils/README.md

变更摘要:

  • 添加工具函数库文档说明

12:57-13:03 - fix(api): 修复 API 生成器路径配置错误

影响文件:

  • scripts/api-generator/generateApiFromOpenAPI.js
  • docs/api-specs/article/article_detail.md
  • docs/api-specs/article/favorite.md
  • docs/api-specs/article/list.md
  • docs/api-specs/article/week_hot.md
  • src/api/article.js

变更摘要:

  • 修复 openAPIDir 路径:../docs/api-specs → ../../docs/api-specs
  • 修复 outputDir 路径:../src/api → ../../src/api
  • 新增 article 模块 API(文章详情、收藏、列表、热门)

13:03-22:49 - feat(rich-text): 新增 RichTextRenderer 富文本渲染组件

影响文件:

  • package.json - 新增 mp-html 和 @tarojs/extend 依赖
  • src/components/RichTextRenderer.vue - 新增富文本渲染组件
  • src/pages/rich-text-test/ - 新增测试页面
  • src/pages/rich-text-test/README.md - 测试页面说明文档

变更摘要:

  • HTML 实体自动解码( , &, <, >, ", ')
  • 标签自动替换为
  • 图片长按预览功能
  • PDF 文件链接点击处理
  • transformElement 图片自动处理(默认启用)
  • 支持图片 mode="widthFix" 和 style="width: 100%"

  • 22:48-22:49 - test(rich-text): 完善 v-html 测试页面功能

    影响文件:

    • src/pages/rich-text-test/index.vue

    变更摘要:

    • 添加 HTML 实体解析( , &, <, >, ")
    • 实现 a 标签替换为 div + data-href 属性
    • 添加 PDF 文件链接点击处理(useFileOperation)
    • 新增 transformElement 图片处理测试开关

    fix(rich-text): 修复图片自动处理并应用到文章详情页

    影响文件:

    • src/components/RichTextRenderer.vue - 修复 transformElement 初始化顺序
    • src/pages/article-detail/index.vue - 使用 RichTextRenderer 组件替换

    变更摘要:

    • 修复 transformElement 初始化顺序问题(在 watch 之前设置)
    • 增强图片样式:添加 width:100%!important
    • 删除文章图片列表模块(由组件处理)
    • 删除富文本处理逻辑(formatRichText、extractImageUrls 等)
    • 代码精简:199 行 → 147 行(减少约 26%)

    fix(rich-text): 移除全局CSS导入避免影响其他组件样式

    影响文件:

    • src/components/RichTextRenderer.vue

    变更摘要:

    • 移除 @tarojs/taro/html.css 全局样式导入
    • 在组件 style 中添加完整的富文本样式(使用 ID 选择器避免污染)
    • 解决 NavHeader 标题不居中的问题

    feat(article): 文章模块功能开发

    影响文件:

    • src/components/cards/ArticleCard.vue - 新增 ArticleCard 组件
    • src/pages/article-detail/index.vue - 新增文章详情页
    • src/pages/article-favorites/index.vue - 新增文章收藏页
    • src/pages/category-list/index.vue - 优化分类列表页

    变更摘要:

    • ArticleCard 支持可配置封面图显示 (showCover prop)
    • 分类列表页支持混合渲染模式:
      • max_depth > 1: 显示二级分类卡片 (SectionCard)
      • max_depth === 1: 直接显示文章列表 (ArticleCard)
    • 过滤空状态项 (max_depth === 1 且 list 为空)

    feat(article): 文章详情页添加图片预览功能

    影响文件:

    • src/pages/article-detail/index.vue

    变更摘要:

    • 使用 Taro 原生 rich-text 组件渲染富文本
    • 富文本内容自动格式化,处理图片宽度适配移动端
    • 提取文章中的图片 URL,支持 Taro.previewImage 预览
    • 新增收藏功能,支持文章收藏/取消收藏

    feat(article): 文章图片列表改为网格布局

    影响文件:

    • src/pages/article-detail/index.vue

    变更摘要:

    • 移除横向滚动视图
    • 使用 flex-wrap 实现网格布局
    • 每行显示3张图片,自动换行

    feat(index): 首页热门资料改为热门文章

    影响文件:

    • src/pages/index/index.vue

    变更摘要:

    • 将"本周热门资料"改为"本周热门文章"
    • 使用 ArticleCard 替换 MaterialCard
    • 更新 API 调用从 file/weekHotAPI 到 article/weekHotAPI

    refactor(collect): 收藏功能改为 API 驱动模式

    影响文件:

    • src/composables/useCollectOperation.js
    • src/components/cards/ArticleCard.vue
    • src/components/cards/MaterialCard.vue
    • src/components/list/ListItemActions/index.vue

    变更摘要:

    • 移除乐观更新逻辑,改为 API 成功后更新 UI
    • useCollectOperation 返回 { success, newStatus } 对象
    • ArticleCard/MaterialCard 使用 async/await 等待 API 响应
    • ListItemActions 添加 @tap.stop 防止事件冒泡

    style(plan): 弹窗标题显示产品名称而非模板名称

    影响文件:

    • src/components/plan/PlanFormContainer.vue

    变更摘要:

    • 弹窗标题改为显示产品名称

    style(plan): 调整每年提取金额字段位置至提取期下方

    影响文件:

    • src/components/plan/PlanTemplates/SavingsTemplate.vue

    变更摘要:

    • 统一单阶段和多阶段模式的字段录入顺序

    refactor(plan): 重构多阶段提取方案 UI 渲染逻辑

    影响文件:

    • src/components/plan/PlanTemplates/SavingsTemplate.vue

    变更摘要:

    • 重构多阶段提取方案 UI 渲染逻辑

    docs: 更新变更日志

    影响文件:

    • CHANGELOG.md

    变更摘要:

    • 更新项目变更日志

    docs(changelog): 更新 CHANGELOG

    影响文件:

    • docs/CHANGELOG.md

    变更摘要:

    • 更新文档变更日志

    chore: 更新组件类型定义

    影响文件:

    • components.d.ts

    变更摘要:

    • 更新组件类型定义

    2026-02-25

    21:00:00 - feat(plan): 新增多阶段提取方案功能

    影响文件:

    • src/config/plan-templates.js - 新增多阶段产品配置和 savings-gs-multistage 产品
    • src/components/plan/PlanTemplates/SavingsTemplate.vue - 实现多阶段提取渲染和交互逻辑
    • src/api/mock/mock/hotProducts.js - 添加多阶段产品 mock 数据

    变更摘要:

    • 新增产品:宏挚传承保障计划(多阶段) (savings-gs-multistage)
    • 多阶段功能:
      • 年龄 < 12岁:固定显示 3 个阶段
      • 年龄 ≥ 12岁:初始 1 个阶段,可添加至 4 个
      • 提取期新增"一笔过"选项
      • 递增百分比改为可选字段(不填传 null)
    • 提交数据格式:withdrawal_stages 数组
    • 样式优化:阶段卡片白色背景

    相关文档:

    • docs/tasks/2026-02-25/archive/多阶段提取方案设计.md
    • docs/tasks/2026-02-25/archive/客户新需求-2026-02-25.md

    2026-02-24

    23:59:18 - 完成任务

    影响文件:

    • .husky/README.md
    • .husky/post-commit
    • docs/CHANGELOG.md
    • scripts/changelog/README.md
    • scripts/changelog/update-changelog.sh

    变更摘要:

    • CHANGELOG 自动更新功能配置

    2026-02-28 - 修复储蓄类多阶段模版保存问题

    影响文件:

    • src/components/plan/PlanTemplates/SavingsTemplate.vue

    变更摘要:

    • 修复多阶段模式下 stages 数据无法从 props.modelValue 恢复的问题
    • 修复 validate() 函数中单阶段字段被错误校验的问题
    • 添加详细的调试日志以方便排查问题