# banana 扒包 + 产品包✖️banana 取长补短

> 目的：决定 Clover 的技术地基——banana 哪些能用、产品包哪些能用、怎么结合。
> 铁律：好的保留，不好的优化升级。
> 扒包日期：2026-06-05｜扒包人：CC

---

## 一、banana 是什么（比记忆里强很多）

它本身就是一个**完整的"小红书AI种草笔记生成平台"**，不是空骨架。
技术栈：Next.js14前端 + FastAPI后端 + Celery队列 + MySQL(关系) + MongoDB(文档) + Redis(队列/SSE) + Docker6容器。

### 已完成且✅验证的能力
- **认证**：注册/登录/JWT刷新/设备记录（auth完整）
- **任务流**：创建→Celery异步→SSE实时进度推送→结果展示（核心链路通）
- **积分系统**：余额/充值/流水/趋势（MVP模拟）
- **素材库**：CRUD/收藏/brand_tone字段
- **上传**：magic number校验+扩展名白名单+路径穿越防护（安全已加固）
- **前端10页**：登录/概览/创建/历史/任务结果(SSE流)/图片编辑/最终效果/素材库/积分/个人中心
- **AI抽象层**：AIProvider Protocol，mock/gemini可切换（架构支持插拔）

### 半成品/待完成（PROGRESS.md说的）
- brand_tone 的 Alembic迁移没做
- 前端交互细节没打磨
- 端到端没完整自测；积分扣费没集成；AI图片持久化待做
- 无测试覆盖、无CI/CD

---

## 二、banana 的 AI 内核有多厚（决定取舍的关键）

gemini_service.py 779行，能力清单：
- analyze_content 产品/参考分析（出overall_score）
- generate_text / generate_text_stream 文案生成（流式）
- generate_images / _generate_single_image 生图
- **evaluate_schema 方案评分**（对应产品包打分，但只有1个总分，**比产品包五维浅**）
- edit_image 对话式改图 / apply_quick_action 快捷操作
- **remove_watermark 去水印**（✅洞3刚需，banana已内置！）
- **extract_white_bg 白底图提取**（产品图标准化，加分项）
- _retry 重试退避（✅产品包缺的，banana有）
- gemini_image_client.generate_with_urls 带图URL生图（≈edits能力）

⚠️ 关键短板：**banana的AI内核全绑Gemini**，没有产品包的"换角度/品类策略/去重/自动优化循环"那套业务深度。
- banana打分=1个总分；产品包打分=五维(标题/情绪/买点/关键词/合规)
- banana无去重、无6品类话术、无storyboard 10角色分镜、无自动优化循环
- banana的prompt在gemini_service里写死（但有prompt_template_doc的MongoDB集合，预留了可调位）

### banana去水印实现真相（要标注）
remove_watermark 做法=**让Gemini重绘一张去水印图**(prompt: Remove all watermarks...reconstruct naturally)。
- 优点：连像素级SynthID都重绘掉，比re-encode彻底
- ⚠️风险：重绘会改变文字/构图，**对小红书海报的中文大标题是风险**(可能改字/糊字)
- 结论：可作为"去水印通道之一"，但海报类要测；洞3的re-encode/transcode削水印是更安全的"无损"方案，二者可分级用

---

## 三、取长补短对比表（核心结论）

| 能力维度 | 产品包 | banana | Clover怎么取 |
|---------|--------|--------|-------------|
| **文案业务内核**(打分/优化/去重/品类/角度) | ✅强(五维+循环+去重+6品类) | ⚠️弱(1个总分) | **取产品包** |
| **storyboard分镜**(10角色+品类证明) | ✅强 | ❌无 | **取产品包** |
| **违禁词三级+自动改写** | ✅强 | ❌无 | **取产品包** |
| **爆款裂变+参考度调节** | ✅强 | ❌无 | **取产品包** |
| **工程底座**(认证/队列/SSE/Docker) | ❌无(无状态Worker) | ✅强 | **取banana** |
| **多租户/JWT/用户体系** | ❌无 | ✅有(差workspace层) | **取banana,补租户层** |
| **异步队列**(解决生图4min阻塞) | ❌无(同步) | ✅Celery+SSE | **取banana** |
| **数据库/存档** | ❌无 | ✅MySQL+MongoDB | **取banana,补delivery_packages** |
| **去水印** | ❌无(洞3要新建) | ✅remove_watermark | **取banana,海报类加re-encode安全档** |
| **白底图/产品图标准化** | ⚠️product.js分析 | ✅extract_white_bg | **两者结合** |
| **重试退避** | ❌无(baseline证明需要) | ✅_retry | **取banana** |
| **AI Provider抽象**(可插拔) | ❌写死 | ✅Protocol | **取banana** |
| **生图主模型** | Gemini主/GPT备 | 全Gemini | **改:gpt-image-2主/Gemini备** |
| **可调prompt** | ⚠️prompt写死在代码 | ⚠️有MongoDB集合预留位 | **取banana预留位,做成北哥可调** |
| **积分计费** | ❌无 | ✅有(MVP模拟) | **MVP免费,先关闭,留接口** |
| **前端** | demo展示页(不复用) | 10页生产级 | **取banana骨架,按前端设计参考图.png改5步流程** |

---

## 四、结论：Clover 全新建，从两源各扒零件重建

**🔴 架构定性（倩倩姐2026-06-05拍板，已落 Clover/CLAUDE.md）：**
- Clover 是**全新独立项目**，在 `Clover/` 下从头建立。
- banana 和产品包都是**只读素材源**，只复制不修改，绝不边盖边修。
- 需要哪个零件 → 复制出来 → 在 Clover 里结合本项目迭代/优化/重建。
- ~~以banana为底座~~（说法作废，那是边盖边修的错误架构）。

**从产品包扒（复制JS算法→Clover里重写Python）：**
- 文案五维打分/自动优化循环/去重 / storyboard 10角色分镜 / 6品类话术 / 违禁词三级自动改写 / 爆款裂变+参考度调节

**从banana扒（复制Python模块→Clover里改造）：**
- FastAPI+Celery+SSE 异步骨架 / JWT认证 / 双库模型范式 / AIProvider抽象层 / remove_watermark+extract_white_bg / _retry重试 / 上传安全加固 / 前端Next.js组件范式

**Clover自己新建（两源都没有）：**
- workspace多租户层 / delivery_packages存档打包+导出 / preference_events飞轮 / token-url收口 / banned_words可配置表 / 按"前端设计参考图.png"的5步流程前端

**改造点：**
- 生图主模型改 gpt-image-2 主、Gemini 备；生图接口改 edits 优先
- banana去水印(Gemini重绘)对海报中文标题有改字风险 → 加 re-encode 无损安全档分级用
- 积分计费 MVP 免费先关闭，留接口
- 可调prompt：参考banana的prompt_template_doc预留位，做成北哥可调，等北哥样本注入

### ⚠️ 待定决策（给倩倩姐）— 已拍板
1. ~~JS→Python重写 vs JS微服务~~ → **拍板：Python重写融进Clover**（统一栈），但 banana/产品包文件夹只读复制，不在其上改。
2. ~~banana半成品先跑通验证~~ → **作废**：不基于banana迭代，所以不存在"先跑通banana"。banana只读，扒模块时该模块逻辑要在Clover里重新验证。


