API 集成日志.md 53.4 KB

接口联调工作记录

记录接口文档更新情况和页面实际调试情况

📊 总体进度

  • 总接口数: 29
  • 已完成: 28 (96.6%)
  • 联调中: 0 (0%)
  • 已废弃: 3 (10.3%)
  • 待联调: 0 (0%)
  • 后端开发中: 0 (0%)
  • 规划中: 1 (3.4%)
  • 有阻塞: 0


⏳ 后端开发中(0个)

暂无接口正在开发中。


⏳ 规划中(1个)

序号 接口名称 模块 说明
1 getPlanStatusAPI 计划书模块 轮询查询计划书生成状态

快速跳转


📝 最近更新 (2026-02-13):

  • 消息模块接口联调完成
    • myListAPI(我的消息列表): 从"后端开发中" → "已完成"
    • detailAPI(消息详情): 从"后端开发中" → "已完成"
  • 📊 接口完成度更新
    • 总接口数:29
    • 已完成:28 (96.6%)
    • 后端开发中:0 (全部完成)
  • 页面优化
    • 消息详情页布局优化:计划书信息长文本自动换行
    • 消息详情页状态颜色标识:与计划列表页保持一致

📝 最近更新 (2026-02-12 14:30):


📝 最近更新 (2026-02-09 22:00):

  • 3个待联调接口联调完成
    • addAPI (埋点模块) - 埋点功能正常
    • weekHotAPI (文档模块) - 周热门资料加载正常
    • fileListAPI (文档模块) - 文档列表加载正常
  • 📝 新增计划书模块
    • 接口1: 提交计划书表单(submitPlanAPI)- 待后端开发
    • 接口2: 查询计划书状态(getPlanStatusAPI)- 规划中
    • 接口3: 我的计划书列表(myPlanListAPI)- 后端开发中(新增)
  • ⚠️ 数据单位规范
    • 金额字段单位为"分"(非"元")
    • 存储格式:整数(如 10000 表示 100.00 元)
    • 显示格式:除以 100 并保留 2 位小数

📝 最近更新 (2026-02-09 21:50):

📝 最近更新 (2026-02-09 21:40):

  • 🎨 组件优化完成
    • AmountKeyboard 组件 UI 多次优化(极简专业风 → 现代科技风 → 清新毛玻璃)
    • 从 SCSS 迁移到 TailwindCSS(84行样式代码替换为 Tailwind utility classes)
  • 🧹 代码清理
    • 删除未使用的旧版本选择器组件(AgePicker、DatePicker、SelectPicker)
    • 减少代码冗余 759 行
    • 组件目录结构重组(分类目录:navigation, list, forms, cards, documents, plan)
  • 🔧 路径修复
    • 修复 MaterialCard.vue 等 8 个文件的组件导入路径
    • 构建验证通过(pnpm build:weapp)

📝 最近更新 (2026-02-06):

  • 搜索模块联调完成:searchAPI 接口前端已完成集成
    • 支持产品和资料的实时搜索
    • 支持分页加载和触底加载更多
    • 使用可复用卡片组件(MaterialCard、ProductCard)
  • 🆕 新增可复用卡片组件
    • MaterialCard.vue - 资料卡片组件(272行)
    • ProductCard.vue - 产品卡片组件(106行)
    • 已应用到:搜索页、首页、周热门资料页
  • 🔄 页面重构:搜索页、首页、周热门资料页使用新组件重构
    • 减少代码重复:净减少238行
    • 统一UI风格和交互逻辑
  • 收藏模块联调完成:2个接口(delAPI、listAPI)前端已完成联调
    • 收藏列表API:获取收藏数据,支持分页
    • 取消收藏API:删除单个收藏项
    • 添加收藏API:已实现,待页面集成
  • 文档模块联调中:fileListAPI 字段确认中,还在联调
  • 📝 文档模块接口字段确认
    • weekHotAPI(本周热门资料):字段已确认,更新接口文档,待联调
    • fileListAPI(文档列表):字段确认中,还在联调
  • 收藏模块后端完成:3 个收藏接口(addAPI、delAPI、listAPI)后端已开发完成,前端待联调
  • 埋点接口后端完成:埋点接口(addAPI)后端已开发完成,前端待联调
  • 产品模块联调完成:产品列表接口(listAPI)联调成功
    • 知识库页面:动态标签栏、分类筛选、滚动加载功能正常
    • 首页热卖产品:产品列表正常显示
  • 🆕 新增产品模块:添加产品列表接口(listAPI),前端集成完成,待联调
  • 🆕 知识库页面 API 集成:动态标签栏、分类筛选、滚动加载功能

📝 接口联调明细

用户中心模块

接口 1: 小程序授权

接口信息

  • 接口名称: miniProgramAuthAPI
  • 接口路径: /srv/?a=openid
  • 请求方法: POST
  • 负责页面: src/utils/openid.js (全局工具)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/utils/openid.js - ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 调用 wx.login 获取 code,后端返回 openid
  • 授权成功后自动将 sessionid 写入本地存储
  • 如果用户已绑定账号,授权接口会自动登录并返回用户信息
  • 实现位置:src/utils/openid.js:miniProgramAuth()

接口 2: 查询登录状态

接口信息

  • 接口名称: loginStatusAPI
  • 接口路径: /srv/?a=user&t=login_status
  • 请求方法: GET
  • 负责页面: src/stores/user.js (全局状态管理)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/stores/user.js - ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 返回 is_login (是否登录) 和 is_openid (是否已授权) 两个字段
  • 小程序启动时调用,用于判断是否需要展示登录页
  • 实现位置:src/stores/user.js:checkLoginStatus()

接口 3: 获取个人信息

接口信息

  • 接口名称: getProfileAPI
  • 接口路径: /srv/?a=user&t=get_profile
  • 请求方法: GET
  • 负责页面: src/pages/mine/index.vue, src/pages/avatar/index.vue, src/stores/user.js
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.2 修正 avatar 字段结构 修复头像显示问题 查看
2026-02-03 v1.1 新增 employee_no 字段(工号) 业务需求变更 查看
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/mine/index.vue 页面显示 ID 字段,应显示工号 userInfo?.id 改为 userInfo?.employee_no ✅ 已完成
2026-02-03 src/pages/mine/index.vue 头像显示不正确 userInfo?.avatar_url 改为 userInfo?.avatar.src ✅ 已完成
2026-02-03 src/pages/avatar/index.vue 新增获取当前头像功能 页面加载时调用 getProfileAPI() ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 返回用户信息结构json { "user": { "id": 123, "name": "张三", "employee_no": "EMP001", "avatar": { "name": "avatar.png", "hash": "abc123", "src": "https://cdn.ipadbiz.cn/manulife/avatar.png", // ⭐ 头像URL "height": "200", "width": "200", "size": 10240 } } }
  • 重要修复:v1.2 版本修正了 avatar 字段结构
    • ❌ 之前文档错误描述为 avatar_url(字符串)
    • ✅ 实际返回 avatar 对象(包含完整信息)
  • 访问方式
    • 头像URL: user.avatar.src
    • 文件名: user.avatar.name
    • 文件hash: user.avatar.hash
  • 在"我的"页面加载时调用
  • 在"修改头像"页面加载时调用(获取当前头像)
  • 401 自动跳转登录页(由 request.js 拦截器处理)
  • 实现位置:
    • src/pages/mine/index.vue:fetchUserProfile()
    • src/pages/avatar/index.vue:fetchCurrentAvatar()
    • src/stores/user.js:fetchUserInfo()

接口 4: 退出登录

接口信息

  • 接口名称: logoutAPI
  • 接口路径: /srv/?a=user&t=logout
  • 请求方法: POST
  • 负责页面: src/pages/mine/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/mine/index.vue - ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 解绑 openid 并清除登录状态
  • 调用成功后清除本地状态并跳转到首页
  • 实现位置:src/pages/mine/index.vue:handleLogout()

接口 5: 登录(邮箱账号密码)

接口信息

  • 接口名称: loginAPI
  • 接口路径: /srv/?a=user&t=login
  • 请求方法: POST
  • 负责页面: src/pages/login/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/login/index.vue - ✅ 已完成
2026-02-03 src/pages/login/index.vue 联调完成 接口正常工作 ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 邮箱账号密码登录
  • 参数:uuid(邮箱)、password(密码)
  • 登录成功后获取用户信息
  • 实现位置:src/stores/user.js:login()

接口 6: 更新个人资料

接口信息

  • 接口名称: updateProfileAPI
  • 接口路径: /srv/?a=user&t=update_profile
  • 请求方法: POST
  • 负责页面: src/pages/avatar/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.2 修正请求参数结构 修复接口调用错误 查看
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/avatar/index.vue 参数结构不正确 改为传递完整 avatar 对象 ✅ 已完成
2026-02-03 src/pages/avatar/index.vue 字段映射错误 根据实际上传接口返回结构映射字段 ✅ 已完成
2026-02-03 src/pages/avatar/index.vue 联调完成 接口正常工作,头像更新成功 ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 请求参数结构(v1.2 修正): javascript { avatar: { name: "文件名", hash: "文件hash", src: "https://cdn...", // 头像CDN URL height: "1770", // 字符串格式 width: "1766", // 字符串格式 size: 3806359 // 整数(字节) } }
  • 重要修复:v1.2 版本修正了请求参数结构
    • ❌ 之前文档错误描述参数为 avatar_meta_id
    • ✅ 实际参数为完整的 avatar 对象
  • 完整流程
    1. 选择图片 → Taro.chooseImage
    2. 上传到服务器 → Taro.uploadFile (/admin/?m=srv&a=upload&image_audit=1)
    3. 映射字段 → 根据实际上传接口返回结构
    4. 保存到服务器 → updateProfileAPI({ avatar: {...} })
  • 字段映射关系
    • name: data.data.file.name
    • hash: data.data.res.hash
    • src: data.data.src
    • height: data.data.heightdata.data.res.image_info.height
    • width: data.data.widthdata.data.res.image_info.width
    • size: data.data.file.sizedata.data.res.filesize
  • 实现位置:src/pages/avatar/index.vue:75-186
  • API 文档:docs/api-specs/user/update_profile.md

通用模块

接口 1: 获取七牛上传 Token(已废弃)

接口信息

  • 接口名称: qiniuTokenAPI
  • 接口路径: /srv/?a=upload
  • 请求方法: POST
  • 负责页面: src/pages/avatar/index.vue(已废弃)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看
2026-02-03 v1.1 标记为已废弃 改用直接上传方式 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 - 后端开发中 - ⏳ 后端开发中
2026-02-03 - 方案调整 改用 Taro.uploadFile 直接上传 ❌ 已废弃

接口状态: ❌ 已废弃

废弃原因:

  • 头像上传改用 Taro.uploadFile 直接上传到服务器(参考老来赛项目)
  • 不再需要七牛云上传流程
  • 简化了上传流程,减少了接口调用次数

备注:

  • 参数:filename(文件名)、file(图片 base64)
  • 返回七牛上传 token、upload_url、filekey
  • 实现位置:src/api/common.js:32

接口 2: 保存文件信息(已废弃)

接口信息

  • 接口名称: saveFileAPI
  • 接口路径: /srv/?a=upload&t=save_file
  • 请求方法: POST
  • 负责页面: src/pages/avatar/index.vue(已废弃)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看
2026-02-03 v1.1 标记为已废弃 改用直接上传方式 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 - 后端开发中 - ⏳ 后端开发中
2026-02-03 - 方案调整 改用 Taro.uploadFile 直接上传 ❌ 已废弃

接口状态: ❌ 已废弃

废弃原因:

  • 头像上传改用 Taro.uploadFile 直接上传到服务器
  • 不再需要七牛云上传后保存文件信息的流程

备注:

  • 参数:format(文件格式)、hash(文件 hash)、height(图片高)、width(图片宽)、filekey(文件 key)
  • 七牛上传成功后,将文件信息保存到服务器
  • 实现位置:src/api/common.js:53

接口 3: 上传图片到七牛云(完整流程)(已废弃)

接口信息

  • 接口名称: uploadImageToQiniuAPI
  • 接口路径: 封装接口(内部调用 qiniuTokenAPI、七牛上传、saveFileAPI
  • 请求方法: 封装函数
  • 负责页面: src/pages/avatar/index.vue(已废弃)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看
2026-02-03 v1.1 标记为已废弃 改用直接上传方式 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/avatar/index.vue 后端开发中 - ⏳ 后端开发中
2026-02-03 src/pages/avatar/index.vue 方案调整 改用 Taro.uploadFile 直接上传 ❌ 已废弃

接口状态: ❌ 已废弃

废弃原因:

  • 改用 Taro.uploadFile 直接上传到服务器(/admin/?m=srv&a=upload&image_audit=1
  • 不再需要七牛云上传流程,简化了实现

备注:

  • 原完整上传流程:
    1. 读取本地文件为 base64
    2. 获取七牛上传 token(调用 qiniuTokenAPI
    3. 上传到七牛云(调用 qiniuUploadAPI
    4. 保存文件信息到服务器(调用 saveFileAPI
  • 新上传流程:
    1. 使用 Taro.chooseImage 选择图片
    2. 使用 Taro.uploadFile 直接上传到服务器
    3. 服务器返回图片 URL(支持图片审核)
  • 实现位置:src/api/common.js:77-150(已废弃)
  • 新实现位置:src/pages/avatar/index.vue:75-115

意见反馈模块

接口 1: 意见反馈列表

接口信息

  • 接口名称: listAPI
  • 接口路径: /srv/?a=feedback&t=list
  • 请求方法: GET
  • 负责页面: src/pages/feedback-list/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/feedback-list/index.vue 生命周期钩子导入错误 useShowuseDidShow ✅ 已解决
2026-02-03 src/pages/feedback-list/index.vue onMounted 导入错误 从 Vue 导入而非 Taro ✅ 已解决
2026-02-03 src/pages/feedback-list/index.vue 图片显示错误 images 改为数组格式处理 ✅ 已解决
2026-02-03 src/pages/feedback-list/index.vue NutUI Loading 组件报错 使用自定义 CSS spinner ✅ 已解决
2026-02-03 src/pages/feedback-list/index.vue 联调完成 列表加载、分页、图片预览均正常 ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 参数:page(页码,从0开始)、limit(每页数量)
  • 返回反馈列表,包含状态、类别、图片、回复等信息
  • 实现位置:src/pages/feedback-list/index.vue:183-214
  • 列表支持分页加载和滚动到底部自动加载更多
  • 使用 useDidShow 实现从提交页返回时自动刷新列表

接口 2: 提交意见反馈

接口信息

  • 接口名称: addAPI
  • 接口路径: /srv/?a=feedback&t=add
  • 请求方法: POST
  • 负责页面: src/pages/feedback/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看
2026-02-03 v1.1 更新接口名称 submitFeedbackAPIaddAPI 查看
2026-02-03 v1.2 更新参数格式 images 改为数组格式 查看
2026-02-03 v1.3 移除 contact 参数 不再需要联系方式字段 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/feedback/index.vue 联调完成 支持类型选择、图片上传、表单验证 ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 参数:category(反馈类别)、note(反馈内容)、images(图片数组,可选)
  • 类别:1=功能建议, 3=问题反馈, 7=其他问题
  • 图片上传限制:最多3张,每张不超过5MB
  • 图片上传支持审核,不通过时提示用户
  • 实现位置:src/pages/feedback/index.vue:193-232

产品模块

接口 1: 产品列表

接口信息

  • 接口名称: listAPI
  • 接口路径: /srv/?a=get_product&t=list
  • 请求方法: GET
  • 负责页面: src/pages/index/index.vue (首页热卖产品模块)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/index/index.vue 联调完成 热卖产品列表、动态标签均正常 ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 调用参数: recommend: 'hot' (热卖产品)
  • 首页场景: 不传 limit、page、cid 参数,使用默认值
  • 返回数据结构:
    • data.list[] - 产品列表
    • data.categories[] - 分类列表
    • data.total - 产品总数
  • 产品字段:
    • id - 产品ID
    • product_name - 产品名称
    • recommend - 推荐位 (normal-普通, hot-热卖)
    • tags[] - 产品标签数组(包含 id、name、bg_color、text_color)
    • cover_image - 产品封面图
    • categories[] - 产品所属分类
  • 标签渲染: 使用 API 返回的 bg_colortext_color 动态设置标签样式
  • 实现位置: src/pages/index/index.vue:250-262, src/pages/index/index.vue:52-92

接口 2: 产品详情

接口信息

  • 接口名称: detailAPI
  • 接口路径: /srv/?a=get_product&t=detail
  • 请求方法: GET
  • 负责页面: src/pages/product-detail/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/product-detail/index.vue nut-loading 组件报错 改用纯 CSS 加载动画 ✅ 已解决
2026-02-03 src/pages/product-detail/index.vue 联调完成 产品详情、富文本描述、附件列表均正常 ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 调用参数: i: productId (产品ID)
  • 返回数据结构:
    • product_name - 产品名称
    • product_description - 产品描述(富文本HTML)
    • cover_image - 产品封面图
    • recommend - 推荐位
    • tags[] - 产品标签数组(包含 id、name、bg_color、text_color)
    • documents[] - 附件列表
    • categories[] - 产品所属分类
  • 富文本渲染: 使用 <rich-text> 组件渲染 product_description 字段
  • 附件显示:
    • 文件名: doc.file_name
    • 文件大小: doc.file_size_formatted (已格式化,如 "72.61 KB")
    • 文件URL: doc.file_url
    • 点击预览: 通过 useFileOperation composable 打开文档
  • 移除功能: 原有的收藏功能已移除(按钮和代码)
  • 实现位置: src/pages/product-detail/index.vue:135-162, src/pages/product-detail/index.vue:56-92

消息模块

接口 1: 我的消息列表

接口信息

  • 接口名称: myListAPI
  • 接口路径: /srv/?a=website_msg&t=my_list
  • 请求方法: GET
  • 负责页面: src/pages/message/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看
2026-02-13 v1.1 更新 API 为已联调状态 接口调试完成 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 - 后端开发中 - ⏳ 后端开发中
2026-02-13 src/pages/message/index.vue - ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 参数:page(页码)、limit(每页数量)
  • 返回用户消息列表
  • API 已可用,前端集成完成

接口 2: 消息详情

接口信息

  • 接口名称: detailAPI
  • 接口路径: /srv/?a=website_msg&t=detail
  • 请求方法: GET
  • 负责页面: src/pages/message-detail/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看
2026-02-13 v1.1 更新 API 为已联调状态 接口调试完成 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 - 后端开发中 - ⏳ 后端开发中
2026-02-13 src/pages/message-detail/index.vue - ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 参数:i(消息ID)
  • 返回消息详情,包含 title 字段
  • API 已可用,前端集成完成,支持计划书关联展示

产品模块

接口 1: 产品列表

接口信息

  • 接口名称: listAPI
  • 接口路径: /srv/?a=get_product&t=list
  • 请求方法: GET
  • 负责页面: src/pages/knowledge-base/index.vue, src/pages/index/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-03 src/pages/knowledge-base/index.vue 前端集成完成,待联调 API 接口开发中 ⏳ 待联调
2026-02-03 src/pages/knowledge-base/index.vue 联调完成 接口正常工作,分类筛选、分页加载均正常 ✅ 已完成
2026-02-03 src/pages/index/index.vue 联调完成 热卖产品列表正常显示 ✅ 已完成

接口状态: ✅ 已完成

数据结构:

{
  "code": 1,
  "data": {
    "categories": [
      { "id": 2769851, "name": "分类名称" }
    ],
    "list": [
      {
        "id": 2769856,
        "product_name": "产品名称",
        "recommend": "hot",  // normal-普通, hot-热卖
        "form_sn": "customize_jsj_pnzuky",
        "created_time": "2026-02-03 10:36:29",
        "categories": [
          { "id": "2769851", "name": "分类名称" }
        ],
        "tags": [
          { "id": "2769847", "name": "标签名", "bg_color": "#3e5160", "text_color": "#ffffff" }
        ],
        "cover_image": "https://cdn.ipadbiz.cn/..."
      }
    ],
    "total": 3
  }
}

备注:

  • 参数:
    • page: 页码(从 0 开始)
    • limit: 每页数量(默认 10)
    • cid: 分类 ID(可选,用于筛选)
    • recommend: 推荐位(可选,normal/hot)
  • 实现位置:
    • src/pages/knowledge-base/index.vue:141-192 (fetchProducts 函数)
    • src/pages/index/index.vue:98-130 (热卖产品)
  • 功能特性:
    • 动态标签栏:从 data.categories 生成
    • 分类筛选:点击分类传递 cid 参数,重置分页状态
    • 滚动加载:使用 scroll-view 组件,监听 @scrolltolower 事件
    • 严格遵循 API 字段映射:
    • product_name (产品名称)
    • cover_image (封面图)
    • recommend (推荐状态: hot/normal)
    • tags (动态标签,含 bg_color/text_color)

收藏模块

接口 1: 添加收藏

接口信息

  • 接口名称: addAPI
  • 接口路径: /srv/?a=favorite&t=add
  • 请求方法: POST
  • 负责页面: 待确认(产品详情页、资料详情页等)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-05 v1.2 更新状态:前端API已实现,待页面集成 API实现完成 查看
2026-02-04 v1.1 更新状态:后端已完成,前端待联调 后端开发完成 查看
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-05 src/api/favorite.js API已实现,待页面调用 ⏳ 待页面集成
2026-02-04 - 后端已完成,前端待联调 - ⏳ 待联调
2026-02-03 - 后端开发中 - ⏳ 后端开发中

接口状态: ⏳ 待页面集成

备注:

  • 参数:meta_id(文件ID)
  • 用于收藏产品或资料
  • 后端接口已完成
  • 前端API已实现:src/api/favorite.js:addAPI
  • 待产品详情页、资料详情页集成调用

接口 2: 取消收藏

接口信息

  • 接口名称: delAPI
  • 接口路径: /srv/?a=favorite&t=del
  • 请求方法: POST
  • 负责页面: src/pages/favorites/index.vue(我的收藏页面)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-05 v1.2 前端联调完成 收藏页面已接入 查看
2026-02-04 v1.1 更新状态:后端已完成,前端待联调 后端开发完成 查看
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-05 src/pages/favorites/index.vue 接入delAPI,删除功能正常 ✅ 已完成
2026-02-04 - 后端已完成,前端待联调 - ⏳ 待联调
2026-02-03 - 后端开发中 - ⏳ 后端开发中

接口状态: ✅ 已完成

备注:

  • 参数:meta_id(文件ID)
  • 用于取消收藏的产品或资料
  • 后端接口已完成
  • 前端已集成到收藏页面:src/pages/favorites/index.vue:onDelete()
  • 删除成功后从列表中移除该项

接口 3: 收藏列表

接口信息

  • 接口名称: listAPI
  • 接口路径: /srv/?a=favorite&t=list
  • 请求方法: GET
  • 负责页面: src/pages/favorites/index.vue(我的收藏页面)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-05 v1.2 前端联调完成 收藏页面已接入 查看
2026-02-04 v1.1 更新状态:后端已完成,前端待联调 后端开发完成 查看
2026-02-03 v1.0 初始版本 - 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-05 src/pages/favorites/index.vue 接入listAPI,列表展示正常 ✅ 已完成
2026-02-04 - 后端已完成,前端待联调 - ⏳ 待联调
2026-02-03 - 后端开发中 - ⏳ 后端开发中

接口状态: ✅ 已完成

备注:

  • 参数:
    • k(可选):搜索文件名
    • page:页码,从 0 开始
    • limit:每页数量
  • 返回数据结构: javascript { code: 1, data: { list: [ { meta_id: 123, // 文件ID name: "文件名称", // 文件名称 src: "https://...", // 文件URL created_time: "2026-02-03 12:00:00", // 收藏时间 size: "1.2MB" // 文件大小 } ] } }
  • 后端接口已完成
  • 前端已集成到收藏页面:src/pages/favorites/index.vue:fetchFavoritesList()
  • 移除了分类Tabs逻辑,简化为统一列表展示
  • 支持加载状态、空状态、错误处理

文档模块

接口 1: 本周热门资料

接口信息

  • 接口名称: weekHotAPI
  • 接口路径: /srv/?a=file&t=week_hot
  • 请求方法: GET
  • 负责页面: src/pages/index/index.vue, src/pages/week-hot-material/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-09 v1.1 联调完成 前端集成调用,接口正常工作 查看
2026-02-04 v1.0 字段确认,更新接口文档 后端确认字段结构 查看
2026-02-04 v0.1 初稿版本 后端字段未确定,待联调确认 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-09 src/pages/index/index.vue 首页热门资料加载正常 ✅ 已完成
2026-02-09 src/pages/week-hot-material/index.vue 周热门资料页加载正常 ✅ 已完成
2026-02-04 - 后端字段已确认 待前端集成联调 ⏳ 待联调

接口状态: ✅ 已完成

备注:

  • 参数
    • page: 页码,从 0 开始
    • limit: 每页数量
  • 返回数据结构javascript { code: 1, data: { list: [ { meta_id: 123, // 文件ID name: "文件名称", // 文件名称 src: "https://...", // 文件URL size: "1.2MB", // 文件大小 read_people_count: 100, // 学习人数 read_people_percent: 85.5 // 学习人数比例 } ] } }
  • 字段确认状态:✅ 字段已确认
  • 实现位置
    • src/api/file.js:weekHotAPI
    • src/pages/index/index.vue:288 (调用位置)
    • src/pages/week-hot-material/index.vue:128 (调用位置)

接口 2: 文档列表

接口信息

  • 接口名称: fileListAPI
  • 接口路径: /srv/?a=file&t=file_list
  • 请求方法: GET
  • 负责页面: src/pages/material-list/index.vue, src/pages/category-list/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-09 v1.1 联调完成 前端集成调用,接口正常工作 查看
2026-02-04 v1.0 字段确认,更新接口文档 后端确认字段结构 查看
2026-02-04 v0.1 初稿版本 后端字段未确定,待联调确认 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-09 src/pages/material-list/index.vue 资料列表页加载正常 ✅ 已完成
2026-02-09 src/pages/category-list/index.vue 分类列表页加载正常 ✅ 已完成
2026-02-04 - 后端字段已确认 待前端集成联调 ⏳ 待联调

接口状态: ✅ 已完成

备注:

  • 参数
    • client_id: 主体 ID(可选)
    • cid: 分类 ID(可选)
    • page: 页码(从 0 开始)
    • limit: 每页数量
  • 返回数据结构javascript { code: 1, data: { cate: { id: 2769851, // 分类id category_name: "分类名称", // 分类名称 category_parent: 0, // 分类父级 icon: "https://..." // 分类图标 }, children: [ { id: 2769852, // 二级分类id category_name: "二级分类名", category_parent: 2769851, // 二级分类父级id icon: "https://...", // 二级分类图标 list: [...], // 二级分类的附件列表 children: [...] // 三级分类 } ], list: [ { name: "附件名称", // 附件名称 value: "https://...", // 附件地址 extension: "pdf", // 后缀名 post_date: "2026-02-04", // 发布时间 size: "2.5MB", // 附件大小 id: "12345" // 附件id } ], total: 100, // 主分类附件数量 max_level: "3" // 层级 } }
  • 字段确认状态:✅ 字段已确认
  • 接口路径更正/srv/?a=file&t=file_list(之前错误为 /srv/?a=get_file_list&t=file_list
  • 实现位置
    • src/api/file.js:fileListAPI
    • src/pages/material-list/index.vue:290 (调用位置)
    • src/pages/category-list/index.vue:112 (调用位置)

搜索模块

接口 1: 搜索(产品、资料)

接口信息

  • 接口名称: searchAPI
  • 接口路径: /srv/?a=search
  • 请求方法: GET
  • 负责页面: src/pages/search/index.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-06 v1.0 初始版本 前端集成完成,联调成功 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-06 src/pages/search/index.vue 实时搜索、分页加载均正常 ✅ 已完成

接口状态: ✅ 已完成

备注:

  • 参数:
    • k: 搜索关键字(必需)
    • type: 搜索类型,product=产品,file=资料(必需)
    • page: 页码,从 0 开始
    • limit: 每页数量(默认 10)
  • 返回数据结构javascript { code: 1, data: { list: [...], // 搜索结果列表 total: 100 // 总数 } }
  • 产品字段:
    • id - 产品ID
    • product_name - 产品名称
    • tags[] - 产品标签(含 bg_color/text_color)
    • cover_image - 封面图
    • form_sn - 计划书模板标识
  • 资料字段:
    • id - 文件ID
    • title - 文件标题
    • fileName - 文件名
    • fileSize - 文件大小
    • extension - 文件扩展名
    • downloadUrl - 下载链接
    • learners - 学习人数
    • readPeoplePercent - 学习人数比例
    • collected - 是否已收藏
  • 实现位置: src/pages/search/index.vue:204-265 (performSearch 函数)
  • 功能特性:
    • 实时搜索:输入关键字后自动调用API
    • 双Tab切换:支持产品和资料切换
    • 分页加载:触底自动加载更多
    • 结果统计:显示找到的相关结果数量
    • 动画效果:列表项逐个淡入动画

埋点模块

接口 1: 添加埋点

接口信息

  • 接口名称: addAPI
  • 接口路径: /srv/?a=event&t=add
  • 请求方法: POST
  • 负责页面: src/composables/useEventTracking.js (埋点功能)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-09 v1.1 联调完成 前端集成调用,接口正常工作 查看
2026-02-04 v1.0 初始版本 后端已完成,前端待联调 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-09 src/composables/useEventTracking.js 埋点功能正常,接口调用成功 ✅ 已完成
2026-02-04 - 后端已完成,前端待联调 - ⏳ 待联调

接口状态: ✅ 已完成

备注:

  • 参数:
    • type(类型):READ_FILE=阅读素材
    • object_id(文件ID)
  • 用于记录用户行为埋点
  • 后端接口已完成
  • 前端已集成到 useEventTracking.js composable
  • 实现位置:src/api/event.js:addAPI, src/composables/useEventTracking.js:76

模块模板

复制下方模板添加新接口:

#### 接口 X: [接口名称]

**接口信息**
- **接口名称**: `xxx`
- **接口路径**: `/srv/?a=xxx`
- **请求方法**: GET/POST
- **负责页面**: `src/pages/xxx/index.vue`
- **负责人**: XXX

**接口文档更新记录**

| 日期 | 版本 | 变更内容 | 变更原因 | 文档链接 |
|------|------|---------|---------|---------|
| YYYY-MM-DD | vX.X | - | - | [查看](#) |

**页面调试情况**

| 日期 | 调试页面 | 问题记录 | 解决方案 | 状态 |
|------|---------|---------|---------|------|
| YYYY-MM-DD | `pages/xxx/index.vue` | - | - | ⏳ 未开始 |

**接口状态**: ⏳ 未开始

**备注**:
-

🔍 问题汇总

高优先级问题 🔴

问题描述 接口名称 负责人 预计解决时间
后端接口还有点问题,接口尚未完全可用 addAPI, listAPI 后端开发 待定

中优先级问题 🟡

问题描述 接口名称 负责人 预计解决时间
消息模块接口尚未编写 myListAPI, detailAPI 后端开发 待定

低优先级问题 🟢

问题描述 接口名称 负责人 预计解决时间
- - - -

📈 进度追踪

本周进度 (2026-02-03 ~ 2026-02-09)

  • 新增接口: 2
  • 完成联调: 3
  • 组件优化: 2
  • 代码清理: 1
  • 已废弃: 0
  • 待联调: 7
  • 后端开发中: 2
  • 规划中: 1

历史进度

完成数 新增数 废弃数 问题数
2026-02-03 ~ 2026-02-09 3 2 0 0
2026-01-27 ~ 2026-02-04 12 17 3 0

计划书模块

接口 1: 提交计划书表单

接口信息

  • 接口名称: submitPlanAPI(待实现)
  • 接口路径: /srv/?a=submit_plan(待确认)
  • 请求方法: POST
  • 负责页面: src/components/PlanFormContainer.vue
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-09 v1.0 初始版本 前端表单已完成,待后端接口开发 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-09 src/components/PlanFormContainer.vue 表单提交时数据为空 修复 submit() 时序问题,移除立即重置 ✅ 已解决
2026-02-09 src/components/PlanFormContainer.vue 金额显示为 10000 而非 100.00 添加 formatAmounts() 格式化显示(分 → 元) ✅ 已解决
2026-02-10 src/api/plan.js 后端接口已修复,联调成功 接口正常工作 ✅ 已完成
2026-02-11 src/components/PlanFormContainer.vue 前端优化成功判断逻辑 修改成功判断从 res.code === 1 改为同时检查 res.code === 1res.data?.order_id ✅ 已完成
2026-02-11 src/components/PlanFormContainer.vue 错误信息路径修正 修改错误信息从 res.data?.message 改为 res.data?.msg,添加降级方案 ✅ 已完成
2026-02-11 src/pages/product-detail/index.vue, src/pages/search/index.vue, src/pages/product-center/index.vue, src/pages/index/index.vue 统一页面处理逻辑 修改所有页面的 handlePlanSubmit 函数,实现完整的错误处理和导航 ✅ 已完成

接口状态: ✅ 已完成

✅ 功能说明:

  • 接口已正常工作,支持计划书表单提交
  • 前端已完成字段映射(smoker → smoking_status)
  • 前端已完成术语统一("客户姓名" → "申请人")

数据单位规范(重要):

  • 金额字段单位: 分(非元)
  • 金额字段列表: coverage, premium, amount, total_amount
  • 存储格式: 整数(如 10000 表示 100.00 元)
  • 显示格式: 除以 100 并保留 2 位小数

转换公式

// 元 → 分(提交给后端)
const cents = Math.round(yuan * 100)

// 分 → 元(前端显示)
const yuan = (cents / 100).toFixed(2)

请求参数格式(待确认):

{
  product_id: 1,                    // 产品ID
  form_sn: 'life-insurance-wiop3e',  // 表单模版标识
  form_data: {                      // 表单数据
    coverage: 10000,               // 保额(分)← 注意单位
    gender: 'male',
    age: 30,
    birthday: '1994-01-01',
    smoker: false,
    payment_period: 20
  }
}

响应格式(待确认):

{
  code: 1,                        // 1 表示成功
  data: {
    plan_id: 123,                // 计划书ID
    status: 'processing',         // 状态:processing(生成中) | generated(已完成)
    download_url: ''              // 下载链接(生成完成后才有)
  },
  msg: '提交成功'
}

备注:

  • ⚠️ 重要: 所有金额字段内部存储单位都是"分",不是"元"
  • ✅ 前端已实现表单验证和数据格式化
  • ✅ 日志输出同时显示格式化数据(元)和原始数据(分),便于调试
  • ⏳ 后端接口待开发,当前仅为前端测试
  • 📝 详细注意事项:接口联调注意事项

实现位置

  • src/components/PlanFormContainer.vue:250-285 - submit() 函数
  • src/components/PlanFormContainer.vue:220-241 - formatAmounts() 函数
  • src/components/PlanFields/AmountKeyboard.vue - 金额输入组件

接口 2: 查询计划书状态(待实现)

接口信息

  • 接口名称: getPlanStatusAPI(待实现)
  • 接口路径: /srv/?a=get_plan_status(待确认)
  • 请求方法: GET
  • 负责页面: 待确认(计划书结果页?)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-09 v1.0 初始版本 接口规划 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
- - - - ⏳ 未开始

接口状态: ⏳ 未开始

备注:

  • 用于轮询查询计划书生成状态
  • 参数:plan_id(计划书ID)
  • 返回生成状态和下载链接
  • 如需轮询功能,建议使用 setInterval 每 2-3 秒查询一次

接口 3: 我的计划书列表

接口信息

  • 接口名称: listAPI(新增计划书列表)
  • 接口路径: /srv/?a=proposal&t=list
  • 请求方法: GET
  • 负责页面: src/pages/plan/index.vue(我的计划书页面)
  • 负责人: 后端团队

接口文档更新记录

日期 版本 变更内容 变更原因 文档链接
2026-02-10 v1.1 更新状态:联调中,后端还有点问题 开始联调调试 查看
2026-02-09 v1.0 初始版本 发现页面使用Mock数据,缺少API接口 查看

页面调试情况

日期 调试页面 问题记录 解决方案 状态
2026-02-09 src/pages/plan/index.vue 使用Mock数据(allList) 替换为真实API调用 ✅ 已完成
2026-02-10 src/pages/plan/index.vue 数据结构与API文档不一致 调整transformApiItem处理对象数组 ✅ 已完成
2026-02-10 src/pages/plan/index.vue 状态映射错误(3=生成中,5=已生成) 修正mapOrderStatus函数 ✅ 已完成
2026-02-10 src/pages/plan/index.vue 后端不支持order_status查询参数 实现前端过滤作为临时方案 ⚠️ 待后端修复

接口状态: ⚠️ 待后端修复

⚠️ 当前问题:

  • 🔴 后端API缺少关键查询参数
    1. 分页参数pagelimit(当前不支持)
    2. 状态筛选参数order_status(当前不支持)
    3. 搜索参数keyword(可能不支持)
  • 后端API当前只支持固定的路由参数(f, a, t),不支持任何查询参数
  • 前端已实现临时解决方案(前端过滤),但存在以下问题:

    • 性能问题:需要加载全部数据后再筛选
    • 分页不准确:可能加载的页面数据不包含指定状态的记录
    • 内存占用:所有数据都在前端
  • ⚠️ 状态值不确定

    • 当前前端推测:order_status = "3" = 生成中,order_status = "5" = 已生成
    • 实际状态值需要与后端确认
    • 请后端提供准确的状态值定义文档

✅ 已实现的前端解决方案:

// API调用(不传order_status)
const res = await listAPI({ page, limit })

// 前端过滤(临时方案)
if (activeTabId.value !== '') {
  apiList = apiList.filter(item => item.order_status === activeTabId.value)
}
  • 位置:src/pages/plan/index.vue:216-275

备注:

  • 功能: 获取用户提交的计划书列表
  • ⚠️ 当前不支持任何查询参数:后端API只接受固定路由参数(f, a, t
  • 🔴 缺少的关键参数(需后端添加):
    1. page - 页码(从 1 开始)
    2. limit - 每页数量(默认 20)
    3. order_status - 订单状态筛选(状态值需与后端确认
    4. keyword - 搜索关键字(可选)
  • 实际返回数据结构(已验证): javascript { code: 1, data: { list: [ { id: 3149353, customer_name: "测试人1", // 申请人 product_name: "终身寿险尊享版", // 产品名 categories: [{ // 分类(对象数组) id: "3129418", name: "人寿产品" }], created_time: "2026-02-10 18:39:33", order_status: "3", // "3"=生成中, "5"=已生成 proposal_files: [{ // 生成的计划书文件 file_name: "preview.pdf", file_url: "https://cdn.ipadbiz.cn/..." }] } ], total: "2" } }
  • 实现位置: src/pages/plan/index.vue:216-275 - fetchPlanList函数
  • 数据转换: src/pages/plan/index.vue:180-201 - transformApiItem函数

📌 快速索引

按状态查看

按模块查看

按负责人查看


📖 使用说明

状态标识

  • 已完成 - 接口正常工作,测试通过
  • 🔄 联调中 - 正在调试,部分功能可用
  • 未开始 - 尚未开始联调
  • ⚠️ 有阻塞 - 遇到阻塞问题,无法继续

优先级标识

  • 🔴 高优先级 - 影响核心功能,需要立即处理
  • 🟡 中优先级 - 影响次要功能,需要尽快处理
  • 🟢 低优先级 - 优化类问题,可以稍后处理

记录时机

  • 接口文档更新时: 记录到"接口文档更新记录"表格
  • 页面联调时: 记录到"页面调试情况"表格
  • 发现问题: 记录到对应接口的调试情况,并同步到"问题汇总"
  • 解决问题: 更新调试情况的状态,并从"问题汇总"中移除或标记为已解决

维护建议

  1. 定期更新: 每天结束前更新当天的工作记录
  2. 同步会议: 在前后端对接会议上,根据此文档讨论问题
  3. 版本控制: 重要的接口变更应该提交到 Git,便于追溯

最后更新时间: 2026-02-10 15:20 文档版本: v2.9 更新内容:

  • 🔄 计划书模块状态更新
    • addAPI(新增计划书): 从"后端开发中" → "联调中"
    • listAPI(计划书列表): 从"后端开发中" → "联调中"
    • ⚠️ 问题:后端还有点问题,正在联调调试中
  • 📝 新增接口状态:"联调中"(2个接口)
  • 🔴 新增问题汇总:记录计划书接口联调问题
  • 📊 进度统计更新
    • 总接口数:29
    • 已完成:24 (82.8%)
    • 联调中:2 (6.9%) ← 新增
    • 后端开发中:2 (6.9%) ← 减少

历史版本:

  • v2.8 (2026-02-09 21:40): 新增计划书模块
  • v2.6 (2026-02-09 00:40): 新增计划书模块

历史版本:

  • v2.6 (2026-02-09 00:40): 新增计划书模块
  • v2.5 (2026-02-06): 搜索模块联调完成,新增可复用卡片组件
  • v2.1 (2026-02-03 21:00): 产品模块联调完成
  • v2.0 (2026-02-03 20:40): 新增产品模块
  • v1.9 (2026-02-03 20:30): 新增收藏模块
  • v1.8 (2026-02-03 20:00): 用户中心模块头像接口修复
  • v1.7 (2026-02-03 23:30): 产品模块联调完成
  • v1.6 (2026-02-02): 意见反馈模块联调完成