Files
TradeMate Dev 7b62c2f8b4 feat: 修复 H5 底部导航覆盖 + 更新项目进度文档
## H5 底部导航修复 (Bug #10)
- 精简 App.vue,移除重复 tabbar,仅保留全局样式
- uni-page 设置 height: calc(100% - 50px) + overflow-y: auto
- 内容区域精确停在底部导航上方,独立滚动不再叠加
- 恢复 custom-tab-bar 组件

## 项目进度文档
- PROGRESS.md 更新至 10 个 Bug 修复
- 新增 H5 底部导航修复记录
- 新增历史变更条目
2026-05-12 20:24:42 +08:00

12 KiB
Raw Permalink Blame History

外贸小助手 (TradeMate) — 开发计划

版本: v1.0 创建日期: 2026-05-09 基于: 产品设计文档 & 技术架构文档 & 代码审查


一、阶段说明

按优先级分为 4 个阶段,每个阶段完成后可独立上线验证:

阶段 名称 目标 预估工时
P0 上线必须 小程序审核通过 + 核心链路跑通 2-3 天
P1 MVP 补齐 产品设计承诺的功能闭环 1-2 周
P2 体验增强 用户留存 + 付费转化 2-3 周
P3 护城河建设 AI 数据壁垒 + 网络效应 4-6 周

二、P0 — 上线必须(2-3 天)

2.1 微信登录配置

  • 问题: wechat.py 代码完整,但 WECHAT_APP_ID / WECHAT_APP_SECRET 未配置,前端微信登录按钮无实际功能
  • 改动量: 纯配置(需微信开放平台账号)
  • 涉及文件: .envbackend/app/api/v1/auth.pyuni-app/src/pages/login/login.vue
  • 验收: 用户可点击微信授权登录

2.2 隐私政策 & 用户协议页面

  • 问题: 小程序审核必需要求,当前无任何法律文档页面
  • 改动量: 新增 2 个静态页面
  • 涉及文件: uni-app/src/pages/agreement/privacy.vueuni-app/src/pages/agreement/terms.vuepages.json
  • 验收: 登录页底部展示协议链接,可点击打开

2.3 首页数据 Mock 替换

  • 问题: index.vue:121 使用了 Math.floor(Math.random() * 20) 模拟今日翻译数和报价单数
  • 改动量: 接入真实统计 API
  • 涉及文件: uni-app/src/pages/index/index.vue
  • 验收: 首页所有数据来自后端真实接口

2.4 admin API 鉴权修复

  • 问题: admin.py:11require_admin 无实际校验,任何持有 token 的用户都能改其他用户的 Tier
  • 改动量: 增加用户角色字段 + 权限校验
  • 涉及文件: backend/app/models/user.pybackend/app/api/v1/admin.py
  • 验收: 普通用户访问 admin 接口返回 403

2.5 前端 API 重复定义清理

  • 问题: api.jstranslateApicustomerApi 各定义了两遍(第 43 行和第 116 行、第 50 行和第 124 行),后者会覆盖前者但内容不一致(后者多了 ttsimportCustomers
  • 改动量: 合并重复定义,保留完整版本
  • 涉及文件: uni-app/src/utils/api.js
  • 验收: 文件中每个 API 对象只出现一次

三、P1 — MVP 补齐(1-2 周)

3.1 新用户引导流程

对应产品设计: 用户旅程 §3.1 — 30 秒上手

步骤 说明
首次注册登录后 弹出引导弹窗:"你主要卖什么产品?"
输入产品信息 名称 + 描述 + 目标市场
自动生成 3 条营销文案 + 关键词建议
保存产品 写入产品库
跳转客户页 提示"添加或导入客户"

涉及文件:

  • uni-app/src/pages/index/index.vue — 首次登录检测 + 引导弹窗
  • backend/app/services/onboarding.py — 首次生成逻辑
  • backend/app/api/v1/onboarding.py — 引导 API

状态: 已完成

验收: 新注册用户登录后 30 秒内看到生成的营销文案

3.2 真实数据分析

对应: 首页仪表盘、数据分析页面

  • 后端: 统计 API 已存在(analytics.py),数据来自数据库查询
  • 前端: analytics.vue 已接入 analyticsApi.getOverview() 真实数据
  • 涉及文件: uni-app/src/pages/analytics/analytics.vuebackend/app/services/analytics.py
  • 状态: 已完成(首页和数据分析页面数据均来自真实接口)

3.3 报价单 PDF 生成

对应: 功能设计 §2.5

  • 后端: pdf_generator.py 引用了 weasyprint 但该库未在 requirements.txt 中,且当前生成逻辑是纯文本
  • 改动:
    1. weasyprint 加入 requirements.txt
    2. 安装系统依赖(libpangolibcairo 等)
    3. 实现正式的 HTML→PDF 模板渲染
  • 涉及文件: backend/app/services/pdf_generator.pybackend/requirements.txt
  • 状态: 已完成(weasyprint 模板 + HTML→PDF 渲染)
  • 验收: /quotations/{id}/pdf 返回真实 PDF 文件

3.4 TTS 前端集成

对应: 功能设计 §2.3

  • 后端: tts.py 已实现
  • 前端: 翻译页面需添加"播放"按钮调用 TTS API
  • 涉及文件: uni-app/src/pages/translate/translate.vuebackend/app/api/v1/translate.py
  • 状态: 已完成(后端增加 GET 端点适配前端 downloadFile
  • 验收: 翻译结果可点击播放语音

3.5 错误监控接入

对应: 架构安全

  • 接入 Sentry 或其他错误监控服务
  • 后端: sentry-sdk 集成到 FastAPI
  • 前端: uni-app 错误捕获上报
  • 涉及文件: backend/app/main.pybackend/app/config.pybackend/requirements.txt
  • 状态: 已完成(Sentry FastAPI + SQLAlchemy 集成,配置 SENTRY_DSN 即可启用)
  • 验收: 配置 SENTRY_DSN 后,故意制造错误可在监控平台看到

四、P2 — 体验增强(2-3 周)

4.1 付费/计费系统

对应: 盈利模式 §6

模块 说明
支付 API 接入微信支付(JSAPI)— 代码已完成,需微信支付商户号
订阅管理 subscriptions 表 + 到期自动降级
前端升级页 展示 Free/Pro/Enterprise 对比 + 支付按钮
配额联动 支付成功后自动更新 user.tier

涉及文件:

  • backend/app/models/subscription.py(新)
  • backend/app/api/v1/payment.py(新)
  • backend/app/services/payment.py(新)
  • uni-app/src/pages/upgrade/upgrade.vue(新)

状态: 代码已完成(需配置微信支付商户号后真正可用)

验收: 用户可完成从 free 到 pro 的完整支付升级流程

4.2 应用内通知中心

  • 改动:
    • 新增 notifications
    • 通知 API(列表/已读/删除/未读数)
    • 前端通知中心页面 + 首页未读红点
  • 涉及文件: backend/app/models/notification.pybackend/app/api/v1/notification.pybackend/app/services/notification.pyuni-app/src/pages/notification/notification.vue
  • 额外: Celery 沉默客户检测任务同时写入应用内通知
  • 状态: 已完成
  • 验收: 沉默客户提醒、系统通知等在应用内可见

4.3 数据导出

  • 客户列表导出 CSV
  • 报价单批量导出 CSV
  • 涉及文件: backend/app/services/export.pybackend/app/api/v1/customer.pybackend/app/api/v1/quotation.py
  • 状态: 已完成
  • 验收: 访问 /api/v1/customers/export/csv/api/v1/quotations/export/csv 下载文件

4.4 速率限制

对应: API设计 §5

  • 新增 RateLimitMiddleware,使用 Redis + 1 分钟窗口计数器
  • free: 100 req/min, pro: 500, enterprise: 2000
  • 超限返回 429,响应头携带 X-RateLimit-Remaining
  • 涉及文件: backend/app/core/middleware.pybackend/app/main.py
  • 状态: 已完成
  • 验收: 超过限制返回 429

4.5 用户反馈 & 帮助系统

  • 反馈提交(Bug/功能建议/其他)
  • 常见问题 FAQ(内置 4 条常见问题)
  • 涉及文件: backend/app/models/feedback.pybackend/app/api/v1/feedback.pyuni-app/src/pages/feedback/feedback.vue
  • 状态: 已完成
  • 验收: 用户可提交反馈并查看常见问题

五、P3 — 护城河建设(4-6 周)

5.1 AI 编辑学习回路

对应: 护城河 §5.1

当前 messages 表已有 ai_suggestionsselected_suggestionuser_edited 字段:

  1. 用户选择某个 AI 建议 → 记录正反馈(signal)
  2. 用户修改 AI 建议再发送 → 记录差异(diff)
  3. 系统定期分析用户偏好风格
  4. 下次生成时使用用户偏好做 few-shot

涉及文件:

  • backend/app/services/preference.py(新)— UserPreferenceService
  • backend/app/api/v1/interaction.py(新)— 选择/编辑/分析 API
  • backend/app/models/preference.py(新)— PreferenceAnalysis 模型
  • backend/app/ai/router.py — 注入 preference_context
  • backend/app/ai/providers/openai.py — 接受 preference_context 参数
  • backend/app/ai/providers/claude.py — 同上
  • backend/app/ai/providers/spark.py — 同上
  • backend/app/ai/providers/local.py — 同上
  • backend/app/api/v1/translate.py — getUserPreferenceContext + 传递到 AI layer
  • backend/app/api/v1/marketing.py — 同上
  • backend/app/services/translation.py — 透传 preference_context
  • backend/app/services/marketing.py — 透传 preference_context
  • uni-app/src/utils/api.js — 新增 interactionApi

验收: 用户多次编辑后,AI 回复风格逐渐接近用户习惯

5.2 营销效果追踪

对应: 功能设计 §2.2

  • 记录用户复制了哪些营销文案
  • 记录用户发送了哪些文案
  • 展示文案使用统计(复制次数、发送次数、效果评分)
  • 涉及文件: backend/app/models/preference.pyMarketingEffect 模型)、backend/app/services/marketing_effect.py(新)、backend/app/api/v1/interaction.py(效果追踪端点)、backend/app/services/analytics.py(增加 marketing stats)、backend/app/api/v1/analytics.py(增加 marketing 统计接口)
  • 验收: 营销素材页展示"已复制 15 次"等统计数据

5.3 沉默客户模式算法

对应: 护城河 §5.3

  1. 风险评分算法(沉默天数 + 活跃度 + 谈判阶段 + 关键词检测)
  2. 评分等级输出(high/medium/low/minimal
  3. 跟进建议生成

涉及文件:

  • backend/app/services/silent_pattern.py(新)— SilentPatternService
  • backend/app/api/v1/silent_pattern.py(新)— 风险分析 + 建议 API
  • uni-app/src/utils/api.js — 新增 silentPatternApi

验收: 沉默客户列表显示风险评分等级及跟进建议

5.4 语料库离线训练

对应: AI架构 §4.3

  • corpus_entries 表已有数据但无训练逻辑:
    1. embedding 向量计算(OpenAI text-embedding-3-small
    2. 质量评分自动计算
    3. 重复数据去重
    4. 低质量数据清理
    5. Celery beat 每日定时训练

涉及文件:

  • backend/app/services/corpus_trainer.py(新)— 完整训练 pipeline
  • backend/app/api/v1/training.py(新)— 训练触发端点
  • backend/app/workers/tasks.py — 新增 run_daily_corpus_training 定时任务
  • backend/app/celery_app.py — 注册 daily-corpus-training 定时器

验收: 语料库达到阈值后自动触发训练,翻译质量可量化提升

5.5 报价单智能生成

对应: 功能设计 §2.5

从"手动填报价单"升级为"自动识别客户消息→生成报价单草稿":

  1. extract_info 识别客户询盘意图(产品、数量、贸易术语)
  2. 自动匹配产品库价格
  3. 生成报价单草稿(含 matched/unmatched 标识)

涉及文件:

  • backend/app/services/quotation.py — 新增 generate_from_inquiry 方法
  • backend/app/api/v1/quotation.py — 新增 POST /quotations/generate-from-inquiry 端点
  • uni-app/src/utils/api.js — 新增 quotationApi.generateFromInquiry

验收: 客户说 "How much for 500pcs FOB Shanghai?" → 系统自动生成含金额的报价单草稿


六、工作量汇总

阶段 功能点 预估
P0 微信登录配置、隐私协议、Mock 替换、admin 鉴权、API 去重 2-3 天
P1 引导流程、数据分析、PDF、TTS、错误监控 1-2 周
P2 支付系统、通知中心、数据导出、速率限制、帮助反馈 2-3 周
P3 AI 编辑学习、效果追踪、沉默算法、语料库训练、智能报价 4-6 周

关键依赖

  • P0 无外部依赖,可立即开始
  • P1 PDF 需要服务器安装系统库(libpango, libcairo
  • P2 支付 需要微信支付商户号
  • P3 训练 需要语料库自然积累到一定规模后才有意义(已实现 pipeline 和定时任务)