CHANGELOG.md 105 KB

Changelog

本文档记录 Manulife WeApp项目的所有重要变更。 格式基于 Keep a Changelog


[2026-02-06] - 修复搜索栏清空按钮点击无效

修复

  • 修复计划书页面搜索框清空按钮点击无响应的问题
  • SearchBar 组件添加 .stop 修饰符阻止事件冒泡
  • 增强 handleClear 函数,显式调用 stopPropagation()
  • 添加 emit('input', '') 保持事件一致性
  • 计划书页面添加显式 searchValue 重置

格式基于 Keep a Changelog


[2026-02-06] - 修复计划书页面触底加载更多不触发

修复

  • 修复 src/pages/plan/index.vue 列表区域滚动到底部不触发加载更多的问题
  • 列表区域改为使用 scroll-viewscrolltolower 事件触发加载更多,并保留 useReachBottom 作为兜底
  • 修复 scroll-view 内列表项宽度溢出导致右侧被裁切的问题

[2026-02-06] - 修复401重定向死循环和返回报错

修复

  • 修复401重定向导致的死循环问题(使用 navigateTo 导致导航栈保留原页面)
  • 修复登录页点击返回报错 "navigateBack:fail cannot navigate back at first page"
  • 修复 Pinia store 使用方式错误(routerStore 需要调用函数获取实例)

优化

  • 401拦截器智能选择跳转方式(根据导航栈长度选择 redirectTo 或 reLaunch)
  • NavHeader组件智能返回逻辑(导航栈为空时跳转首页而非报错)
  • 登录成功后智能跳转(优先跳转回原页面,否则跳转首页)

技术改进

  • 401时保存当前路径到 router store
  • 登录成功后读取并跳转回原页面
  • 正确使用 Pinia store:const store = routerStore()

[2026-02-06] - 优化产品中心列表UI (布局调整)

优化

  • 增加产品卡片图片和高度(从 200rpx 增加到 220rpx),缓解内容拥挤感
  • 调整标题和标签间距,使布局更紧凑
  • 使用 mt-auto 将操作按钮组沉底,确保与上方标签保持合理间距,并使卡片视觉重心更稳

技术实现

  • 图片容器大小:w-[220rpx] h-[220rpx]
  • 按钮组:添加 mt-auto
  • 标题间距:mb-[12rpx]
  • 标签间距:mb-[8rpx]

[2026-02-06] - 优化产品中心列表UI

优化

  • 调整产品列表动态标签的间距,修复 gap 属性拼写错误
  • 将产品卡片右侧的图标按钮组改为更直观的纯文字按钮("详情"、"计划书")

技术实现

  • 修复 gap-[8rpxgap-[8rpx],增加标签间距
  • 替换 IconFont 组件为带样式的 view 标签,统一按钮风格

[2026-02-06] - 添加 mock 数据支持并修复滚动加载功能

新增

  • 添加 mock 数据系统用于开发测试
    • 生成 100 个测试产品数据
    • 支持 5 个产品分类(寿险、健康险、意外险、年金险、重疾险)
    • 支持随机图片(Lorem Picsum 服务)
    • 支持搜索和分类过滤
    • 模拟网络延迟(300-800ms)
  • 在 get_product.js 中添加 mock 数据开关(USE_MOCK_DATA)

修复

  • 修复产品中心页面滚动加载不触发的问题
  • 使用 page-level scroll 替代 container scroll
  • 使用 sticky 定位固定顶部导航和搜索栏
  • useReachBottom 现在可以正确监听页面触底事件

技术改进

  • 移除 h-screen(小程序不支持 100vh)
  • 使用 sticky top-0 固定顶部区域
  • 列表区域使用页面级滚动
  • 添加调试日志方便排查问题

[2026-02-06] - 修复 scroll-view 兼容性和 prop 验证错误

修复

  • 移除 product-center 页面的 scroll-view 组件,解决 webview 兼容性警告
  • 删除冗余的 onScrollToLower 函数
  • 将触底加载逻辑内联到 useReachBottom hook 中
  • 为 product-detail 页面的 PlanFormContainer 添加条件渲染

技术改进

  • 使用原生 view 替代 scroll-view,避免跨平台兼容性问题
  • 优化触底加载逻辑,提高代码可维护性
  • 添加 v-if="showPlanPopup && productDetail.id" 条件渲染
  • 避免 productDetail 为 null 时的 prop 类型检查错误

[2026-02-06] - 修复产品中心页面 prop 验证错误

修复

  • 修复产品中心页面进入时的 Vue prop 类型验证警告
  • 修复 PlanFormContainer 组件接收 null 值时的报错

技术改进

  • 明确指定 PlanFormContainer 的 product prop 类型为 Object
  • 将 required 设为 false 并允许 null 默认值
  • 添加空值检查,防止访问 null.form_sn 报错
  • 在 product-center 页面添加 v-if 条件渲染,避免传 null

[2026-02-06] - 搜索页面联调完成

新增

  • 集成搜索API,实现产品和资料的实时搜索功能
  • 添加下拉刷新功能,支持刷新当前选中tab的数据
  • 实现首次搜索自动选择tab逻辑(根据返回数据判断)

优化

  • 移除"全部"tab,只保留"产品"和"资料"两个tab
  • 点击tab时实时查询对应类型的数据,不再使用本地缓存
  • 优化搜索结果展示,适配后端返回的数据结构

技术改进

  • 使用 searchAPI 调用后端搜索接口
  • 首次搜索不传 type 参数,根据返回的 products.totalfiles.total 自动选择有数据的tab
  • 切换tab时传递 type 参数('product' | 'file')进行精确查询
  • 下拉刷新时使用当前选中的tab的type进行查询

修复

  • 修复产品卡片显示逻辑,正确显示 product_namecover_imagetags
  • 修复资料卡片显示逻辑,正确显示 namevalueextension

[2026-02-06] - 修复计划书表单重置不稳定问题

修复

  • 修复计划书表单提交成功后,有时会保留上次数据的不稳定问题
  • 确保表单在提交成功和关闭弹窗时都能正确重置
  • 优化 watch 监听器逻辑,避免竞态条件

技术改进

  • PlanFormContainer 中新增 resetForm() 函数
  • submit() 成功后立即调用 resetForm()
  • close() 关闭弹窗前调用 resetForm()
  • 优化 watch(visible) 作为安全网,仅检测残留数据时重置
  • 为所有模板组件添加 clearErrors() 方法,保持接口一致性

[2026-02-06] - 完善计划书表单必填项提示与提交校验

视觉优化

  • 为所有计划书表单字段添加红色星号(*),明确标识必填项。
  • 涉及组件:AgePickerAmountInputDatePickerRadioGroupSelectPicker
  • 更新所有模版(CriticalIllnessTemplateLifeInsuranceTemplateSavingsTemplate)以启用必填样式。

逻辑优化

  • PlanFormContainer 中集成表单校验逻辑,确保在提交前调用模版的 validate 方法。
  • 阻止无效表单的提交,并保留原有的提交数据结构。

修复

  • 修复 RadioGroupSelectPicker 组件缺失 required 属性导致的 Vue 警告。
  • 修复表单组件(RadioGroup, SelectPicker, AgePicker, DatePicker)标签中红色星号与文字换行的问题,使用 Flexbox 保证单行对齐。

[2026-02-06] - 完善计划书模板表单校验逻辑

优化

  • 为所有计划书模板组件(CriticalIllnessTemplateLifeInsuranceTemplateSavingsTemplate)添加 validate 方法。
  • 实现全面的表单字段必填校验逻辑,确保数据的完整性。
  • 为缺失的必填项添加 Toast 提示,提升用户体验。

详细变更

  • CriticalIllnessTemplate.vue:
    • 引入 @tarojs/taro
    • 增加 validate 方法,校验性别、出生年月日、年龄、是否吸烟、保额、缴费年期。
    • 通过 defineExpose 暴露 validate 方法。
  • LifeInsuranceTemplate.vue:
    • 引入 @tarojs/taro
    • 增加 validate 方法,校验同上。
    • 通过 defineExpose 暴露 validate 方法。
  • SavingsTemplate.vue:
    • 引入 @tarojs/taro
    • 增加 validate 方法,支持复杂的条件校验:
    • 基础字段校验。
    • 提取计划启用时的多层级字段校验(提取模式、提取方式、开始年龄、提取期、递增比例等)。
    • 修复 increase_ratewithdrawal_start_age 等数字字段的校验逻辑(允许 0 值,排除空字符串和 undefined)。
    • 通过 defineExpose 暴露 validate 方法。

[2026-02-06] - 新增 form_sn 映射文档

文档

  • 创建 form-sn-mapping.md 文档,提供完整的 form_sn 映射关系说明
  • 创建 form-sn-mapping.json 文件,提供机器可读的映射数据

核心内容

  • 8 个产品的 form_sn 映射:人寿保险(2个)、重疾保险(3个)、储蓄保险(4个)
  • 3 种模版组件说明:LifeInsuranceTemplate、CriticalIllnessTemplate、SavingsTemplate
  • 后端集成指南:包含 API 返回示例、命名规范、新产品接入流程

文件位置

  • 文档:docs/form-sn-mapping.md
  • JSON:docs/form-sn-mapping.json
  • 配置源文件:src/config/plan-templates.js

[2026-02-06] - 计划书生成模块架构与经验教训总结

文档

  • 创建完整的计划书生成模块架构文档
  • 总结所有历史问题和解决方案
  • 整理最佳实践和常见陷阱

核心要点

  • 架构模式:配置驱动 + 动态组件加载
  • 关键经验:响应式表单、字段联动、事件处理
  • 常见问题:AmountInput 报错、提取计划字段结构、模板导入路径

[2026-02-06] - 新增储蓄型保险计划书模板并修正提取计划逻辑

新增

  • 创建 SavingsTemplate.vue 组件,支持 GS/GC/FA/LV2 等储蓄型产品
  • 实现提取计划配置功能(完全符合产品需求)

修正

  • 修正提取计划的字段结构,完全符合需求文档
  • 修正提取计划的层级关系和字段联动逻辑

功能特性

  • 基础字段:性别、出生年月日、年龄、是否吸烟、年缴保费、缴费年期
  • 提取计划(完全符合小程序端需求):
    1. 第一层确认:是否希望生成一份容许减少名义金额的提取说明?(是/否)
    2. 提取选项(仅当选择"是"时显示):
      • 指定提取金额
      • 按年岁:由几岁开始、提取期(年)、每年递增提取之百分比(%)
      • 按保单年度:由几岁开始、提取期(年)
      • 最高固定提取金额
      • 按年岁:由几岁开始、提取期(年)
    3. 小程序端币种固定:使用配置中的默认币种(HKD),不需要用户选择

字段说明

  • withdrawal_enabled: 是否启用提取计划(是/否)
  • withdrawal_mode: 提取选项(指定提取金额/最高固定提取金额)
  • specified_amount_type: 指定提取金额的方式(按年岁/按保单年度)
  • withdrawal_start_age: 开始提取年龄
  • withdrawal_period: 提取年期
  • increase_rate: 每年递增提取之百分比(%)
  • annual_amount: 每年提取金额(小程序端不需要此字段)

技术实现

  • 组件路径:src/components/PlanTemplates/SavingsTemplate.vue
  • 使用 computed 动态读取提取计划配置
  • 实现多层条件渲染:根据"是否启用"→"提取选项"→"提取方式"动态显示字段
  • 使用 watch 监听字段变化,自动清理不相关数据
  • 修复 PlanFormContainer.vue 中的 SavingsTemplate 导入路径

影响范围

  • 新增文件:src/components/PlanTemplates/SavingsTemplate.vue
  • 修改文件:src/components/PlanFormContainer.vue(修复导入路径)

修正原因

  • 原实现缺少第一层确认("是否希望生成提取说明")
  • 原实现缺少"按年岁/按保单年度"的子选项
  • 原实现缺少"每年递增提取之百分比"字段
  • 原实现将"提取币种"作为独立字段,实际小程序端不需要此字段(币种固定使用配置中的默认币种)
  • 原实现字段分配错误:"按保单年度"在需求中只需要两个字段,不是四个字段

最终字段分配(小程序端)

  • 按年岁:由几岁开始、提取期(年)、每年递增提取之百分比(3个字段)
  • 按保单年度:由几岁开始、提取期(年)(2个字段)
  • 最高固定提取金额:按年岁:由几岁开始、提取期(年)(2个字段)

[2026-02-06] - 修复保额输入组件输入报错及体验问题

修复

  • 修复 AmountInput 组件在键盘输入时报错 value.replace is not a function 的问题
  • 修复快速输入时出现 [object Object] 的异常显示问题
  • 修复输入过程中格式化逻辑导致的光标跳动和无法输入小数点的问题

技术实现

  • 增强 onInput 事件处理,防御性提取小程序/Web事件对象中的 value (e.detail.valuee.target.value)
  • 将输入值显式转换为字符串 String(value) 再进行处理
  • 引入内部状态 inputValue 分离显示值与模型值
  • 优化同步逻辑:仅当外部 modelValue 发生实质性变更时才更新显示值,保留用户输入过程中的中间状态(如 "1.")
  • 添加 @blur 事件,仅在失焦时进行严格的两位小数格式化

[2026-02-06] - 修复保额输入组件样式

修复

  • 修复 AmountInput 组件标签和币种提示分两行显示的问题

技术实现

  • 使用 Flexbox (flex items-center) 强制标签和币种提示在同一行显示
  • 移除冗余的空 <span> 标签

[2026-02-06] - 美化和统一计划书模版样式

优化

  • 统一“人寿保险”和“重疾保险”模版的组件间距(mb-5),解决字段过于紧凑的问题
  • 统一错误处理逻辑,为重疾保险模版添加“模版配置未找到”的提示状态
  • 确保两个模版在视觉和交互上的一致性

技术实现

  • 更新 LifeInsuranceTemplate.vueCriticalIllnessTemplate.vue
  • 为所有表单组件添加 class="mb-5"
  • CriticalIllnessTemplate.vue 中添加 v-if="config" 判断及 v-else 错误提示

[2026-02-06] - 优化计划书表单字段顺序及联动逻辑

优化

  • 调整“人寿保险”和“重疾保险”模版中字段顺序,将“出生年月日”置于“年龄”之前
  • 优化出生日期自动计算年龄的逻辑,兼容 iOS 日期格式 (YYYY/MM/DD)
  • 确保年龄字段在自动填充后仍可手动修改

技术实现

  • 交换 LifeInsuranceTemplate.vueCriticalIllnessTemplate.vue 中的组件顺序
  • onBirthdayChange 中添加日期格式化处理 (replace(/-/g, '/'))
  • 增加非空校验和非负数校验

[2026-02-06] - 修复年龄选择器默认值同步问题

修复

  • 修复 AgePicker 组件在弹窗打开时未同步当前自动计算值的问题
  • 使用 v-model 替代 default-value 控制 Picker 选中状态
  • 添加 watch 监听 modelValue 和弹窗显示状态,确保选中值实时同步

修复

  • 修复 AgePicker 组件在点击确认时输入框显示 NaN 的问题
  • 增强 onConfirm 回调参数处理的健壮性

技术实现

  • 优先使用 selectedOptions 获取选中值,降级使用 selectedValue
  • 添加非空检查 (undefined check) 和 NaN 检查
  • 增加错误日志输出,便于排查问题

[2026-02-06] - 优化年龄选择器交互

优化

  • AgePicker 组件升级为三列选择模式(百位、十位、个位)
  • 支持 0-199 岁的年龄输入范围
  • 优化数据回显和默认值逻辑

技术实现

  • 重构 ageColumns 为三维数组:百位(0-1)、十位(0-9)、个位(0-9)
  • 解析 modelValue[百, 十, 个] 数组以适配 Picker 默认值
  • 组合三列选择结果为整数年龄

详细信息

  • 影响文件: src/components/PlanFields/AgePicker.vue
  • 技术栈: Vue 3, NutUI Picker
  • 测试状态: ✅ 已修复
  • 备注: 响应用户需求,将单列滚动改为更精确的三列选择

[2026-02-06] - 修复日期选择器交互问题

修复

  • 修复 DatePicker 组件直接展示所有日期的问题
  • 将日期选择器重构为弹窗模式 (Popup + DatePicker)
  • 修复日期数据绑定和格式化逻辑,兼容 iOS 日期格式

技术实现

  • 使用 nut-popup 包裹 nut-date-picker 实现底部弹窗
  • 添加 currentDate 中间状态,确保数据流单向且可控
  • 完善 confirmcancel 事件处理

详细信息

  • 影响文件: src/components/PlanFields/DatePicker.vue
  • 技术栈: Vue 3, Taro 4, NutUI
  • 测试状态: ✅ 已修复
  • 备注: 解决了用户反馈的出生日期选择器交互异常问题

[2026-02-06] - 修复计划书弹窗样式

修复

  • 修复计划书弹窗缺失头部和底部按钮的问题
  • 完善 PlanPopup 组件,添加标题、关闭按钮和提交按钮
  • 优化弹窗样式,适配不同设备屏幕

技术实现

  • 重构 src/components/PlanPopup/index.vue
  • 添加 Header (标题+关闭) 和 Footer (取消+提交)
  • 使用 Flex 布局确保内容区域可滚动
  • 适配底部安全区 (safe-area-inset-bottom)

详细信息

  • 影响文件: src/components/PlanPopup/index.vue
  • 技术栈: Vue 3, Taro 4, NutUI
  • 测试状态: ✅ 已修复
  • 备注: 解决了用户反馈的弹窗样式缺失问题

[2026-02-05] - 优化搜索功能体验

新增

  • 帮助中心页面实现实时搜索功能(模糊匹配问题标题)
  • 新增防抖工具函数 (src/utils/debounce.js)
  • 资料列表页面改造为实时搜索(带 500ms 防抖)

优化

  • SearchBar 组件修复 blur 事件传递参数
  • 移除资料列表页面冗余的 blur 事件监听
  • 页面空状态 UI 优化(category-list, message)

技术实现

  • help-center: 使用 v-model + computed 实现纯前端过滤
  • material-list: 使用 watch + debounce 实现防抖接口调用
  • SearchBar: blur 事件现在传递当前输入值

详细信息

  • 影响文件:
    • src/components/SearchBar.vue
    • src/utils/debounce.js (新增)
    • src/pages/help-center/index.vue
    • src/pages/material-list/index.vue
    • src/pages/category-list/index.vue
    • src/pages/knowledge-base/index.vue
    • src/pages/message/index.vue
  • 技术栈: Vue 3, Taro 4, Watch API
  • 测试状态: 已通过本地测试
  • 备注: 所有搜索功能已统一为实时搜索模式

[2026-02-05] - 修复知识库搜索栏高度变化

修复

  • 修复知识库页面搜索栏输入文字时高度会变化的问题
  • 为 SearchBar 组件添加 variant="rounded" 属性
  • 统一知识库页面与搜索页面的搜索栏高度表现
  • 修复根因:普通样式无固定高度(仅靠 padding),rounded 样式固定高度 88rpx

详细信息

  • 影响文件: src/pages/knowledge-base/index.vue
  • 技术栈: Vue 3, Taro 4, SearchBar 组件
  • 测试状态: ✅ 已通过
  • 备注:
    • SearchBar 组件有两种样式:普通样式(无固定高度)和 rounded 样式(固定 88rpx)
    • knowledge-base 页面原本未指定 variant,导致使用普通样式,高度随输入内容变化
    • search 页面使用了 variant="rounded",高度固定,不会变化
    • 统一使用 variant="rounded" 后,两页面搜索栏表现一致

[2026-02-05] - 资料列表页无限滚动和搜索优化

新增

  • 无限滚动加载 (src/pages/material-list/index.vue)
    • 实现滚动到底部自动加载更多功能
    • 使用 Taro useReachBottom hook 监听滚动事件
    • 添加 300ms 防抖延迟,避免频繁触发请求
    • 支持"加载中"和"没有更多了"状态提示
    • 自定义 CSS 加载动画(替换 NutUI loading 组件)
  • 搜索功能增强
    • 支持搜索框失焦触发搜索(@blur 事件)
    • 添加搜索清除按钮回调,重新请求最新数据
    • 清除搜索时根据当前 tab 状态智能刷新数据
  • 分页状态管理
    • 添加分页状态缓存(categoryPageCache)- 各分类独立维护页码
    • 搜索/子分类/全部 列表分别维护分页状态
    • 支持加载更多模式(isLoadMore 参数)

优化

  • 性能优化:防抖处理避免频繁 API 调用
  • 用户体验:清晰的状态提示(加载中、加载更多、没有更多)
  • 代码质量:完整的 JSDoc 注释和详细的控制台日志

修复

  • 修复 data 变量未定义导致的页面加载错误
  • 修复清除搜索后"全部"列表不更新的问题

详细信息

  • 影响文件: src/pages/material-list/index.vue
  • 技术栈: Vue 3, Taro 4, Composition API, CSS Animations
  • 测试状态: ✅ 已通过代码审查(质量评分 9.4/10)
  • 备注:
    • 无限滚动功能完全基于 Taro 原生 API,性能优秀
    • 分页缓存策略确保各分类状态独立维护
    • 搜索和清除逻辑支持多种场景(有/无 tab、选中不同 tab)

[2026-02-05] - 首页网格导航动态化

优化

  • 首页网格导航 (src/pages/index/index.vue)
    • 移除硬编码的 CATEGORY_IDS 配置和 loopNav 数组
    • 新增 fetchHomeIcons 函数,从 API 动态获取导航数据
    • 实现智能参数解析,自动提取 link 字段中的路由和查询参数
    • 支持任意数量的查询参数 (如 cid, category_id 等)
    • API 失败时自动降级到默认配置,保证可用性
  • 导航跳转逻辑优化
    • 重构 handleGridNav 函数,使用通用的参数提取逻辑
    • 自动添加 title 参数到目标页面
    • 移除硬编码的路由判断,提升可维护性

代码质量提升

  • 性能优化: 使用 shallowRef 存储导航数据,避免深度响应式
  • 错误处理: 完善的 try-catch 和降级方案
  • 代码注释: 添加完整的 JSDoc 注释
  • 可维护性: 支持后台配置,无需修改代码即可调整导航

影响

  • 灵活性: 可通过后台接口动态配置首页导航,无需发版
  • 可扩展性: 支持任意数量的查询参数
  • 稳定性: API 失败时有降级方案,不影响核心功能

[2026-02-05] - 代码重构:收藏操作逻辑抽取

重构

  • 收藏操作 Composable (src/composables/useCollectOperation.js)
    • 提取重复的收藏/取消收藏逻辑为可复用的 Composable
    • 实现乐观更新模式,UI 立即响应,API 失败时自动回滚
    • 统一错误处理和用户反馈 (Toast 提示)
    • 支持 meta_idid 两种字段格式
    • 完整的 JSDoc 注释和使用示例
    • 修复运行时模块解析问题 (使用相对路径导入)

代码质量提升

  • 首页 (src/pages/index/index.vue)
    • 移除 44 行重复的收藏操作代码
    • 使用 useCollectOperation Composable 替代
  • 资料列表页 (src/pages/material-list/index.vue)
    • 移除 45 行重复的收藏操作代码
    • 使用 useCollectOperation Composable 替代

影响

  • 代码量: 净减少 82 行代码 (91 行删除, 7 行新增, 1 个新文件)
  • 可维护性: 遵循 DRY 原则,消除代码重复
  • 可复用性: 统一的收藏逻辑可在多页面复用
  • 一致性: 所有收藏操作使用相同的错误处理和用户反馈

[2026-02-05] - 文档模块接口联调完成

新增

  • 分类列表页 (src/pages/category-list/)
    • 新增页面,支持二级分类展示
    • 集成 SectionCard 组件,实现分组卡片布局
    • 支持点击跳转到资料列表页,传递 idtitle 参数
  • 资料列表页动态 Tab 切换 (src/pages/material-list/)
    • 实现基于 API 返回的 children 数据动态生成 Tabs
    • 支持"全部" Tab 和子分类 Tab 切换
    • Tab 切换时调用 API 获取对应分类的资料列表
    • 使用 Map 缓存各分类的列表数据,提升性能
  • 资料列表页搜索功能
    • 支持关键字搜索,结合 child_idkeyword 参数
    • 搜索结果动态更新当前列表
    • 清空搜索时恢复当前分类的列表
  • 图片预览支持 (src/pages/material-list/)
    • 使用 Taro.previewImage 实现图片文件预览
    • 支持格式:jpg, jpeg, png, gif, webp, bmp, svg
    • 预览前提示用户"点击图片预览,长按可保存到相册"
  • 首页热门资料 API 集成 (src/pages/index/)
    • 接入 weekHotAPI 接口,动态获取本周热门资料
    • 显示资料标题、文件类型、学习人数和热度百分比
    • 集成收藏功能,支持收藏/取消收藏操作
    • 使用 useListItemClick Composable 统一处理文件打开
  • 收藏页 API 集成 (src/pages/favorites/)
    • 接入 listAPI 接口,获取用户收藏列表
    • 接入 delAPI 接口,支持删除收藏功能
    • 添加自定义 loading spinner 动画
    • 集成事件追踪,传递 item-id prop 到 ListItemActions

修改

  • API 接口更新 (src/api/file.js)
    • fileListAPI 新增 child_id 参数 (子分类ID)
    • fileListAPI 新增 keyword 参数 (搜索关键词)
    • 更新 JSDoc 注释,完善参数说明和返回值结构
  • API 请求包装器优化 (src/api/fn.js)
    • 修复类型检查逻辑:String(res_data.code) === '1'res_data.code === 1
    • 确保后端返回的 code 字段(数字类型)正确判断
  • 路由配置更新 (src/app.config.js)
    • 注册分类列表页路由:pages/category-list/index

优化

  • 资料列表页使用 NutUI Tabs 自定义头部,优化样式
  • 搜索与分类筛选联动,支持组合查询
  • 列表项使用入场动画,提升用户体验
  • 首页网格导航支持分类参数传递

详细信息:

  • 影响文件:
    • src/pages/category-list/ (新建)
    • src/pages/material-list/index.vue (重构)
    • src/pages/index/index.vue (API 集成)
    • src/pages/favorites/index.vue (API 集成)
    • src/api/file.js (参数更新)
    • src/api/fn.js (类型检查修复)
    • src/app.config.js (路由注册)
  • 技术栈: Vue 3, Taro 4, NutUI, Composition API
  • 测试状态: ✅ 已通过代码审查,质量评分 8.9/10
  • 备注:
    • 文档模块接口联调完成
    • 所有页面已接入真实 API
    • 事件追踪已集成到收藏和资料列表页
    • 代码质量优秀,符合项目规范

[2026-02-05] - 产品详情页图片预览支持

新增

  • 图片预览支持: 更新 useFileOperation Composable
    • 添加 isImageFile() 辅助函数,判断文件是否为图片
    • 更新 viewFile() 方法,图片文件使用 Taro.previewImage 预览
    • 支持的图片格式:jpg, jpeg, png, gif, webp, bmp, svg
  • 产品详情页图片预览: 产品详情页附件支持图片预览
    • 集成 useFileOperation Composable
    • 点击附件时自动判断文件类型并使用对应的预览方式

优化

  • 统一文件预览流程:
    • 图片文件 → Taro.previewImage(直接预览)
    • 视频文件 → 跳转视频播放页面
    • 其他文件 → 下载后使用 Taro.openDocument 打开

详细信息

  • 影响文件:
    • src/composables/useFileOperation.js
    • src/pages/product-detail/index.vue
  • 技术栈: Vue 3, Taro 4, Composition API
  • 测试状态: 待测试
  • 备注: 图片预览功能参考 material-list 页面的实现

[2026-02-05] - 埋点功能集成

新增

  • 创建通用埋点 Composable:src/composables/useEventTracking.js
    • 支持多种埋点类型(通过 EventType 枚举扩展)
    • 当前实现 READ_FILE(阅读素材)事件追踪
    • 自动处理错误,不影响用户体验
    • 开发环境提供详细日志
    • 提供便捷方法 trackFileRead()
  • 更新 ListItemActions 组件,集成自动埋点
    • 新增 itemId prop,用于关联埋点对象
    • 点击"查看"按钮时自动发送埋点数据
    • 埋点异步执行,不阻塞用户操作

优化

  • 埋点失败静默处理,不影响业务流程
  • 使用 try-catch 捕获埋点异常
  • 仅在开发环境输出日志,生产环境静默

详细信息

  • 影响文件:
    • src/composables/useEventTracking.js(新建)
    • src/components/ListItemActions/index.vue
  • 技术栈: Vue 3, Composition API
  • 测试状态: 待测试
  • 备注: API 接口已存在于 src/api/event.js

[2026-02-05] - 收藏页面联调完成

新增

  • 接入收藏列表API (listAPI),支持分页获取收藏数据
  • 实现取消收藏功能 (delAPI),支持删除单个收藏项
  • 添加自定义loading spinner,替代NutUI组件

修改

  • 移除收藏页面的分类Tabs逻辑,简化为统一列表展示
  • 优化数据结构映射:meta_id, name, src, created_time, size
  • 完善错误处理:添加try-catch和用户友好的错误提示
  • 清理未使用的导入:IconFont, useGo

修复

  • 修复收藏列表使用mock数据的问题,接入真实API
  • 修复删除功能未调用后端接口的问题

详细信息

  • 影响文件: src/pages/favorites/index.vue
  • 技术栈: Vue 3, Taro 4, Composition API
  • 测试状态: 已通过代码审查
  • 备注: API来源 docs/api-specs/favorite/

[2026-02-05] - 重构文档目录结构

文档

  • 重构 docs/ 目录结构,提升文档组织清晰度
    • 删除重复文件:DOCS_STRUCTURE.md(与 README.md 内容重复)
    • 文档归类优化:
    • auth-debug-guide.mdguides/auth-debug-guide.md(认证调试指南)
    • TARO_QUICK_REFERENCE.mdguides/TARO_QUICK_REFERENCE.md(Taro 速查表)
    • api-integration-log-template.mdapi-specs/api-integration-log-template.md(API 联调模板)
    • 更新 README.md:完善目录结构说明,添加新归类文档的导航

收益

  • 文档结构更清晰,按功能分类组织
  • 减少顶层文件数量,仅保留核心文档
  • 便于开发者快速查找所需文档

详细信息

  • 影响文件: docs/README.md, docs/guides/, docs/api-specs/
  • 技术栈: 文档组织
  • 测试状态: N/A
  • 备注: 文档整理不影响代码功能

[2026-02-05] - 修复我的页面退出登录未定义变量错误

修复

  • 修复"我的"页面退出登录功能中的未定义变量错误 (src/pages/mine/index.vue)
    • 删除未定义的 store.changeUserInfo(null) 调用
    • 修复 ESLint 错误:'store' is not defined no-undef
    • userStore.logout() 已经清除了所有用户信息(userInfo、isOpenid、isLoggedIn)
    • mainStore 在项目中未被使用,是"僵尸代码"
    • 用户信息是实时获取的(从 API 获取,不依赖本地缓存)

文档

  • 重组文档结构,创建 docs/reports/ 目录用于存放审核和分析报告
    • 按日期组织:docs/reports/YYYY-MM-DD/
    • 移动代码审核报告到 docs/reports/2026-02-05/code-review-2026-02-05.md
    • 移动逻辑分析报告到 docs/reports/2026-02-05/userinfo-storage-logic-analysis.md

详细信息

  • 影响文件: src/pages/mine/index.vue
  • 技术栈: Vue 3, Pinia
  • 测试状态: ✅ 已通过
  • 备注:
    • 经过详细分析,确认删除此代码是安全的
    • userStore.logout() 已经完整处理了用户状态清除
    • mainStore.appUserInfo 从未被任何地方读取或使用
    • 退出登录功能恢复正常

[2026-02-04] - 文档模块接口字段确认

文档

  • 更新 API 接口联调日志(docs/api-integration-log.md
    • 文档模块接口状态更新:从"初稿"更新为"待联调"
    • weekHotAPI(本周热门资料):字段已确认,更新接口文档
    • fileListAPI(文档列表):字段已确认,更新接口文档,修正接口路径
    • 更新总体进度:26个接口(12个已完成,11个待联调,3个已废弃)
  • 更新接口文档版本至 v2.4

详细信息

  • 影响文件:
    • docs/api-integration-log.md - API 联调日志更新
    • src/api/file.js - 接口文档 JSDoc 注释已更新
  • 技术栈: 文档
  • 测试状态: ✅ 文档已更新,待联调
  • 备注:
    • 文档模块的两个接口字段已确认,可以开始前端集成和联调工作
    • fileListAPI 接口路径修正为 /srv/?a=file&t=file_list

[2026-02-04] - 知识库页面新增搜索功能

新增

  • 知识库页面(src/pages/knowledge-base/index.vue
    • 添加 SearchBar 搜索组件
    • 实现实时搜索功能(带 500ms 防抖优化)
    • 支持按回车键立即搜索
    • 支持一键清空搜索内容
    • 搜索与分类筛选联动(可组合使用)

优化

  • 搜索体验优化
    • 输入时实时搜索(防抖延迟 500ms)
    • 按回车键立即搜索(取消防抖定时器)
    • 清空搜索时恢复当前分类的所有产品
    • 切换分类时保持搜索状态

技术实现

  • API 接口:使用 listAPIkeyword 参数
  • 防抖逻辑:使用 setTimeout 实现搜索防抖
  • 状态管理:新增 searchValue 搜索状态
  • 样式布局:参考 plan 页面的搜索栏布局

[2026-02-04] - 清理 Apifox 依赖并优化工具链

移除

  • Apifox API 相关脚本(不再工作)
    • 删除 scripts/apifox-to-openapi.js - 无法从 API 获取数据
    • 删除 scripts/apifox-sync.js - API 同步脚本
    • 删除 scripts/debug-apifox-response.js - 调试脚本
    • 删除 scripts/test-apifox-connection.js - 测试脚本
    • 删除 scripts/test-apifox-endpoints.js - 测试脚本
    • 删除 scripts/test-apifox-export.js - 测试脚本
    • 删除 .env.apifox 配置文件
  • package.json 命令清理
    • 移除 api:sync 命令(依赖 Apifox API)
    • 移除 api:test 命令(依赖已删除的脚本)
    • 保留 api:generate 命令(从 OpenAPI 文档生成代码)

新增

  • API 文档维护指南(scripts/API_GUIDE.md
    • 详细说明手动维护 OpenAPI 文档的工作流程
    • 提供完整的文档格式示例和最佳实践
    • 包含故障排除指南
  • 新增文档模块接口(初稿)
    • weekHotAPI - 本周热门资料
    • fileListAPI - 文档列表
    • 标记为初稿状态,后端字段未最终确定

优化

  • API 生成脚本(scripts/generateApiFromOpenAPI.js
    • 修复新增模块接口信息显示为 undefined 的问题
    • 使用 extractAPIInfo 提取完整的接口信息(方法、路径、描述)
    • 改进接口信息显示逻辑

文档

  • 更新 API 接口联调日志(docs/api-integration-log.md
    • 新增文档模块:2个初稿接口(字段未确定)
    • 更新总体进度:26个接口(12已完成,9待联调,2初稿,3已废弃)
    • 文档版本升级到 v2.3
    • 添加移除 Apifox 依赖的变更记录
    • 更新快速索引,添加文档模块链接

详细信息

  • 影响文件:
    • scripts/apifox-to-openapi.js (已删除)
    • scripts/apifox-sync.js (已删除)
    • scripts/debug-apifox-response.js (已删除)
    • scripts/test-apifox-connection.js (已删除)
    • scripts/test-apifox-endpoints.js (已删除)
    • scripts/test-apifox-export.js (已删除)
    • .env.apifox (已删除)
    • scripts/API_GUIDE.md (新增)
    • scripts/generateApiFromOpenAPI.js (修复)
    • package.json (命令清理)
    • docs/api-integration-log.md (更新)
    • docs/api-specs/file/week_hot.md (新增)
    • docs/api-specs/get_file_list/file_list.md (新增)
  • 技术栈: Node.js, fs 模块, js-yaml
  • 测试状态: ✅ 已测试通过
  • 备注:
    • 项目现在完全采用手动维护 OpenAPI 文档的方式
    • 工作流:从 Apifox 导出 → 放入 docs/api-specs/ → 运行 pnpm api:generate
    • 不再依赖 Apifox API,更加稳定可控
    • 文档模块接口标记为初稿,待后端确认字段后更新

[2026-02-04] - 优化 OpenAPI 文档生成工具

优化

  • API 文档生成脚本(scripts/generateApiFromOpenAPI.js
    • 添加 CLAUDE.md 文件过滤,避免将文档文件当作 API 文档处理
    • 改进新增模块检测逻辑,显示新增模块包含的所有接口
    • 优化变更检测报告,提升可读性
    • 在 3 处添加了 .md 文件过滤(扫描模块、对比变更、文件列表)

文档

  • 更新 API 接口联调日志(docs/api-integration-log.md
    • 收藏模块:3个接口后端已完成,标记为待联调
    • 埋点模块:1个接口后端已完成,标记为待联调
    • 更新总体进度统计:24个接口(12已完成,9待联调,3已废弃)

详细信息

  • 影响文件:
    • scripts/generateApiFromOpenAPI.js - API 文档生成脚本优化
    • docs/api-integration-log.md - API 联调日志更新
  • 技术栈: Node.js, fs 模块
  • 测试状态: ✅ 已测试通过
  • 备注:
    • 扫描目录时自动忽略 CLAUDE.md 文件
    • 新增模块时会显示该模块包含的所有接口信息(方法、路径、描述)
    • 变更检测报告更加准确和详细

[2026-02-04] - 优化视频播放用户体验

优化

  • 视频播放页面加载逻辑(src/pages/video-player/index.vue
    • 移除页面初始加载状态,不再遮挡视频播放器
    • 移除加载状态遮罩层,使用视频播放器自带的加载指示器
    • 简化加载逻辑,提升用户体验
  • 测试视频 URL 更新(src/pages/index/index.vue
    • 更新为 CDN 视频地址 https://cdn.ipadbiz.cn/mlaj/video/welcome-bg.mp4
  • 页面布局优化(src/pages/video-player/index.vue
    • 修复页面高度问题,使用 flex 布局自动填充剩余空间
    • 移除 overflow: hidden 防止页面滚动

详细信息

  • 影响文件:
    • src/pages/video-player/index.vue - 优化加载逻辑和页面布局
    • src/pages/index/index.vue - 更新测试视频 URL
  • 技术栈: Vue 3, Taro 4, 微信小程序
  • 测试状态: ✅ 已测试通过
  • 备注:
    • 视频播放器组件自带完整的加载和控制功能
    • 页面高度固定为 100vh,不会出现滚动条
    • 错误提示功能保留,仅在真正出错时显示

[2026-02-04] - 修复视频播放超时处理

修复

  • 视频播放页面加载超时机制(src/pages/video-player/index.vue
    • 修复定时器未正确清理的问题
    • onCanPlayonPlayonError 事件中清理定时器
    • useDidHide 生命周期中添加定时器清理
    • 完善视频加载失败后的错误提示
  • 测试视频 URL 替换(src/pages/index/index.vue
    • 替换无法访问的测试视频 URL
    • 使用微信小程序官方示例视频作为临时测试资源
    • 添加 TODO 注释提醒替换为实际 CDN 地址

详细信息

  • 影响文件:
    • src/pages/video-player/index.vue - 修复超时处理逻辑
    • src/pages/index/index.vue - 更新测试视频 URL
  • 技术栈: Vue 3, Taro 4, 微信小程序
  • 测试状态: ✅ 已修复,待测试
  • 备注:
    • 视频加载超时 10 秒后自动显示错误提示
    • 页面隐藏时自动清理定时器,避免内存泄漏
    • 视频播放成功或失败都会清理定时器

[2026-02-04] - 新增视频播放功能

新增

  • 视频文件类型判断(src/utils/tools.js
    • 添加 isVideoFile() 函数,识别 MP4、M4V、MOV 等视频格式
    • 支持微信小程序兼容的视频格式
  • 视频播放页面(src/pages/video-player/index.vue
    • 使用 Taro 原生 <Video> 组件实现视频播放
    • 支持全屏播放、进度条、音量控制等完整功能
    • 自定义加载状态和错误提示界面
    • 页面隐藏时自动暂停视频播放
  • 文件操作视频支持(src/composables/useFileOperation.js
    • 点击查看视频文件时自动跳转到视频播放页面
    • 其他文件类型保持原有下载预览逻辑

优化

  • 首页热门资料 mock 数据(src/pages/index/index.vue
    • 添加测试视频资料(第1期培训视频)
    • 使用公开的测试视频 URL 供开发测试

详细信息

  • 影响文件:
    • src/utils/tools.js - 新增 isVideoFile() 函数
    • src/composables/useFileOperation.js - 添加视频文件判断逻辑
    • src/pages/video-player/index.vue - 新建视频播放页面
    • src/pages/video-player/index.config.js - 新建页面配置
    • src/app.config.js - 注册视频播放页面路由
    • src/pages/index/index.vue - 添加视频资料 mock 数据
  • 技术栈: Vue 3, Taro 4, 微信小程序 Video 组件
  • 测试状态: ✅ 开发完成,待测试
  • 备注:
    • ⚠️ NutUI 没有 nut-loading 组件,已改用原生样式
    • 微信小程序支持的视频格式:MP4、M4V、MOV
    • 视频文件图标和标签已由 documentIcons.js 支持

[2026-02-04] - 模块名称优化

优化

  • 将"工具箱"模块更名为"客户服务"
  • 更新首页网格导航中的显示名称
  • 同步更新设计文档中的相关引用

详细信息

  • 影响文件:
    • src/pages/index/index.vue
    • docs/design/manulife-V1/done/首页/code/index.vue
  • 技术栈: Vue 3
  • 测试状态: ✅ 已验证
  • 备注: 仅修改显示名称,未涉及功能变更

[2026-02-03] - 新增 TabBar 红点提醒功能(预开发)

新增

  • TabBar 红点提醒功能(src/components/TabBar.vue
    • 在"我的"按钮右上角显示红点,提示用户有未读消息
    • 红点状态由用户信息接口返回的 unread_count 字段决定
    • 支持通过配置文件全局开关功能
  • 功能开关配置系统(src/config/features.js
    • 集中管理功能的启用/禁用状态
    • 支持灰度发布和功能回滚
    • 可配置红点字段名称和显示阈值
  • User Store 红点状态自动计算(src/stores/user.js
    • 新增 tabBarBadges 计算属性,自动根据用户信息计算红点状态
    • 支持数字和布尔类型字段
    • 响应式更新,无需手动管理
  • 首页用户信息自动刷新(src/pages/index/index.vue
    • 页面显示时自动刷新用户信息,更新红点状态
    • 只在已登录状态下请求,避免无效调用
    • 添加错误处理,提升健壮性

优化

  • TabBar 组件自动从 Store 读取红点状态
    • 移除手动传递的 badges prop
    • 组件内部自动管理红点显示逻辑
    • 简化使用方式,降低维护成本

详细信息

  • 影响文件:
    • src/config/features.js (新建)
    • src/components/TabBar.vue
    • src/stores/user.js
    • src/pages/index/index.vue
  • 技术栈: Vue 3, Pinia, Composition API, Computed
  • 测试状态: ⚠️ 预开发阶段(功能开关默认关闭)
  • 备注:
    • 功能默认关闭,等后端接口字段确定后再开启
    • 当前使用 unread_count 字段,后续可能调整
    • 红点显示阈值默认为 1(即有未读消息时显示)
    • 完整使用文档:docs/features/tabbar-badge.md

[2026-02-03] - 优化搜索页清空逻辑和引导文案

优化

  • 优化搜索页面的清空逻辑,清空时重置到初始状态(src/pages/search/index.vue
    • 点击清空按钮后,hasSearched 状态重置为 false
    • 不再显示"暂无搜索结果",而是回到初始状态引导用户
    • 实时搜索监听器优化:清空关键词时也重置到初始状态
  • 添加分类相关的动态引导文案,提升用户体验
    • 全部分类:显示"搜索培训资料、案例、产品"+"输入关键词开始搜索"
    • 产品分类:显示"搜索保险产品"+"输入产品名称或类型,如'重疾险'"
    • 资料分类:显示"搜索培训资料"+"输入资料关键词,如'销售话术'"

详细信息

  • 影响文件: src/pages/search/index.vue
  • 技术栈: Vue 3, Composition API, Computed
  • 测试状态: ✅ 已完成
  • 备注:
    • 清空逻辑更符合用户预期,不会显示令人困惑的"暂无搜索结果"
    • 分类相关的引导文案帮助用户明确可以搜索什么内容
    • 使用 computed 属性 initialStateText 根据当前分类动态返回文案

[2026-02-03] - 优化列表空状态显示

优化

  • 统一使用 nut-empty 组件替换自定义的空状态展示,提升 UI 一致性
    • 搜索页 (src/pages/search/index.vue):搜索无结果时显示
    • 知识库页 (src/pages/knowledge-base/index.vue):产品列表为空时显示
    • 资料列表页 (src/pages/material-list/index.vue):资料列表为空时显示
    • 计划书页 (src/pages/plan/index.vue):计划书列表为空时显示
    • 收藏页 (src/pages/favorites/index.vue):收藏列表为空时显示
    • 意见反馈页 (src/pages/feedback-list/index.vue):反馈记录为空时显示
  • 为空状态添加合适的描述文字,如"暂无搜索结果"、"暂无相关产品"等

详细信息

  • 影响文件:
    • src/pages/search/index.vue
    • src/pages/knowledge-base/index.vue
    • src/pages/material-list/index.vue
    • src/pages/plan/index.vue
    • src/pages/favorites/index.vue
    • src/pages/feedback-list/index.vue
  • 技术栈: Vue 3, NutUI
  • 测试状态: ✅ 已完成 (代码逻辑验证)

[2026-02-03] - 更新项目文档结构

文档

  • 更新 CLAUDE.md 与项目实际结构保持一致
    • 新增接口联调日志和变更日志的文档索引
    • 更正身份认证流程说明(使用 openid.js 替代不存在的 authRedirect.js
    • 删除不存在的 auth/index 页面引用
    • 新增 3 个页面文档:plan-submit-result、feedback-list、test-tabs
    • 新增 11 个组件文档:DocumentPreview、PdfPreview、OfficeViewer、SectionCard、SectionItem、ListItemActions、FilterTabs、SearchBar、indexNav、PlanSchemes、PlanPopup
    • 新增 3 个工具函数文档:documentIcons.js、tools.js、openid.js
    • 更新关键文件总结和会话管理说明

详细信息

  • 影响文件: CLAUDE.md
  • 技术栈: 文档
  • 测试状态: N/A
  • 备注: 提升文档准确性和开发效率

[2026-02-03] - 新增消息模块

新增

  • 消息列表页 (src/pages/message/index.vue)
    • 支持分页加载、下拉刷新、上拉加载更多
    • 使用 NutUI 空状态组件处理无数据场景
  • 消息详情页 (src/pages/message-detail/index.vue)
    • 支持富文本内容展示
    • 处理图片自适应宽度
  • "我的"页面入口
    • 在个人中心菜单列表中添加"我的消息"入口

配置

  • 更新 src/app.config.js 注册新页面路由

详细信息

  • 影响文件: src/pages/message/*, src/pages/message-detail/*, src/app.config.js, src/pages/mine/index.vue
  • 技术栈: Vue 3, Taro 4, TailwindCSS, NutUI
  • 测试状态: ✅ 已完成

[2026-02-03] - 优化产品详情页附件模块

新增

  • 产品详情页附件模块添加使用说明
    • 在"相关附件"标题下方添加灰色提示文字
    • 提示用户"如无法下载,可在预览页点击右上角「...」转发至其他设备"
    • 优化附件下载的用户体验
  • 附件列表添加文件类型显示
    • 在文件大小前面显示文件类型(如:PDF · 2.5MB)
    • 使用 getDocumentLabel 工具函数自动识别文件类型
    • 支持常见文件格式:PDF、Word、Excel、PPT、图片、视频等

详细信息

  • 影响文件: src/pages/product-detail/index.vue
  • 技术栈: Vue 3, Taro 4, TailwindCSS
  • 测试状态: ✅ 已完成

[2026-02-03] - 修复头像页面圆形背景变形

修复

  • 修复头像页面相机图标背景变形问题
    • 将相机图标的背景容器从 p-[16rpx] 改为固定宽高 w-[96rpx] h-[96rpx]
    • 添加 flex items-center justify-center 确保图标在圆形中完美居中
    • 配合 rounded-full 确保背景始终保持正圆形,不受图标组件尺寸影响

详细信息

  • 影响文件: src/pages/avatar/index.vue
  • 技术栈: Vue 3, Taro 4, TailwindCSS
  • 测试状态: ✅ 已修复

[2026-02-03] - 修复知识库页面样式问题

修复

  • 修复知识库页面底部提示文字未水平居中的问题
    • scroll-view 上的 px-[40rpx] 内边距移至内部的产品列表容器
    • 确保"加载中"、"加载更多"、"没有更多了"、"暂无相关产品"等全宽状态提示条能够相对于屏幕水平居中
    • 保持产品列表网格的视觉布局不变

详细信息

  • 影响文件: src/pages/knowledge-base/index.vue
  • 技术栈: Vue 3, Taro 4, TailwindCSS
  • 测试状态: ✅ 已修复

[2026-02-03] - 知识库页面产品列表接口集成

新增

  • 知识库页面集成产品列表 API (listAPI)
    • 从 API 动态获取分类列表,生成自定义标签栏
    • 实现分类筛选功能,点击分类传递 cid 参数
    • 每次切换分类重置分页状态(page=0, 清空列表)
    • 实现滚动加载功能,使用 scroll-view 组件
    • 严格遵循接口文档字段映射(product_name、cover_image、recommend、tags 等)

修复

  • 修复空状态文字水平居中问题
    • <text> 元素添加 w-full text-center
    • 确保 Taro 小程序环境下正确居中显示

文档

  • 更新 API 集成日志 docs/api-integration-log.md
    • 添加产品模块记录(产品列表接口)
    • 更新进度统计:19 个接口(15 个已完成,4 个后端开发中)

详细信息

  • 影响文件:
    • src/pages/knowledge-base/index.vue(API 集成 + 滚动加载)
    • docs/api-integration-log.md(API 集成日志更新)
  • 技术栈: Vue 3, Taro 4, Composition API, NutUI
  • 测试状态: ⏳ 待联调
  • 备注:
    • 数据结构严格遵循 API 规范
    • 支持分页加载:page(从 0 开始)、limit(默认 10)
    • 分类筛选:传递 cid 参数
    • 空状态显示:暂无相关产品

[2026-02-03] - 修复用户头像接口集成

修复

  • 修复获取个人信息接口字段访问错误
    • mine/index.vue: 头像显示从 userInfo.avatar_url 改为 userInfo.avatar.src
    • API 返回 avatar 对象(包含 name, hash, src, height, width, size)
    • 之前错误访问不存在的 avatar_url 字段导致头像无法显示
  • 修复更新个人资料接口参数结构错误
    • avatar/index.vue: 传递完整 avatar 对象而非 avatar_meta_id
    • API 规范要求 { avatar: { name, hash, src, height, width, size } }
    • 之前只传 { avatar_meta_id: xxx } 不符合接口规范
  • 修复头像上传接口数据映射错误
    • 根据实际上传接口返回结构正确映射字段
    • name: 从 data.data.file.name 获取
    • hash: 从 data.data.res.hash 获取
    • src: 从 data.data.src 获取
    • height/width: 从 data.data.height/width 获取
    • size: 从 data.data.file.size 获取

新增

  • 头像设置页面加载时获取用户当前头像
    • 进入页面时调用 getProfileAPI() 获取用户信息
    • 如果用户已有头像则显示当前头像,否则显示默认头像
    • 提升用户体验,避免每次看到默认头像

文档

  • 更新 src/api/user.jsupdateProfileAPI 的 JSDoc 注释
    • 明确参数结构:avatar 对象包含完整字段
    • 添加所有字段的类型和说明

详细信息

  • 影响文件:
    • src/pages/mine/index.vue(头像显示字段修复)
    • src/pages/avatar/index.vue(接口参数修复 + 获取当前头像)
    • src/api/user.js(API 注释更新)
  • 技术栈: Vue 3, Taro 4, Composition API
  • 测试状态: ✅ 已通过
  • 备注:
    • 上传接口返回示例: json { "code": 0, "data": { "src": "https://cdn...", "file": { "name": "...", "size": 3806359 }, "res": { "hash": "...", "image_info": { "width": 1766, "height": 1770 } }, "width": 1766, "height": 1770 } }
    • 更新头像接口请求格式: javascript updateProfileAPI({ avatar: { name: "文件名", hash: "文件hash", src: "https://cdn...", height: "1770", width: "1766", size: 3806359 } })

[2026-02-03] - 产品模块接口集成完成

新增

  • 首页热卖产品模块集成产品列表 API
    • 使用 listAPI 接口,参数 recommend=hot 获取热卖产品
    • 移除硬编码产品数据,改用 API 动态返回的产品列表
    • 实现动态标签样式,根据 API 返回的 bg_colortext_color 字段设置标签背景色和文字颜色
    • 影响文件:src/pages/index/index.vue

修改

  • 产品详情页集成详情 API
    • 使用 detailAPI 接口获取产品详情数据
    • "产品特色" 改为 "产品描述",使用 <rich-text> 组件渲染富文本内容(product_description 字段)
    • 附件大小直接使用 file_size_formatted 字段显示格式化后的文件大小
    • 移除收藏功能(产品模块无此功能)
    • 移除 nut-loading 组件(Taro 不支持),改用纯 CSS 实现的加载动画
    • 影响文件:src/pages/product-detail/index.vue

修复

  • 修复首页热卖产品模块重复调用 API 的问题
  • 修复产品详情页 nut-loading 组件不兼容问题,使用 CSS animate-spin 实现加载动画

文档

  • 更新 API 集成日志 docs/api-integration-log.md
    • 添加产品模块记录,包含产品列表和产品详情 2 个接口
    • 更新进度统计:16 个接口(11 个已完成,3 个已废弃,2 个开发中)
    • 更新模块快速索引,添加产品模块
  • 更新 API 规范文档状态
    • docs/api-specs/get_product/list.md 状态改为 done
    • docs/api-specs/get_product/detail.md 状态改为 done

详细信息

  • 影响文件:
    • src/pages/index/index.vue(热卖产品模块 API 集成)
    • src/pages/product-detail/index.vue(产品详情 API 集成)
    • docs/api-integration-log.md(API 集成日志更新)
    • docs/api-specs/get_product/list.md(状态更新)
    • docs/api-specs/get_product/detail.md(状态更新)
  • 技术栈: Vue 3, Taro 4, Composition API
  • 测试状态: ✅ 已通过
  • 备注:
    • 热卖产品接口参数:recommend=hot,无需传 limit、page、cid 参数
    • 产品标签支持自定义背景色和文字颜色
    • 富文本使用 Taro 的 <rich-text> 组件渲染

[2026-02-03] - 修复反馈列表无法滚动

修复

  • 修复反馈列表页滚动失效的问题
    • scroll-view 改用 flex: 1 撑满剩余空间,避免 100% 高度在小程序端计算异常
    • 增加 flex 布局的 min-height: 0,确保可滚动区域正确收缩并启用内部滚动
    • 增加列表内容底部内边距,避免被底部固定按钮遮挡
    • 影响文件:src/pages/feedback-list/index.vue

详细信息

  • 影响文件: src/pages/feedback-list/index.vue
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: ✅ 已通过

[2026-02-03] - 优化反馈列表视觉设计

样式

  • 优化反馈列表页面(Feedback List)的视觉设计
    • 调整反馈类型(Type)标签样式,改为圆角矩形(rounded-[8rpx]),减小字号并加粗,使其更像分类标签
    • 重构状态(Status)显示样式,采用"圆点+文字"的设计模式,区分于类型标签,提升视觉层级区分度
    • 影响文件:src/pages/feedback-list/index.vue

详细信息

  • 影响文件: src/pages/feedback-list/index.vue
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: ✅ 已通过
  • 备注:
    • 增强了列表项中关键信息的辨识度
    • 解决了类型和状态样式过于雷同的问题

[2026-02-03] - 意见反馈模块完成

新增

  • 实现意见反馈列表功能
    • 支持分页加载反馈记录
    • 显示反馈类型、状态、内容、图片
    • 支持图片预览功能
    • 从提交页返回时自动刷新列表
  • 实现意见反馈提交功能
    • 支持选择反馈类型(功能建议/问题反馈/其他)
    • 支持上传最多 3 张图片(5MB 限制)
    • 图片审核不通过时提示用户
    • 提交成功后返回列表页

修复

  • 修复 useShow 导入错误,改用 useDidShow 生命周期钩子
  • 修复 onMounted 导入错误,从 Vue 导入而非 Taro
  • 修复图片显示错误,images 字段改为数组格式处理
  • 移除 NutUI Loading 组件,使用自定义 CSS spinner

优化

  • 调整导航流程:我的 → 反馈列表 → 提交反馈
  • 添加页面下拉刷新支持
  • 使用 useDidShow 实现列表自动刷新

文档

  • 更新 API 文档 docs/api-specs/feedback/add.md
    • 修正接口名称为 addAPI
    • 更新 images 参数为数组格式
    • 添加完整的代码示例

详细信息

  • 影响文件:
    • src/pages/feedback-list/index.vue(新增)
    • src/pages/feedback-list/index.config.js(新增)
    • src/pages/feedback/index.vue(更新)
    • src/api/feedback.js(更新)
    • src/app.config.js(注册路由)
    • src/pages/mine/index.vue(导航入口)
    • docs/api-specs/feedback/add.md(文档更新)
  • 技术栈: Vue 3, Taro 4, NutUI, Composition API
  • 测试状态: ✅ 已通过
  • 备注:
    • 反馈类别:1=功能建议, 3=问题反馈, 7=其他问题
    • 图片上传使用 Taro.uploadFile,支持图片审核
    • 列表使用 useDidShow 实现返回时自动刷新

📋 变更记录模板

每次添加新记录时,请使用以下标准格式:

## [YYYY-MM-DD] - 简短描述(2-8个字)

### 类型(新增/修复/优化/重构/文档/配置)
- 具体变更内容 1
  - 详细说明
  - 影响文件:path/to/file
- 具体变更内容 2

---

**详细信息**- **影响文件**: file1.vue, file2.js
- **技术栈**: Vue 3, Taro, NutUI
- **测试状态**: ✅ 已通过 / ⏳ 未测试 / ❌ 已跳过
- **备注**:
  - 重要说明 1
  - 重要说明 2

类型说明

  • 新增 - 新功能
  • 修复 - Bug 修复
  • 优化 - 性能或代码优化
  • 重构 - 代码重构
  • 文档 - 文档更新
  • 配置 - 配置更改
  • 样式 - UI/样式更改

📊 快速统计

  • 总变更数: 59+
  • 新增功能: 26+
  • 优化改进: 28+
  • 问题修复: 13+
  • 文档更新: 13+

[2026-02-03] - 修复头像上传功能

修复

  • 修复 src/api/common.jsTaro is not defined 错误
    • 添加 import Taro from '@tarojs/taro' 导入语句
    • 影响:src/api/common.js
  • 简化头像上传流程,改用 Taro.uploadFile 直接上传到服务器
    • 移除七牛云上传流程,改用直接上传
    • 添加图片审核支持(image_audit=1)
    • 修复头像显示样式(object-fit: cover)
    • 影响:src/pages/avatar/index.vue

详细信息

  • 影响文件: src/api/common.js, src/pages/avatar/index.vue
  • 技术栈: Taro 4.x, Vue 3
  • 测试状态: ✅ 已通过
  • 备注:
    • 上传流程:选择图片 → Taro.uploadFile 直接上传到服务器 → 保存头像 URL
    • 支持图片大小限制(5MB)
    • 支持图片审核,审核不通过时提示用户

[2026-02-03] - 新增头像修改页面接口记录

文档

  • 更新接口联调工作记录文档 (docs/api-integration-log.md)
  • 新增通用模块接口记录(3个):
    • 获取七牛上传 Token (qiniuTokenAPI) - ⏳ 后端开发中
    • 保存文件信息 (saveFileAPI) - ⏳ 后端开发中
    • 上传图片到七牛云 (uploadImageToQiniuAPI) - ⏳ 后端开发中
  • 更新总体进度:14个接口(5个已完成,9个后端开发中)

详细信息

  • 影响文件: docs/api-integration-log.md, src/pages/avatar/index.vue, src/api/common.js
  • 技术栈: Vue 3, Taro, 七牛云
  • 测试状态: ⏳ 后端开发中
  • 备注:
    • 头像修改页面已实现前端逻辑
    • 图片上传流程:选择图片 → 七牛云上传 → 保存到服务器
    • 等待后端接口开发完成后联调

[2026-02-03] - 登录接口联调完成

文档

  • 更新接口联调工作记录文档 (docs/api-integration-log.md)
  • 登录接口联调完成,状态更新为 ✅ 已完成
  • 更新总体进度:10个接口(5个已完成,5个后端开发中)

详细信息

  • 影响文件: docs/api-integration-log.md
  • 技术栈: 文档
  • 测试状态: ✅ 已通过
  • 备注:
    • 登录接口(邮箱账号密码)联调完成
    • 接口正常工作,前端集成完成

[2026-02-03] - 新增接口联调记录(登录及反馈消息模块)

文档

  • 更新接口联调工作记录文档 (docs/api-integration-log.md)
  • 新增 6 个接口记录:
    • 登录(邮箱账号密码)- 🔄 联调中
    • 更新个人资料 - ⏳ 后端开发中
    • 意见反馈列表 - ⏳ 后端开发中
    • 提交意见反馈 - ⏳ 后端开发中
    • 我的消息列表 - ⏳ 后端开发中
    • 消息详情 - ⏳ 后端开发中
  • 更新总体进度:10个接口(4个已完成,1个联调中,5个后端开发中)

详细信息

  • 影响文件: docs/api-integration-log.md
  • 技术栈: 文档
  • 测试状态: 部分完成
  • 备注:
    • 登录接口前端已实现,待联调
    • 其他 5 个接口后端开发中

[2026-02-03] - 记录用户中心模块接口联调

文档

  • 更新接口联调工作记录文档 (docs/api-integration-log.md)
  • 记录 4 个已完成的用户中心接口:
    • 小程序授权 (miniProgramAuthAPI)
    • 查询登录状态 (loginStatusAPI)
    • 获取个人信息 (getProfileAPI)
    • 退出登录 (logoutAPI)
  • 更新总体进度统计:4/4 已完成 (100%)

详细信息

  • 影响文件: docs/api-integration-log.md
  • 技术栈: 文档
  • 测试状态: ✅ 已通过(所有接口均已联调完成)
  • 备注:
    • 所有接口调用位置已记录
    • 接口实现逻辑已说明
    • 无阻塞问题

[2026-02-03] - 新增接口联调工作记录文档

文档

  • 创建接口联调工作记录文档 (docs/api-integration-log.md)
  • 记录接口文档更新情况和页面实际调试情况
  • 提供接口联调模板 (docs/api-integration-log-template.md)
  • 包含总体进度、接口明细、问题汇总、进度追踪等模块

详细信息

  • 影响文件: docs/api-integration-log.md, docs/api-integration-log-template.md
  • 技术栈: 文档
  • 测试状态: N/A
  • 备注:
    • 记录接口文档更新(版本、变更内容、变更原因)
    • 记录页面调试情况(问题、解决方案、状态)
    • 支持按状态、模块、负责人快速索引
    • 便于前后端对接会议使用

[2026-02-02] - 鉴权重构 - SessionId 动态获取规范

文档

  • 更新鉴权架构文档,明确 sessionid 动态获取规范
  • 每次请求前从 localStorage.sessionid 读取,设置到请求头的 cookie 字段
  • 确保所有请求都带上最新的 sessionid
  • 影响文件:docs/specs/2026-02-02-auth-refactoring.md

重构

  • 分离微信授权(openid)和用户登录两个独立概念
  • 移除接口白名单机制,所有接口直接发送
  • 简化 401 处理,统一跳转登录页
  • 新增 src/utils/openid.js - 微信授权管理
  • 新增 src/stores/user.js - 用户状态管理(Pinia)
  • 删除旧的 src/utils/authRedirect.js 授权逻辑
  • 影响文件:src/app.js, src/utils/request.js, src/pages/login/index.vue, src/pages/mine/index.vue

详细信息

  • 影响文件: docs/specs/2026-02-02-auth-refactoring.md, src/utils/request.js
  • 技术栈: Taro, Pinia, Axios
  • 测试状态: ⏳ 待测试
  • 备注:
    • 重要设定:sessionid 必须动态获取并设置到请求头
    • 实现位置:src/utils/request.js 请求拦截器(第157-166行)
    • 存储:localStorage.sessionid
    • 请求头:config.headers.cookie = sessionid

[2026-02-02] - 修复 NavHeader 警告

修复

  • 修复 NavHeader 组件 extraneous non-props attributes 警告
    • 添加 showBack prop 定义
    • 优化返回按钮显示逻辑,优先使用 prop 值
    • 影响文件:src/components/NavHeader.vue

详细信息

  • 影响文件: src/components/NavHeader.vue
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过 (代码逻辑验证)
  • 备注:
    • 解决了在 Login 页面调用 NavHeader 时控制台报出的 Vue 警告

[2026-02-02] - 修复 Apifox 响应解析

修复

  • 修复 Apifox 空响应导致 JSON 解析失败的问题
    • 空响应时按空数据处理并返回可识别状态
    • 接口列表解析增加空响应提示
    • 影响文件:scripts/test-apifox-connection.js, scripts/apifox-sync.js, scripts/apifox-to-openapi.js

详细信息

  • 影响文件: scripts/test-apifox-connection.js, scripts/apifox-sync.js, scripts/apifox-to-openapi.js
  • 技术栈: Node.js
  • 测试状态: ✅ 已通过(pnpm api:test, pnpm lint;lint 有现存警告)
  • 备注:
    • 接口列表为空时不会中断连接测试

[2026-02-02] - 修复 Apifox Token 验证

修复

  • 修复 Apifox Token 格式验证错误(大小写问题)
    • 原代码要求小写 aps- 前缀,但 Apifox Token 实际是大写 APS-
    • 改为不区分大小写验证:token.toUpperCase().startsWith('APS-')
    • 更新错误提示信息,显示正确的大写格式
    • 影响文件:scripts/test-apifox-connection.js

详细信息

  • 影响文件: scripts/test-apifox-connection.js
  • 技术栈: Node.js
  • 测试状态: ⏳ 待用户验证
  • 备注:
    • Apifox API Token 的正确格式是 APS-xxxxxxxx
    • 修复后运行 pnpm api:test 应该能正常验证 Token

🗓️ 变更历史

[2026-02-01] - 配置腾讯元宝AI小程序跳转

新增

  • 配置腾讯元宝 AI 小程序跳转功能
    • 实现参数传递方式
    • 集成到首页 AI 答疑按钮

详细信息

  • 影响文件: src/pages/index/index.vue, src/app.config.js
  • 技术栈: Taro, 微信小程序跳转
  • 测试状态: ✅ 已通过
  • 备注:
    • 用户点击 AI 答疑按钮跳转到腾讯元宝小程序
    • 传递必要参数以实现智能问答功能

[2026-01-31] - 搜索功能重构与优化

新增

  • 新增 SearchBar 组件并替换多个页面中的搜索框
    • 支持防抖输入优化
    • 统一搜索样式和交互

重构

  • 重构 SearchBar 组件
    • 替换 NutUI Input 为原生 input 元素
    • 修复清空关键词后显示错误状态的问题

修复

  • 修复搜索组件样式和搜索逻辑问题
  • 修复清空关键词后显示错误状态的问题
  • 修复搜索栏背景色和弹窗嵌套导致的层级问题

详细信息

  • 影响文件: src/components/SearchBar.vue, src/pages/search/index.vue
  • 技术栈: Vue 3, Taro, 原生 input
  • 测试状态: ✅ 已通过
  • 备注:
    • 原生 input 提供更好的样式控制
    • 弹窗层级问题通过调整 z-index 解决

[2026-01-31] - 修复收藏页面显示问题

修复

  • 修复收藏页面日期显示位置
  • 调整收藏列表项布局

详细信息

  • 影响文件: src/pages/favorites/index.vue
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过
  • 备注:
    • 日期从分类上方移到下方
    • 优化列表项视觉层次

[2026-01-31] - 计划书功能扩展

新增

  • 实现计划书文档查看功能
  • 实现分类资料列表跳转功能
  • 资料列表页支持动态标题

详细信息

  • 影响文件: src/pages/plan/index.vue, src/components/PlanSchemes/*
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过

[2026-01-31] - 修复示例文档URL

修复

  • 更新多个页面中的示例文档 URL 为正确文件
  • 更新演示和测试文档的 URL

详细信息

  • 影响文件: 多个页面
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过
  • 备注:
    • 修复了文档链接失效问题
    • 确保用户可以正常打开示例文档

[2026-01-30] - TabBar 组件优化与 AI 答疑功能

新增

  • AI 答疑按钮改为跳转到腾讯元宝小程序

重构

  • 格式化 TabBar 模板代码并调整注释结构

修复

  • 修复导航头组件返回图标名称错误
  • 修改所有页面数据中的图标名称为小写

详细信息

  • 影响文件: src/components/TabBar.vue, src/components/NavHeader.vue, 多个页面
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过

[2026-01-30] - IconFont 组件重构与修复

修复

  • 修复动态切换图标名称时图标不更新的问题
    • 在 IconFont 组件中添加 :key="name" 强制重新渲染
  • 修改 IconFont 组件 name 属性为小写

重构

  • 统一使用自定义 IconFont 组件
  • 全量替换项目内 IconFont 调用为 @nutui/icons-vue-taro 的 IconFont 组件

详细信息

  • 影响文件: src/components/IconFont.vue, 多个页面
  • 技术栈: Vue 3, NutUI
  • 测试状态: ✅ 已通过
  • 备注:
    • 添加 :key="name" 是解决动态切换不响应的关键
    • 统一使用小写图标名称,符合 NutUI 规范

[2026-01-30] - 新增帮助中心和产品详情页

新增

  • 新增帮助中心页面
    • 优化页面交互与样式
    • 更新导航链接
  • 新增产品详情页面
    • 添加收藏功能
    • 添加附件下载功能

优化

  • 优化首页产品跳转逻辑
  • 优化资料和收藏页面的文件打开交互

详细信息

  • 影响文件: src/pages/help-center/, src/pages/product-detail/, src/pages/index/index.vue
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: ✅ 已通过

[2026-01-30] - 重构登录页面

重构

  • 重构登录页面,改为邮箱登录并美化 UI

详细信息

  • 影响文件: src/pages/login/index.vue
  • 技术栈: Vue 3, TailwindCSS
  • 测试状态: ✅ 已通过
  • 备注:
    • 从手机号登录改为邮箱登录
    • 提升视觉设计

[2026-01-30] - 新增文档预览组件

新增

  • 新增文档预览组件及相关页面
    • 支持 PDF、Office 文档预览
    • 集成到多个页面

修复

  • 优化标签页切换时组件重复渲染问题

详细信息

  • 影响文件: src/components/DocumentPreview.vue, 多个页面
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过

[2026-01-30] - 集成 Apifox API 管理系统

新增

  • 集成 Apifox API 管理系统并添加自动化同步工具
  • 添加 Apifox Skill 连接测试脚本

详细信息

  • 影响文件: scripts/, .claude/rules/
  • 技术栈: Apifox API
  • 测试状态: ✅ 已通过
  • 备注:
    • 实现 API 文档自动同步
    • 提升 API 开发效率

[2026-01-30] - 添加退出登录功能

新增

  • 我的页面添加退出登录功能
  • 美化按钮样式

详细信息

  • 影响文件: src/pages/mine/index.vue
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过

[2026-01-29] - 新增搜索页面

新增

  • 新增搜索页面
    • 完善首页搜索功能
    • 添加热门搜索标签

优化

  • 移除搜索页热门搜索和底部导航
  • 调整首页间距

详细信息

  • 影响文件: src/pages/search/index.vue, src/pages/index/index.vue
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过

[2026-01-29] - 新增我的模块相关页面

新增

  • 新增资料列表页面并优化图标组件
  • 新增文档预览组件及相关页面
  • 新增资料知识库页面
  • 新增家办相关页面
  • 新增签单相关页面
  • 新增入职相关页面

优化

  • 完善首页导航功能
  • 优化导航组件

详细信息

  • 影响文件: 多个新页面
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: ✅ 已通过

[2026-01-29] - 新增可复用组件

新增

  • 新增可复用底部导航栏组件并重构页面使用
  • 新增可复用的 SectionCard 和 SectionItem 组件
  • 新增网页视图页面并集成到首页

详细信息

  • 影响文件: src/components/TabBar.vue, src/components/SectionCard.vue, src/components/SectionItem.vue, src/pages/webview/index.vue
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过

[2026-01-27] - 新增 OpenAPI 转 API 文档生成器

新增

  • 新增 OpenAPI 转 API 文档生成器及相关文档
  • 支持区分 GET 和 POST 请求的参数处理
  • 新增 API 变更自动检测功能

详细信息

  • 影响文件: scripts/api-generator/, docs/
  • 技术栈: Node.js, OpenAPI
  • 测试状态: ✅ 已通过
  • 备注:
    • 自动生成 API 接口代码
    • 提升 API 开发效率

[2026-01-27] - 添加项目开发文档

文档

  • 添加 CLAUDE.md 项目开发指南文档
  • 添加项目开发计划文档
  • 添加前端开发计划文档
  • 重构文档目录结构并重新组织文档内容

详细信息

  • 影响文件: CLAUDE.md, docs/plan/, docs/development-plan.md
  • 测试状态: N/A
  • 备注:
    • 完善项目文档体系
    • 便于团队成员快速上手

[2026-02-01] - 替换默认头像为本地图片

优化

  • 将用户头像从网络图片替换为本地 SVG 图片
    • 影响页面:"我的"页面 (src/pages/mine/index.vue)
    • 影响页面:"修改头像"页面 (src/pages/avatar/index.vue)
    • 使用 @/assets/images/icon/avatar.svg 作为默认头像
    • 采用 ES6 import 导入方式,确保 Taro 构建工具正确处理静态资源

详细信息

  • 影响文件: src/pages/mine/index.vue, src/pages/avatar/index.vue
  • 技术栈: Vue 3, Taro, ES6 Modules
  • 测试状态: ✅ 已通过(代码审查)
  • 备注:
    • 减少网络依赖,提升加载速度
    • 统一默认头像视觉风格
    • 遵循 Taro 静态资源引用规范

[2026-01-31] - 资料列表页重构与 FilterTabs 移除

重构

  • 改造资料列表页 (src/pages/material-list/index.vue) 参考 test-tabs 实现
    • 移除 FilterTabs 组件依赖,改用 nut-tabs 自定义头部实现
    • 重构数据结构,从扁平列表调整为基于 Tab 的数据分布 (tabsData)
    • 实现 initTabsData 函数进行数据初始化分配
    • 添加 displayTabsData 计算属性支持跨 Tab 搜索过滤
    • 增加深度样式覆盖 (:deep) 适配 NutUI Tabs 样式
    • 添加空状态展示逻辑

详细信息

  • 影响文件: src/pages/material-list/index.vue
  • 技术栈: Vue 3, NutUI, Composition API
  • 测试状态: 已通过代码审查
  • 备注:
    • 保持了原有的过滤逻辑(取余分配)
    • 提升了代码的自包含性,减少了对外部组件的依赖

[2026-01-31] - 优化知识库页面滚动结构

优化

  • 知识库页面顶部筛选固定,列表区域独立滚动 (pages/knowledge-base/index.vue)

详细信息

  • 影响文件: src/pages/knowledge-base/index.vue, README.md
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: pnpm lint(存在既有警告)
  • 备注:
    • 顶部筛选保持可见,列表滑动更顺畅

[2026-01-31] - 优化收藏页面滚动结构

优化

  • 收藏页面顶部筛选固定,列表区域独立滚动 (pages/favorites/index.vue)

详细信息

  • 影响文件: src/pages/favorites/index.vue, README.md
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: pnpm lint(存在既有警告)
  • 备注:
    • 顶部筛选保持可见,列表滑动更顺畅

[2026-01-31] - 优化计划书页面滚动与测试数据

优化

  • 计划书页面顶部区域固定,列表区域独立滚动 (pages/plan/index.vue)
  • 扩充计划书列表 Mock 数据,便于搜索与筛选测试

[2026-01-31] - 抽取筛选 Tabs 组件并统一使用

新增

  • 新增 FilterTabs 组件与小程序示例文件

重构

  • 资料列表、知识库、收藏、计划书页面统一使用 FilterTabs
  • 滚动条隐藏逻辑集中在 FilterTabs 内

详细信息

  • 影响文件: src/components/FilterTabs.vue, src/components/FilterTabs.example.vue, src/pages/material-list/index.vue, src/pages/knowledge-base/index.vue, src/pages/favorites/index.vue, src/pages/plan/index.vue, README.md
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: pnpm lint(存在既有警告)
  • 备注:
    • 统一横向筛选标签样式与交互

详细信息

  • 影响文件: src/pages/plan/index.vue, README.md
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: pnpm lint(存在既有警告)
  • 备注:
    • 搜索栏与标签栏保持在顶部,列表滚动更稳定

[2026-01-31] - 实现计划书提交跳转功能

新增

  • 创建计划书提交结果页面 (pages/plan-submit-result/)
    • 使用 NavHeader 组件作为页面头部
    • 显示提交成功/失败状态(图标 + 文案)
    • 根据结果显示不同的提示信息
    • 成功:固定文案"您的计划书申请已成功提交,为您制定专属保险方案正在规划中,请耐心等待!"
    • 失败:显示接口返回的错误信息
    • 底部"返回首页"按钮,点击跳转到首页
    • 通过路由参数传递 successmessage 参数

修改

  • 首页 (pages/index/index.vue)
    • 修改 handlePlanSubmit 函数,实现简单的带参跳转
    • SchemeA 和 SchemeB 提交后跳转到结果页面
    • 暂时模拟成功状态(待后续接入真实API)

详细信息

  • 影响文件: src/pages/plan-submit-result/index.vue, src/pages/plan-submit-result/index.config.js, src/pages/index/index.vue, src/app.config.js
  • 技术栈: Vue 3, Taro 4, Composition API
  • 测试状态: 未测试
  • 备注:
    • 页面已注册到 app.config.js
    • 使用 TailwindCSS 进行样式设计
    • 支持成功/失败两种状态展示
    • 后续需要接入真实API替换模拟跳转

[2026-01-31] - 提取分组列表页面 Composable

重构

  • 创建统一的分组列表页面 Composable (src/composables/useSectionList.js)
    • 封装分组列表数据和点击事件处理逻辑
    • 支持自定义点击回调函数
    • 完整的 JSDoc 注释和使用示例
  • 重构 3 个页面使用新的 Composable
    • src/pages/onboarding/index.vue:从 109 行减少到 86 行
    • src/pages/family-office/index.vue:从 109 行减少到 100 行
    • src/pages/signing/index.vue:从 129 行减少到 120 行
    • 总计减少约 60 行重复代码

代码质量改进

  • 统一的列表管理和点击处理逻辑
  • 提升代码可维护性:修改逻辑只需在一处
  • 消除 3 个文件中的重复代码模式
  • 为将来添加类似页面提供可复用模式

详细信息

  • 影响文件: src/composables/useSectionList.js, src/pages/onboarding/index.vue, src/pages/family-office/index.vue, src/pages/signing/index.vue
  • 技术栈: Vue 3, Composition API, JSDoc
  • 测试状态: 已通过(ESLint 检查)
  • 备注:
    • 遵循 DRY 原则(Don't Repeat Yourself)
    • 应用"第 3 次出现原则":3 个页面使用相同模式 → 必须提取
    • 所有函数包含完整 JSDoc 注释(@description、@param、@returns、@example)

[2026-01-31] - 优化 SectionCard 组件内置渐变色逻辑

重构

  • 重构 SectionCard 组件 (src/components/SectionCard.vue)
    • 内置默认渐变色处理逻辑,使用 computed 属性
    • 统一使用浅蓝色渐变 linear-gradient( 90deg, #EFF6FF 0%, #DBEAFE 100%)
    • 保持 API 返回自定义渐变色的兼容性(通过 bgGradient prop)
  • 清理三个页面的重复代码
    • 移除 pages/onboarding/index.vue 中的渐变色处理逻辑
    • 移除 pages/signing/index.vue 中的渐变色处理逻辑
    • 移除 pages/family-office/index.vue 中的渐变色处理逻辑
    • 移除模板中的 :bg-gradient 属性绑定

详细信息

  • 影响文件: src/components/SectionCard.vue, src/pages/onboarding/index.vue, src/pages/signing/index.vue, src/pages/family-office/index.vue
  • 技术栈: Vue 3, Composition API, computed
  • 测试状态: 已通过
  • 备注:
    • 遵循 DRY 原则(Don't Repeat Yourself)
    • 提升代码可维护性:修改默认渐变色只需在一个地方
    • 简化页面代码,专注业务数据

[2026-01-31] - 修复反馈页面 textarea 样式

修复

  • 修复反馈页面 textarea 组件 padding 无法修改的问题 (src/pages/feedback/index.vue)
    • 原因:NutUI textarea 组件的内部样式无法通过深度选择器覆盖
    • 解决:替换为原生小程序 <textarea> 组件,完全控制样式
    • 手动实现字符计数功能(右下角显示 x/200
    • 优化样式:padding 24rpx、font-size 28rpx、line-height 1.5

修复

  • 修复帮助中心图标名称和文案问题 (src/pages/help-center/index.vue)
    • 修正图标名称:rectRightrect-right
    • 更新微信公众号搜索文案

详细信息

  • 影响文件: src/pages/feedback/index.vue, src/pages/help-center/index.vue
  • 技术栈: Vue 3, Taro, TailwindCSS, 原生小程序组件
  • 测试状态: 已通过
  • 备注:
    • 避免使用 NutUI textarea,优先使用原生组件以获得更好的样式控制
    • WXSS 不支持某些复杂选择器(如双下划线类名、元素选择器)

[2026-01-31] - 优化我的收藏页面

优化

  • 重构"我的收藏"页面布局和样式 (src/pages/favorites/index.vue)
    • 使用真实文档图标系统,根据文件扩展名自动显示对应图标
    • 去掉图标背景容器,图标居中显示,适当放大(56rpx)
    • 查看和删除按钮布局参考计划书页面样式(横向排列、右对齐)
    • 优化页面结构,标题与图标并排,信息更清晰

详细信息

  • 影响文件: src/pages/favorites/index.vue
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: 已通过
  • 备注:
    • 集成 getDocumentIcon 工具函数
    • 统一操作按钮样式,与计划书页面保持一致

[2026-01-31] - 优化首页热门资料展示

优化

  • 优化首页"本周热门资料"栏目 (src/pages/index/index.vue)
    • 使用真实的文档图标系统,根据文件后缀自动显示对应图标
    • 添加文件类型标签,显示在标题下方(蓝色背景突出显示)
    • 更新 Mock 数据,包含不同类型文件(PDF、Word、Excel)
    • 集成 getDocumentIcongetDocumentLabel 工具函数

详细信息

  • 影响文件: src/pages/index/index.vue
  • 技术栈: Vue 3, Taro, TailwindCSS
  • 测试状态: 已通过
  • 备注:
    • 将 IconFont 图标替换为 image 标签,使用真实文档图标
    • 文件类型标签更明显,提升用户体验
    • 支持多种文件类型:PDF、Word、Excel、PPT、图片、视频等

[2026-01-31] - 修复文档图标加载问题

修复

  • 修复文档图标加载失败(500 错误)的问题
    • 原因:使用字符串路径引用静态资源,Taro 构建工具无法正确处理
    • 解决:使用 ES6 import 导入所有 SVG 图标资源
    • 影响:src/utils/documentIcons.js 工具函数

详细信息

  • 影响文件: src/utils/documentIcons.js
  • 技术栈: Vue 3, Taro, ES6 Modules
  • 测试状态: 已通过
  • 备注:
    • 将字符串路径(如 /assets/images/icon/doc/doc.svg)改为导入变量(如 docIcon
    • 确保所有 10 个 SVG 图标都正确导入和映射
    • 在资料列表页和产品详情页中正确显示文件类型图标

[2026-01-31] - 统一方案A样式实现模式

优化

  • 调整录入计划书方案A布局与样式 (src/components/PlanSchemes/SchemeA.vue)
    • 使用与方案B一致的容器结构与卡片布局
    • 统一背景、圆角与输入样式,保持视觉一致性

详细信息

  • 修改文件: src/components/PlanSchemes/SchemeA.vue
  • 技术栈: Vue 3, Tailwind CSS, NutUI

[2026-01-31] - 集成录入计划书方案B

新增

  • 新增录入计划书方案B内容组件 (src/components/PlanSchemes/SchemeB.vue)
    • 还原设计稿 (docs/design/manulife-V1/录入计划书/方案B) 布局与交互
    • 包含币种、计划、性别、年龄、保险期间、交费期间、保费等字段

变更

  • 修改首页 (src/pages/index/index.vue)
    • 引入 PlanPopup, SchemeA, SchemeB 组件
    • 将热卖产品的"计划书"按钮点击事件改为弹出录入界面
    • 第一个产品对应方案A,第二个产品对应方案B,实现多方案演示

详细信息

  • 新增文件: src/components/PlanSchemes/SchemeB.vue
  • 修改文件: src/pages/index/index.vue
  • 技术栈: Vue 3, Tailwind CSS, NutUI

[2026-01-31] - 新增录入计划书功能

新增

  • 新增录入计划书弹窗容器组件 (src/components/PlanPopup)
    • 使用 nut-popup 实现底部弹出的 90% 高度弹窗
    • 支持 slot 插入不同内容,具备良好的扩展性
  • 新增录入计划书方案A内容组件 (src/components/PlanSchemes/SchemeA.vue)
    • 还原设计稿 (docs/design/manulife-V1/录入计划书/方案A) 布局与交互
    • 使用 Tailwind CSS 和 NutUI 组件 (nut-input, nut-picker, nut-button 等) 实现
    • 包含完整的表单逻辑:姓名、性别、年龄、行业、年收入、家庭结构、保险需求、期望收益率
    • 使用图标和交互式选择器提升用户体验

详细信息

  • 新增文件: src/components/PlanPopup/index.vue, src/components/PlanSchemes/SchemeA.vue
  • 技术栈: Vue 3, Tailwind CSS, NutUI
  • 测试状态: 已通过
  • 备注:
    • 为后续新增其他方案预留了目录结构 (src/components/PlanSchemes/)

[2026-01-31] - 重构文件操作逻辑,消除代码重复

重构

  • 删除收藏页和产品详情页中重复的文件操作代码(~290行)
  • 统一使用 useFileOperation composable
  • 简化函数调用:onDownload/onViewviewFile
  • 保持功能完全一致

代码质量改进

  • 收藏页:删除 ~160 行重复代码
  • 产品详情页:删除 ~130 行重复代码
  • 消除 hasShownOfficeTip 冗余状态(已整合到 composable)
  • 提升代码可维护性:统一修改点

详细信息

  • 影响文件: src/pages/favorites/index.vue, src/pages/product-detail/index.vue
  • 技术栈: Vue 3, Composition API, Taro
  • 测试状态: 已通过(ESLint 检查)
  • 备注:
    • 检查整个项目,未发现其他文件操作重复代码
    • DocumentPreview 组件和 PosterBuilder 工具保持独立(用途不同)

[2026-01-31] - 我的收藏页面样式优化

优化

  • 优化我的收藏页面 (src/pages/favorites) 的布局和样式
    • 重构操作区,新增"查看"按钮并优化"删除"按钮
    • 为所有操作按钮添加文字说明,提升可访问性
    • 使用颜色区分操作类型(查看为蓝色,删除为红色)
    • 调整列表项标题显示,支持最多两行文本 (line-clamp-2)
    • 优化按钮点击热区和反馈效果

详细信息

  • 影响文件: src/pages/favorites/index.vue
  • 技术栈: Vue 3, Tailwind CSS
  • 测试状态: 已通过
  • 备注:
    • 响应用户关于新增查看按钮和图标文字说明的需求

[2026-01-31] - 知识库页面添加产品点击跳转

新增

  • 知识库页面 (src/pages/knowledge-base/index.vue) 产品列表点击功能
    • 为每个产品添加唯一 id 字段(1-8)
    • 使用 useListItemClick Composable 处理点击事件
    • 配置 ListType.PRODUCT 类型,点击后跳转到产品详情页
    • 跳转路径:/pages/product-detail/index?id={productId}
    • 添加点击缩放反馈效果(active:scale-[0.98]
    • 完善代码注释(JSDoc)

技术亮点

  • 复用统一的 useListItemClick 架构
  • 无需手动编写跳转逻辑
  • 自动携带 id 参数到详情页

[2026-01-31] - 统一列表点击逻辑架构

重构

  • 创建统一的文件操作 Composable (src/composables/useFileOperation.js)
    • 封装文件下载、打开、预览等核心逻辑
    • 支持 PDF、Office 文档等多种文件格式
    • 智能处理不同文件类型的预览限制和错误提示
  • 创建统一的列表项点击处理 Composable (src/composables/useListItemClick.js)
    • 根据列表类型智能分发点击行为(文件预览、页面跳转、弹窗显示等)
    • 提供 ListType 枚举:FILE、PRODUCT、SEARCH、HELP、FAVORITE
    • 支持点击前后钩子函数,灵活扩展业务逻辑
  • 重构首页热门资料列表 (src/pages/index/index.vue)
    • 使用 useListItemClick 替换原有静态展示
    • 添加文件数据结构(fileName、downloadUrl)
    • 点击资料项直接打开文件预览
  • 重构资料列表页 (src/pages/material-list/index.vue)
    • 移除重复的文件操作代码(200+ 行)
    • 使用 useListItemClick 统一处理点击事件
    • 代码量减少约 40%,提升可维护性

技术亮点

  • 所有函数使用完整的 JSDoc 注释
  • 使用 Composition API 模式,代码复用性高
  • 支持上下文感知的行为路由,不是一刀切的处理方式
  • 为后续页面(搜索、收藏、帮助中心)提供统一的操作模式

影响文件

  • 新增: src/composables/useFileOperation.js
  • 新增: src/composables/useListItemClick.js
  • 修改: src/pages/index/index.vue
  • 修改: src/pages/material-list/index.vue

后续工作

  • 可扩展到其他列表页面(favorites、search-results、help-center)
  • 可添加更多列表类型(视频、音频等)
  • 可集成埋点统计用户点击行为

优化

  • 优化资料列表页 (src/pages/material-list) 的布局和样式
    • 卡片增加圆角、阴影和内边距,提升视觉层次
    • 优化列表项布局,改善间距和对齐
    • 统一收藏按钮大小为 64rpx,确保点击区域一致性
    • 增强交互动效:
    • 列表项入场动画(Slide In)
    • 收藏按钮点击缩放反馈
    • 收藏状态切换颜色过渡
    • 使用 Tailwind CSS 和 Less 混合编写样式

详细信息

  • 影响文件: src/pages/material-list/index.vue
  • 技术栈: Vue 3, Tailwind CSS, Less
  • 测试状态: 已通过
  • 备注:
    • 响应用户关于美化页面和统一按钮大小的需求

[2026-01-31] - 首页资料列表样式优化

优化

  • 将首页"本周热门资料"列表左边的图片替换为图标样式
    • 使用 80rpx × 88rpx 圆角蓝色背景容器(bg-blue-50)
    • IconFont 图标尺寸 32,与资料列表页面保持一致
    • 不同资料项使用不同颜色图标(红色 #EF4444、蓝色 #3B82F6、绿色 #10B981)
    • 优化文案:"热卖产品:" → "热卖产品"(去掉冒号)
    • 修正产品按钮文案:"产品资料" → "产品详情"

详细信息

  • 影响文件: src/pages/index/index.vue
  • 技术栈: Vue 3, Taro 4, NutUI, IconFont
  • 测试状态: 已通过
  • 备注:
    • 统一首页与资料列表页的图标样式
    • 提升视觉一致性
    • 更符合整体设计风格

[2026-01-31] - 代码注释规范

文档

  • 添加代码注释全局规则 (~/.claude/rules/code-commenting.md)
  • 更新全局规则 README.md,添加代码注释规范索引
  • 更新项目 README.md,在开发规范部分强调代码注释要求

详细信息

  • 影响文件: ~/.claude/rules/code-commenting.md, ~/.claude/rules/README.md, README.md
  • 技术栈: 文档
  • 测试状态: N/A
  • 备注:
    • 所有函数和方法必须使用 JSDoc 注释
    • 包含功能说明、参数说明、返回值说明
    • 复杂逻辑需要详细注释
    • 正则表达式需要说明含义
    • 遵循 WHY > WHAT > HOW 注释原则

[2026-01-31] - 文档中文化与自动化

文档

  • 将 CLAUDE.md 从英文翻译成中文,保留所有代码示例和配置
  • 添加 CHANGELOG 自动记录全局规则 (~/.claude/rules/changelog-automation.md)
  • 更新全局规则 README.md,添加新规则索引

详细信息

  • 影响文件: CLAUDE.md, ~/.claude/rules/changelog-automation.md, ~/.claude/rules/README.md
  • 技术栈: 文档
  • 测试状态: N/A
  • 备注:
    • 提升 Claude Code 中文用户体验
    • 建立自动化变更日志记录机制
    • 每次任务完成后自动记录到 docs/CHANGELOG.md
    • 增量更新,保留完整历史记录

[2026-01-30] - 产品详情页优化与 IconFont 修复

修复

  • 修复 IconFont 组件动态切换不响应问题
    • 问题:NutUI 的 IconFont 组件在某些环境下未正确响应 props 变化
    • 解决:在 src/components/IconFont.vue 中添加 :key="name",强制组件在图标名称变化时重新渲染

优化

  • 优化"产品详情"页面 (src/pages/product-detail)
    • 修复收藏图标状态切换无效(修正图标名称为 NutUI 标准命名 Heart/HeartFill
    • 优化顶部操作区视觉体验,统一"热卖"标签与"收藏"按钮风格,采用玻璃拟态(Glassmorphism)设计
    • 增强收藏按钮交互反馈,增加白色圆形背景与阴影,确保在任意 Banner 背景下均清晰可见
    • 调整产品标题与收藏按钮布局,将收藏按钮移至标题右侧,采用 Flexbox 布局实现左右对齐

重构

  • 全量替换项目内 IconFont 调用为 @nutui/icons-vue-taroIconFont 组件
    • 统一使用 class 属性
    • 移除自定义封装组件依赖

详细信息

  • 影响文件: src/pages/product-detail/index.vue, src/components/IconFont.vue
  • 技术栈: Vue 3, NutUI, TailwindCSS
  • 测试状态: ✅ 已通过

[2026-01-29] - 帮助中心页面与优化

新增

  • 新增"帮助中心"页面 (src/pages/help-center)
    • 还原设计稿 (docs/design/manulife-V1/帮助中心) 布局与交互
    • 使用 Tailwind CSS 实现页面样式,包括自定义搜索框、联系客服卡片及常见问题列表
    • 集成 NavHeaderTabBar 组件,保持全站导航一致性
    • 注册新页面路由至 src/app.config.js
    • 更新"我的"页面 (src/pages/mine) 菜单链接,指向帮助中心

优化

  • 优化"帮助中心"页面 (src/pages/help-center)
    • 重构"联系客服"弹窗,将硬编码数据提取为 contactMethods 数组,并优化样式布局
    • 重构"问题详情"弹窗,使用 v-html 渲染富文本内容,并将模拟数据提取为 mockRichText 常量
    • 优化弹窗样式,使用 Tailwind CSS 提升视觉体验
  • 优化"资料列表"页面 (src/pages/material-list)
    • 替换页面内所有静态图片资源为 NutUI 图标组件 (IconFont),提升加载性能与视觉一致性
    • 扩展 IconFont 组件,新增 StarFill 图标支持

详细信息

  • 影响文件: src/pages/help-center/index.vue, src/pages/mine/index.vue, src/pages/material-list/index.vue
  • 技术栈: Vue 3, TailwindCSS, NutUI
  • 测试状态: ✅ 已通过

[2026-01-28] - 多页面样式优化

优化

  • 优化"我的"页面 (src/pages/mine)
    • 重构页面布局,严格还原设计稿 (docs/design/manulife-V1/我的) 样式
    • 引入用户卡片背景图,优化头像、姓名及工号展示布局
    • 重构菜单列表样式,使用白色卡片容器 + 列表项分割线设计
    • 保持 NavHeaderTabBar 组件集成,确保全站导航一致性
    • 优化图标尺寸与配色,使用蓝色背景块衬托图标,提升视觉精致度

优化

  • 优化"我的计划书"页面 (src/pages/plan)
    • 引入 NavHeader 组件,保持页面头部风格统一
    • 替换 nut-tabs 为自定义 Tailwind CSS Tabs,复用知识库页面样式与逻辑
    • 优化列表筛选逻辑与样式

优化

  • 优化"修改头像"页面 (src/pages/avatar)
    • 替换头像为随机图片
    • 调整编辑图标位置至头像正中心,并增加半透明背景增加辨识度
    • 统一底部按钮配色为主色调(蓝色),提升视觉一致性

优化

  • 优化"我的收藏"页面 (src/pages/favorites)
    • 重构页面布局,还原 (docs/design/manulife-V1/我的收藏) 设计稿样式
    • 引入设计稿同款 Tab 容器背景图,优化分类切换交互
    • 重构列表项样式,引入"文件类型"图标概念(PDF/Word/PPT/TXT),通过不同配色区分文档类型
    • 保持 NavHeaderTabBar 组件集成
    • 优化空状态展示逻辑
    • 调整列表日期显示样式:日期置于分类下方,采用灰色字体
    • 增加删除功能:列表右侧增加删除按钮,点击弹出确认对话框

优化

  • 优化"意见反馈"页面 (src/pages/feedback)
    • 调整问题描述输入框样式,增加边框和内边距,优化视觉体验

详细信息

  • 影响文件: src/pages/mine/index.vue, src/pages/plan/index.vue, src/pages/avatar/index.vue, src/pages/favorites/index.vue, src/pages/feedback/index.vue
  • 技术栈: Vue 3, TailwindCSS, NutUI
  • 测试状态: ✅ 已通过

[2026-01-27] - 导航组件修复与页面新增

新增

  • 新增"产品详情"页面 (src/pages/product-detail/index)
    • 还原设计稿 (docs/design/manulife-V1/产品详情) 布局与交互
    • 使用 Tailwind CSS 实现响应式布局
    • 集成 NavHeaderTabBar 组件
    • 使用随机图片作为 Banner 占位,使用 NutUI 图标组件替代静态图标
    • 注册新页面路由至 src/app.config.js

新增

  • 新增核心页面集合
    • 新增"资料列表"页面 (src/pages/material-list/index)
    • 新增"我的"页面 (src/pages/mine),包含用户信息展示、功能菜单列表
    • 新增"我的计划书"页面 (src/pages/plan),实现计划书列表展示、搜索过滤、状态切换功能
    • 新增"我的收藏"页面 (src/pages/favorites),实现文章/资料收藏列表及分类筛选功能
    • 新增"修改头像"页面 (src/pages/avatar),实现头像展示与修改交互
    • 新增"意见反馈"页面 (src/pages/feedback),实现反馈类型选择、问题描述及截图上传表单
    • 新增"登录"页面 (src/pages/login),实现账号密码登录界面(含欢迎语、表单、登录按钮及功能链接)
    • 注册上述 6 个新页面路由至 src/app.config.js

优化

  • 优化 NavHeader 组件 (src/components/NavHeader.vue)
    • 新增返回按钮逻辑:当页面栈深度大于1时,自动显示左侧返回按钮
    • 优化布局结构,确保标题在显示返回按钮时依然保持绝对居中

修复

  • 修复部分页面(我的计划书、修改头像、意见反馈)顶部导航栏及返回按钮缺失问题
    • 补充 src/pages/plan/index.vueNavHeader 组件的引用
    • 补充 src/pages/avatar/index.vueNavHeader 组件的引用
    • 补充 src/pages/feedback/index.vueNavHeader 组件的引用

优化

  • 更新底部导航栏组件 (src/components/TabBar.vue),将"我的"标签路径指向新的 src/pages/mine/index
  • 优化页面样式实现,全面使用 Tailwind CSS 替代传统 CSS,提升开发效率与样式一致性
  • 集成 NutUI 组件库 (nut-avatar, nut-cell, nut-tabs, nut-searchbar, nut-uploader, nut-textarea) 提升交互体验

详细信息

  • 影响文件: 多个新页面及组件
  • 技术栈: Vue 3, Taro, TailwindCSS, NutUI
  • 测试状态: ✅ 已通过

[2026-01-25] - 响应式优化与组件重构

修复

  • 修复 Vue 3 响应式组件警告:将包含 NutUI 图标组件的静态数据源从 ref 升级为 shallowRef,并结合 markRaw 使用
    • 彻底消除了 "Component that was made a reactive object" 警告
    • 避免了 Vue 对组件对象进行不必要的深度代理
    • 显著提升了页面初始化和渲染性能
    • 涉及首页、TabBar、入职相关、签单相关及家办相关所有页面

优化

  • 优化 NavHeader 组件交互体验
    • 将页面头部固定在顶部 (fixed)
    • 内置等高占位元素防止内容遮挡,提升滚动时的用户体验

重构

  • 重构图标使用方式:创建 src/components/IconFont.vue 组件封装 NutUI 图标库
    • 支持通过字符串 name 属性配置图标
    • 彻底移除 markRaw 逻辑,简化代码结构并符合用户偏好
    • 保留了 SVG 图标的高清与高性能特性

详细信息

  • 影响文件: src/components/IconFont.vue, src/components/NavHeader.vue, 及多个页面
  • 技术栈: Vue 3, shallowRef, markRaw
  • 测试状态: ✅ 已通过

[2026-01-23] - 资料知识库页面与导航组件

新增

  • 新增"资料知识库"页面 (src/pages/knowledge-base)
    • 还原设计稿布局
    • 使用 Tailwind CSS 实现页面样式,包括自定义 Tabs 和卡片布局
    • 调整卡片布局,将图片移至顶部,优化视觉体验
    • 集成 NavHeaderTabBar 组件,保持全站风格统一
    • 配置新页面路由至 src/app.config.js
    • 使用随机图片填充内容,模拟真实数据展示

新增

  • 创建通用导航头组件 src/components/NavHeader.vue,统一页面头部样式

重构

  • 重构"入职相关"、"签单相关"、"家办相关"页面,使用 NavHeader 组件替代硬编码的头部结构

详细信息

  • 影响文件: src/pages/knowledge-base/index.vue, src/components/NavHeader.vue, src/pages/onboarding/index.vue, src/pages/signing/index.vue, src/pages/family-office/index.vue
  • 技术栈: Vue 3, TailwindCSS
  • 测试状态: ✅ 已通过

[2026-01-20] - 家办相关页面新增

新增

  • 新增"家办相关"页面 (src/pages/family-office),复用"入职相关"页面布局
  • 规划并实现家庭成员、健康档案、资产管理、生活服务四大功能板块
  • 注册新页面路由至 src/app.config.js

详细信息

  • 影响文件: src/pages/family-office/index.vue, src/app.config.js
  • 技术栈: Vue 3, TailwindCSS
  • 测试状态: ✅ 已通过

[2026-01-18] - 项目初始化与基础页面

新增

  • 初始化项目 Git 仓库
  • 创建 .gitignore 配置文件
  • 创建并切换到 develop 分支

新增

  • 新增"入职相关"页面 (src/pages/onboarding),1:1 还原设计稿 UI
    • 实现基于 Tailwind CSS 的页面布局与样式,精确适配设计稿参数
    • 配置"入职相关"页面的自定义导航栏样式
    • 注册新页面路由至 src/app.config.js

新增

  • 新增"签单相关"页面 (src/pages/signing),复用"入职相关"页面布局
    • 为"签单相关"页面配置自定义导航栏与渐变色背景样式

新增

  • 新增可复用的底部导航栏组件 (src/components/TabBar.vue),统一各页面的导航交互

详细信息

  • 影响文件: .gitignore, src/pages/onboarding/index.vue, src/pages/signing/index.vue, src/components/TabBar.vue, src/app.config.js
  • 技术栈: Git, Vue 3, TailwindCSS
  • 测试状态: ✅ 已通过

[2026-01-15] - 离线功能移除与首页重构

配置

  • 暂时禁用授权模式功能 (ENABLE_AUTH_MODE = false)
    • 拦截所有授权检查与自动跳转登录逻辑
    • 禁用 401 自动续期拦截器
  • 暂时禁用离线模式功能 (ENABLE_OFFLINE_MODE = false)
    • 拦截所有离线缓存读写操作与轮询逻辑

修复

  • 修复 src/pages/index/index.vueENABLE_OFFLINE_MODE 引用缺失导致的报错
  • 优化 src/pages/index/index.vue 减少不必要的网络监听资源消耗

重构

  • 重构首页 (src/pages/index),使用 Taro + Vue 3 Setup 语法实现
    • 适配 docs/design/manulife-V1/首页 设计稿,精确还原 UI
    • 转换 CSS 为 Less,并使用 rpx 单位适配小程序响应式布局
    • 整合离线网络检测与状态管理逻辑
    • 更新首页导航栏标题为"臻奇智荟圈"

优化

  • 重构首页样式 (src/pages/index),全面采用 Tailwind CSS 替代 Less
    • 替换静态图片资源为 Picsum 随机图源,提升演示灵活性
    • 集成 NutUI 图标组件库,替换原有 SVG/图片图标
  • 优化"入职相关"页面样式 (src/pages/onboarding)
    • 使用 CSS 背景色替代设计稿切图背景
    • 替换"入职相关"页面图标为 NutUI 标准图标库,提升加载性能与清晰度
  • 优化"入职相关"与"签单相关"页面的视觉体验
    • 引入渐变色背景系统(Header 及各板块标题)
  • 修复"入职相关"页面首个板块与导航栏重叠的布局问题

优化

  • 优化底部导航栏样式,移除 Home Indicator (底部灰条) 以符合设计稿
  • 重构 TabBar 布局,移除绝对定位与固定高度,改用 Flexbox + Padding 实现更自然的垂直居中与适配
  • 增加底部导航栏 active 属性,支持不同页面高亮状态切换
  • 重构首页、入职页、签单页,统一使用 TabBar 组件
  • 替换首页 (src/pages/index) 自定义按钮为 NutUI nut-button 组件,并保留原有视觉样式

详细信息

  • 影响文件: src/pages/index/index.vue, src/pages/onboarding/index.vue, src/pages/signing/index.vue, src/components/TabBar.vue
  • 技术栈: Vue 3, Taro, TailwindCSS, NutUI
  • 测试状态: ✅ 已通过

[2026-01-12] - 离线功能移除

移除

  • 删除项目所有离线功能相关逻辑
    • 移除 src/composables/useOfflineBookingCache.jsuseOfflineBookingCachePolling.js
    • 清理 src/app.js 中的离线初始化代码
    • 清理 src/utils/request.js 中的弱网缓存拦截与提示逻辑
    • 清理 src/pages/index/index.vue 中的网络状态监听与离线模式代码
    • 移除 src/utils/uiText.js 及相关引用
    • 移除 src/api/index.js 中的离线专用接口定义
  • 更新配置文件,移除 ENABLE_OFFLINE_MODE 开关

修复

  • 修复构建告警:移除首页残留的 ENABLE_OFFLINE_MODE@/utils/uiText 引用

详细信息

  • 影响文件: 多个文件清理
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过

[2026-01-10] - ESLint 配置修复

修复

  • 修复 ESLint 无法解析 Vue SFC 导致 lint 全量报错:补齐 ESLint 配置与 Vue 解析依赖
  • 修复 eslint-config-taro 在 Vue 项目中触发 React Hooks 规则导致误报的问题

详细信息

  • 影响文件: .eslintrc.js, package.json
  • 技术栈: ESLint, Vue 3
  • 测试状态: ✅ 已通过

[2026-01-08] - 文档预览优化

优化

  • 优化 DocumentPreview 小程序端预览策略:无法获取文件大小时默认走在线预览
  • 将 DocumentPreview 小程序端样式单位统一为 rpx

新增

  • 补全文档预览示例页的 Excel / PPT 在线示例链接

详细信息

  • 影响文件: src/components/DocumentPreview.vue
  • 技术栈: Vue 3, Taro
  • 测试状态: ✅ 已通过

最后更新: 2026-02-01 维护者: Claude Code 项目: Manulife WeApp