73 lines
3.4 KiB
Markdown
73 lines
3.4 KiB
Markdown
# C-04 · AI 工具四件套(抠图/证件照/放大/生图)
|
||
|
||
| 字段 | 值 |
|
||
|---|---|
|
||
| 项目 | 可乐工具 · 后端新建 `aitool` app + `chunyu_project_react` |
|
||
| 优先级 | P0 · M2 |
|
||
| 建议模型 | deepseek-v4.1-flash(主)/ gemini-3.8-flash(图像质量验收) |
|
||
| 依赖 | 无 |
|
||
| 预估 | 4 天 |
|
||
|
||
## 一、背景(为什么做)
|
||
|
||
2026 年工具站最大流量来源已全线 AI 化(ToolFk:文生图、图生视频、抠图、证件照、图片放大、TTS);本产品 AI 能力仅百度翻译一项(`docs/产品问题分析与改造路线.md` P0-2)。四件套是**流量 + 金币消费场景**的双重补位。
|
||
|
||
## 二、目标(交付物)
|
||
|
||
**后端:新建 `aitool` app**
|
||
|
||
1. 四个端点(全部异步、adrf 风格):
|
||
- `POST /api/aitool/matting` 抠图(输入图片 → 透明底 PNG)
|
||
- `POST /api/aitool/id-photo` 证件照(输入人像 → 背景色可选,1 寸/2 寸规格裁剪)
|
||
- `POST /api/aitool/upscale` 图片放大(输入图 → 2x/4x)
|
||
- `POST /api/aitool/text2img` 文生图(prompt → 图片)
|
||
2. **Provider 抽象层**(关键设计):
|
||
- `BaseProvider` 接口 + `MockProvider`(无 key 也能全链路跑通,产出占位图)+ `HTTPProvider`(可配置第三方 API 网关,baseURL/key 全走环境变量)
|
||
- `.env.example` 增 `AITOOL_PROVIDER=mock|http`、`AITOOL_API_BASE`、`AITOOL_API_KEY`
|
||
- **绝不把 key 落库、绝不出现在响应里**
|
||
3. **钱包打通**:每次调用扣金币(单价按工具配置,如抠图 2 币/张);扣减与流水复用现有 `PointTransaction`;**处理失败自动回滚金币**;余额不足返回明确错误码。
|
||
4. 处理产物存储:复用现有媒体存储惯例(media 目录),产出可下载 URL。
|
||
|
||
**前端**
|
||
|
||
5. `Utility.tsx` 增"AI 工具"分类 + 4 个工具页(上传/参数/预览/下载/扣费确认)。
|
||
6. 工具卡标注消耗金币数。
|
||
|
||
## 三、执行步骤
|
||
|
||
```text
|
||
1. 侦察现有 wallet/PointTransaction 扣减接口与前端金币组件(复用,不重造)
|
||
2. aitool app:模型可省(先用现有 media 存储 + 记录表:id/user/tool/status/cost/created_at)
|
||
3. Provider 抽象 + Mock 全链路先行(不阻塞于真实 key)
|
||
4. 钱包接入:扣减 → 处理 → 成功落账 / 失败回滚(事务化)
|
||
5. 前端 4 页 + 分类
|
||
6. 真实 provider 接入说明(文档:如何配 key 切换)
|
||
```
|
||
|
||
## 四、验收标准
|
||
|
||
- [ ] mock 模式下四工具全链路:上传 → 处理 → 预览 → 下载
|
||
- [ ] 金币:调用扣减正确;失败回滚(断网/超时模拟);流水记录可查
|
||
- [ ] 并发同用户两次调用扣减不串(事务正确)
|
||
- [ ] 前端分类与四个页面可用,余额不足有明确引导
|
||
- [ ] key 仅环境变量;`grep` 仓库无任何 key 残留
|
||
- [ ] 图像质量抽查:抠图边缘、放大对比、证件照裁剪规格(gemini 视觉验收)
|
||
|
||
## 五、验收命令(参考)
|
||
|
||
```bash
|
||
cd chunyu_project && python manage.py test aitool -v 2
|
||
# 手工链路(mock):
|
||
# 上传测试图 → POST /api/aitool/matting → 下载 PNG → 查看透明底
|
||
```
|
||
|
||
## 六、边界(不许做)
|
||
|
||
- 不在 MVP 引入本地大模型部署(rembg/Real-ESRGAN 本地化留待 Phase 2 评审)
|
||
- 不动现有百度翻译链路
|
||
- 不做异步队列(先同步 + 超时控制;量大再评审 Celery/Dramatiq)
|
||
|
||
## 七、交接
|
||
|
||
写 `PROGRESS_C-04.md`(含 mock 链路输出、回滚用例证据、视觉验收结论)。
|