## H5 底部导航修复 (Bug #10) - 精简 App.vue,移除重复 tabbar,仅保留全局样式 - uni-page 设置 height: calc(100% - 50px) + overflow-y: auto - 内容区域精确停在底部导航上方,独立滚动不再叠加 - 恢复 custom-tab-bar 组件 ## 项目进度文档 - PROGRESS.md 更新至 10 个 Bug 修复 - 新增 H5 底部导航修复记录 - 新增历史变更条目
10 KiB
外贸小助手 (TradeMate) — 功能差距修复计划
基于 2026-05-10 全量代码审计 将未完成/存根/未对接功能按优先级分为 FixP0-FixP3 四阶段
总体概况
| 类别 | 数量 | 说明 |
|---|---|---|
| 🔴 外部阻塞(代码就绪) | 4 项 | 微信登录/支付/WhatsApp/AI回退 — 需要配置密钥 |
| ⚠️ 部分实现/存根 | 4 项 | Push/汇率/PDF任务/weasyprint系统依赖 |
| ❌ 前端未对接 | 12 项 | 后端有API但前端无入口 |
| ✅ 完整实现 | ~25 项 | 核心链路前后端均对接 |
FixP0 — 上线阻塞(必须先修复)
F0.1 Push 推送重写
问题: PushService.send_notification() 只打印日志,无真实推送。设备注册用内存 dict。Celery 静默客户检测产出提醒但用户收不到。
方案:
- 新建
Device模型:user_id, platform, push_token, is_active, created_at - 重写
PushService:使用 uni-push 或第三方推送通道 POST /push/register改为写数据库send_notification()调用真实推送 SDK- Celery
check_silent_customers任务同时写 Notification + PushService
涉及文件:
backend/app/models/device.py(新)backend/app/models/__init__.pybackend/app/services/push.py(重写)backend/app/api/v1/push.py(重写)uni-app/src/utils/api.js(新增 pushApi)uni-app/src/pages/index/index.vue(注册设备 token)backend/alembic/versions/004_devices.py(新)
预估: 3-4 天(含前端 token 注册)
F0.2 汇率服务接入真实 API
问题: GET /api/v1/exchange/convert 和 GET /api/v1/exchange/rates 返回硬编码数据,EXCHANGE_RATE_API_KEY 未使用。
方案:
- 创建
ExchangeRateService:调用 exchangerate-api.com 或 国家外汇管理局 API - Redis 缓存 6 小时减少 API 调用
- 更新硬编码字典为动态查询
- 报价单界面增加汇率显示和币种切换
涉及文件:
backend/app/services/exchange.py(新 — 当前无 service)backend/app/api/v1/exchange.py(重写 — 移除硬编码)uni-app/src/utils/api.js(新增 exchangeApi)uni-app/src/pages/translate/translate.vue(报价单汇率开关)
预估: 1-2 天
F0.3 Celery PDF 任务修复
问题: workers/tasks.py:94 调用旧纯文本 generate_pdf_text() 而非 pdf_generator.generate_quotation()。
方案:
- 将 Celery 任务
generate_quotation_pdf改为调用pdf_generator.generate_quotation(data)并存储 blob
涉及文件:
backend/app/workers/tasks.py(重写 generate_quotation_pdf)backend/app/services/pdf_generator.py(增加保存 PDF 到磁盘方法)
预估: 0.5 天
F0.4 weasyprint 系统依赖文档化
问题: requirements.txt 有 weasyprint 但部署时需系统库,无文档说明。
方案:
- 在 README 和 docker-compose 中增加系统依赖安装说明
- 若使用 Docker,在 Dockerfile 中提前安装
RUN apt-get update && apt-get install -y libpango-1.0-0 libpangocairo-1.0-0 \
libgdk-pixbuf2.0-0 libffi-dev libcairo2 libcairo2-dev
涉及文件:
Dockerfile(新增或修改)README.md(增加安装说明)
预估: 0.5 天
FixP1 — 前端对接(补齐体验)
F1.1 TTS 播放按钮
问题: GET/POST /api/v1/translate/tts 后端已实现,翻译页无播放按钮,api.js 无 tts API。
方案:
api.js新增translateApi.textToSpeech(text, lang)translate.vue翻译结果后增加 🔊 播放按钮,调用uni.downloadFile→uni.playVoice
涉及文件:
uni-app/src/utils/api.jsuni-app/src/pages/translate/translate.vue
预估: 1 天
F1.2 信息抽取 + 翻译反馈 UI
问题: POST /translate/extract 和 POST /translate/feedback 有后端无前端。
方案:
- 翻译页增加"抽取信息"按钮(提取客户消息中的产品/数量/价格)
- 翻译结果增加 1-5 星评分,调用 feedback 端点写入 corpus quality_score
涉及文件:
uni-app/src/pages/translate/translate.vueuni-app/src/utils/api.js
预估: 1 天
F1.3 营销关键词 + 竞品分析按钮
问题: POST /marketing/keywords、POST /marketing/competitor-analysis 后端完整,前端营销页无入口。
方案:
marketingApi增加generateKeywords()和competitorAnalysis()marketing.vue生成结果下方增加"生成关键词"和"竞品分析"按钮
涉及文件:
uni-app/src/utils/api.jsuni-app/src/pages/marketing/marketing.vue
预估: 1 天
F1.4 营销效果统计展示
问题: interactionApi.trackMarketingEffect/stats 前端 API 已定义,marketing.vue 未展示统计数据。
方案:
marketing.vue增加统计卡片:"今日复制 X 次 / 今日发送 Y 次 / 本周共 Z 次"- 每次复制文案时调用
trackMarketingEffect({content, event_type:'copy'}) - 加载时调用
getMarketingEffectStats()
涉及文件:
uni-app/src/pages/marketing/marketing.vue
预估: 1 天
F1.5 AI 偏好展示 + 建议选择/编辑上报
问题: interactionApi.selectSuggestion/recordEdit/analyzePreferences 已定义,翻译页未对接交互学习回路。
方案:
- 翻译页回复建议列表:用户点击某条 → 调用
selectSuggestion(msgId, index) - 用户编辑后发送 → 调用
recordEdit(msgId, editedText) - 设置页增加"AI 学习偏好"展示区(调用
getPreferences())
涉及文件:
uni-app/src/pages/translate/translate.vueuni-app/src/pages/settings/settings.vue(如有)
预估: 2 天
F1.6 沉默客户风险展示
问题: silentPatternApi.getRiskAnalysis/getSuggestions 已定义,客户页未对接。
方案:
- 客户列表每项增加风险等级标识(🔴/🟡/🟢)
- 客户详情页增加"跟进建议"区域
- 调用
getRiskAnalysis()在客户页顶部展示风险概况
涉及文件:
uni-app/src/pages/customer/customer.vue(列表)uni-app/src/pages/customer/detail.vue(详情)
预估: 1.5 天
F1.7 智能报价按钮
问题: quotationApi.generateFromInquiry 已定义,报价单页未对接。
方案:
- 报价单列表页增加"从询盘生成"按钮
- 弹出输入框让用户粘贴客户询盘内容
- 调用 API 后预览自动填充的报价单草稿
涉及文件:
uni-app/src/pages/quotation/quotation.vueuni-app/src/pages/quotation/create.vue(如有)
预估: 1.5 天
F1.8 CSV 导出按钮
问题: GET /customers/export/csv 和 GET /quotations/export/csv 后端完成,前端无导出入口。
方案:
- 客户页和报价单页的导航栏增加"导出"按钮
- 使用
uni.downloadFile下载 CSV
涉及文件:
uni-app/src/pages/customer/customer.vueuni-app/src/pages/quotation/quotation.vue
预估: 0.5 天
F1.9 客户对话历史展示
问题: customerApi.getConversation 已定义,客户详情页未展示对话记录。
方案:
- 客户详情页增加"对话记录" tab
- 分页加载消息,显示发送/接收方向
涉及文件:
uni-app/src/pages/customer/detail.vue
预估: 1 天
FixP2 — 管理后台补齐
F2.1 训练后台面板
问题: POST /training/corpus/* 4 个端点后端完整,无前端入口。
方案:
- admin 页增加"语料库管理"标签
- 展示语料库统计(总数/高质/低质/嵌入数)
- 提供"运行训练"、"去重"、"清理"按钮
涉及文件:
uni-app/src/pages/admin/admin.vueuni-app/src/utils/api.js(新增 trainingApi)
预估: 1 天
F2.2 反馈管理 + 用户管理增强
问题: admin 面板只能看用户列表和改 tier,无反馈管理、系统监控。
方案:
GET /admin/feedbacks端点- admin 页增加"用户反馈"标签:列表/标记处理
- 增加系统状态监控(Celery 队列长度、Redis 状态)
涉及文件:
backend/app/api/v1/admin.py(新增反馈列表端点)uni-app/src/pages/admin/admin.vue
预估: 2 天
FixP3 — 深层清理
F3.1 汇率集成报价单
问题: 报价单创建/编辑时不可切换币种,无实时汇率。
方案:
- 报价单创建页增加币种选择(USD/CNY/EUR/GBP/JPY)
- 调用 ExchangeRateService 自动换算
- 报价单 PDF 显示原始币种金额和换算后金额
涉及文件:
backend/app/services/quotation.py(create_quotation 加入汇率换算)backend/app/services/pdf_generator.py(PDF 模板增加双币种行)uni-app/src/pages/quotation/create.vue
预估: 2 天
F3.2 Admin 统计指标扩展
问题: admin dashboard 只返回 total_users/paid_users,缺少业务指标。
方案:
GET /admin/dashboard增加:今日活跃用户数、API 调用量、新增客户数、新建报价单数- 基于
UsageLog聚合统计
涉及文件:
backend/app/services/admin.py(如有)backend/app/api/v1/admin.py
预估: 1 天
工作量汇总
| 阶段 | 项目 | 预估 |
|---|---|---|
| FixP0 | Push 重写 + 汇率 API + PDF 任务修复 + weasyprint 依赖 | 5-6 天 |
| FixP1 | 9 项前端对接(TTS/抽取/关键词/效果/偏好/风险/报价/导出/对话) | 10-12 天 |
| FixP2 | 训练面板 + 反馈管理 | 3 天 |
| FixP3 | 汇率集成报价 + admin 统计扩展 | 3 天 |
| 合计 | 21-24 天 |
外部依赖(开发期间可 mock)
| 依赖 | 说明 |
|---|---|
EXCHANGE_RATE_API_KEY |
免费版 exchangerate-api.com 即可 |
| 推送通道 | uni-push(免费)或第三方通道 |
| 微信商户号 | 支付上线必需 |
建议执行顺序
FixP0.1 Push 重写 ────────────────────────── 最紧急,否则静默客户提醒等于没有
↓
FixP0.2 汇率 + FixP0.3 PDF 任务 ────────── 并行,无依赖
↓
FixP1.5 AI 偏好 + FixP1.6 沉默风险 ─────── P3 功能的最后闭环
↓
FixP1.1~1.4 TTS/抽取/关键词/效果 ──────── 批量前端对接
↓
FixP1.7~1.9 智能报价/导出/对话 ─────────── 报价 + 客户页增强
↓
FixP2 + FixP3 ─────────────────────────── 管理后台 + 深度清理