7b62c2f8b4
## H5 底部导航修复 (Bug #10) - 精简 App.vue,移除重复 tabbar,仅保留全局样式 - uni-page 设置 height: calc(100% - 50px) + overflow-y: auto - 内容区域精确停在底部导航上方,独立滚动不再叠加 - 恢复 custom-tab-bar 组件 ## 项目进度文档 - PROGRESS.md 更新至 10 个 Bug 修复 - 新增 H5 底部导航修复记录 - 新增历史变更条目
12 KiB
12 KiB
外贸小助手 (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未配置,前端微信登录按钮无实际功能 - 改动量: 纯配置(需微信开放平台账号)
- 涉及文件:
.env、backend/app/api/v1/auth.py、uni-app/src/pages/login/login.vue - 验收: 用户可点击微信授权登录
2.2 隐私政策 & 用户协议页面
- 问题: 小程序审核必需要求,当前无任何法律文档页面
- 改动量: 新增 2 个静态页面
- 涉及文件:
uni-app/src/pages/agreement/privacy.vue、uni-app/src/pages/agreement/terms.vue、pages.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:11的require_admin无实际校验,任何持有 token 的用户都能改其他用户的 Tier - 改动量: 增加用户角色字段 + 权限校验
- 涉及文件:
backend/app/models/user.py、backend/app/api/v1/admin.py - 验收: 普通用户访问 admin 接口返回 403
2.5 前端 API 重复定义清理
- 问题:
api.js中translateApi和customerApi各定义了两遍(第 43 行和第 116 行、第 50 行和第 124 行),后者会覆盖前者但内容不一致(后者多了tts和importCustomers) - 改动量: 合并重复定义,保留完整版本
- 涉及文件:
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.vue、backend/app/services/analytics.py - 状态: ✅ 已完成(首页和数据分析页面数据均来自真实接口)
3.3 报价单 PDF 生成
对应: 功能设计 §2.5
- 后端:
pdf_generator.py引用了weasyprint但该库未在requirements.txt中,且当前生成逻辑是纯文本 - 改动:
- 将
weasyprint加入requirements.txt - 安装系统依赖(
libpango、libcairo等) - 实现正式的 HTML→PDF 模板渲染
- 将
- 涉及文件:
backend/app/services/pdf_generator.py、backend/requirements.txt - 状态: ✅ 已完成(weasyprint 模板 + HTML→PDF 渲染)
- 验收:
/quotations/{id}/pdf返回真实 PDF 文件
3.4 TTS 前端集成
对应: 功能设计 §2.3
- 后端:
tts.py已实现 - 前端: 翻译页面需添加"播放"按钮调用 TTS API
- 涉及文件:
uni-app/src/pages/translate/translate.vue、backend/app/api/v1/translate.py - 状态: ✅ 已完成(后端增加 GET 端点适配前端 downloadFile)
- 验收: 翻译结果可点击播放语音
3.5 错误监控接入
对应: 架构安全
- 接入 Sentry 或其他错误监控服务
- 后端:
sentry-sdk集成到 FastAPI - 前端:
uni-app错误捕获上报 - 涉及文件:
backend/app/main.py、backend/app/config.py、backend/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.py、backend/app/api/v1/notification.py、backend/app/services/notification.py、uni-app/src/pages/notification/notification.vue - 额外: Celery 沉默客户检测任务同时写入应用内通知
- 状态: ✅ 已完成
- 验收: 沉默客户提醒、系统通知等在应用内可见
4.3 数据导出
- 客户列表导出 CSV
- 报价单批量导出 CSV
- 涉及文件:
backend/app/services/export.py、backend/app/api/v1/customer.py、backend/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.py、backend/app/main.py - 状态: ✅ 已完成
- 验收: 超过限制返回 429
4.5 用户反馈 & 帮助系统
- 反馈提交(Bug/功能建议/其他)
- 常见问题 FAQ(内置 4 条常见问题)
- 涉及文件:
backend/app/models/feedback.py、backend/app/api/v1/feedback.py、uni-app/src/pages/feedback/feedback.vue - 状态: ✅ 已完成
- 验收: 用户可提交反馈并查看常见问题
五、P3 — 护城河建设(4-6 周)
5.1 AI 编辑学习回路
对应: 护城河 §5.1
当前 messages 表已有 ai_suggestions、selected_suggestion、user_edited 字段:
- 用户选择某个 AI 建议 → 记录正反馈(signal) ✅
- 用户修改 AI 建议再发送 → 记录差异(diff) ✅
- 系统定期分析用户偏好风格 ✅
- 下次生成时使用用户偏好做 few-shot ✅
涉及文件:
backend/app/services/preference.py(新)— UserPreferenceServicebackend/app/api/v1/interaction.py(新)— 选择/编辑/分析 APIbackend/app/models/preference.py(新)— PreferenceAnalysis 模型backend/app/ai/router.py— 注入 preference_contextbackend/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 layerbackend/app/api/v1/marketing.py— 同上backend/app/services/translation.py— 透传 preference_contextbackend/app/services/marketing.py— 透传 preference_contextuni-app/src/utils/api.js— 新增 interactionApi
验收: 用户多次编辑后,AI 回复风格逐渐接近用户习惯
5.2 营销效果追踪
对应: 功能设计 §2.2
- 记录用户复制了哪些营销文案 ✅
- 记录用户发送了哪些文案 ✅
- 展示文案使用统计(复制次数、发送次数、效果评分) ✅
- 涉及文件:
backend/app/models/preference.py(MarketingEffect 模型)、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
- 风险评分算法(沉默天数 + 活跃度 + 谈判阶段 + 关键词检测) ✅
- 评分等级输出(high/medium/low/minimal) ✅
- 跟进建议生成 ✅
涉及文件:
backend/app/services/silent_pattern.py(新)— SilentPatternServicebackend/app/api/v1/silent_pattern.py(新)— 风险分析 + 建议 APIuni-app/src/utils/api.js— 新增 silentPatternApi
验收: 沉默客户列表显示风险评分等级及跟进建议
5.4 语料库离线训练
对应: AI架构 §4.3
corpus_entries表已有数据但无训练逻辑:- embedding 向量计算(OpenAI text-embedding-3-small) ✅
- 质量评分自动计算 ✅
- 重复数据去重 ✅
- 低质量数据清理 ✅
- Celery beat 每日定时训练 ✅
涉及文件:
backend/app/services/corpus_trainer.py(新)— 完整训练 pipelinebackend/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
从"手动填报价单"升级为"自动识别客户消息→生成报价单草稿":
extract_info识别客户询盘意图(产品、数量、贸易术语) ✅- 自动匹配产品库价格 ✅
- 生成报价单草稿(含 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 和定时任务)