上线版: 产品表单统一+form嵌套修复+用户管理+部署+三套叙事

- 产品编辑入口统一走 ProductFormFull(卖点/风格/人群/品牌词全字段);
  修复开任务页 <form> 套 <form> 致"编辑产品"报错、改不了、跳回首个产品
- dashboard 入口卡片对齐实际路由: 系统管理(/config) 与 工作配置(/settings) 分开;
  settings ?tab=products 直达改用挂载后读 URL, 消除 hydration mismatch
- 新增用户管理(users API/admin service/改密页) + alembic 022/023/024
- 上线部署: Dockerfile / docker-compose.prod+https / nginx https / .env.example
- A8 三套正交叙事(痛点/场景/成分背书) + beige 调色去AI化 + 飞轮 text_import 高权重信号

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
yangqianqian
2026-06-30 18:08:13 +08:00
parent a77212781c
commit df1856d793
150 changed files with 8616 additions and 1765 deletions

52
交付核销表.md Normal file
View File

@@ -0,0 +1,52 @@
# Clover 客户交付核销表2026-06-26
> 数据源2轮终审 + 执行级扫描workflow `wf_b9630bdd-46c`,全文 spec 见 scratchpad/tasks/w98crly0v.output
> 规则:每项 改哪→怎么改→验收能物理勾。修完一项→独立 agent 交叉验证→勾。任务只减不增。
> 状态图例:⬜待修 / 🔧修中 / 🔍待交叉验 / ✅已验勾 / ⏸待发布冻结
## 🔴 需倩倩姐拍板(攒批,定了我就连推)
- **A 部署环境**:北哥服务器有域名+HTTPS证书吗还是先 HTTP 裸跑试用(我把 HTTPS 配好待证书)?→ 决定 项1 形态 + 项uvicorn workers + 客户文档
- **B 执行范围**4个P0+14个P1+8个P2 全部一次过,还是先修 P0 硬阻断给北哥试用、P1/P2 下一轮?
- **C Git交付基线**feature 分支打 tag 交付(不动 main/ 合 main 再打 tagplans/截图等内部文件入库还是清理?
我对其余小决策取的默认你只验最终结果不同意再改FERNET 宿主`.env`托管 ·备份7天宿主cron不传OSS ·pip-audit 只阻断critical/high ·uvicorn workers 走env默认2 ·临时test脚本直接删 ·裂变兜底用 status 新枚举值区分 ·`ref_product.png`保留其余untrack ·首登改密用40102拦截+前端跳改密页。
---
## 批次A · P0 硬阻断4项不修不能交付
| 状态 | 编号 | 问题 | 改哪 | 验收(物理勾) |
|---|---|---|---|---|
| ✅ | 项1 | prod **完全无nginx**api:8000/前端:3000裸暴露无HTTPS | 已加 nginx 入口;默认 HTTPHTTPS 走 docker-compose.https.yml + nginx.https.conf | prod/https compose config 均通过默认不再假开443 |
| ✅ | P1-3-A | 生图写盘用相对 UPLOAD_BASE_PATHworker cwd=/ 写到 /uploads 丢图 | backend/app/workers/tasks.py 改用 UPLOAD_ABS_ROOT | compileall/pytest 通过 |
| ✅ | P0-6 | User 无 must_change_password三账号共用同密码 | user.py 加字段 + alembic 022 + seed_data 三账号拆密码 + 前端改密页 | pytest/build 通过;契约已入 openapi |
| ✅ | P0-5 | test_color_compare/test_3sets_e2e 在backend根、无__main__守卫、import即副作用 | 两文件加 __main__ 守卫 | ast/compileall 通过 |
## 批次B · P1 上线稳态14项
| 状态 | 编号 | 问题 | 改哪 | 验收(物理勾) |
|---|---|---|---|---|
| ✅ | 项2 | 前端Dockerfile无ARG注NEXT_PUBLIC_*prod compose误当运行时env传 | frontend/Dockerfile builder加ARG/ENV + prod compose 改 build.args | npm build + compose config 通过 |
| ✅ | 项7 | SSE nginx 缺 X-Accel-Buffering:no | nginx HTTP/HTTPS 配置均关闭 SSE 缓冲 | compose config 通过 |
| ✅ | 项16 | CORS .env.example 无填写说明易留localhost | env examples 加真实域名/禁*说明 | 已复核 |
| ✅ | P1-3-B | 打包 packages_base 相对+endswith错→双重/packages | packaging_task.py 改用 UPLOAD_ABS_ROOT | compileall/pytest 通过 |
| ✅ | P1-3-C | 读图未判 isabs历史绝对路径会双前缀 | packaging_task.py 加绝对路径/旧 URL 兼容 | compileall/pytest 通过 |
| ✅ | P1-3-D | dev compose .:/app 覆盖隐患prod已正确 | 客户交付改走根 docker-compose.prod.yml文档明确 dev compose 仅本地开发 | prod compose 无源码挂载、无DB裸端口 |
| ✅ | P1-2 | 前端 ReviewCard 仍降级读 selected_text无顶级旧字段任务显示空 | ReviewCard/dto 改读 selected_sets 并保留旧数据兼容 | npm build 通过 |
| ✅ | P1-7a | openapi TaskListItem 缺6字段 | openapi.yaml 补字段 | YAML parse 通过 |
| ✅ | P1-7b | openapi TextCandidateItem 缺~9字段 | openapi.yaml 补字段 | YAML parse 通过 |
| ✅ | 项11 | mysql+mongo 无备份脚本 | 新建 backend/scripts/backup.sh 并 chmod +x | sh -n 通过 |
| ✅ | 项12 | FERNET_KEY 无托管/丢失恢复说明 | README + docs/ops/fernet | 已复核 |
| ✅ | 项20 | 无面向客户操作手册 | 新建 docs/user/使用说明.md | 已复核 |
| ✅ | 项21 | 无运维手册 | 新建 docs/ops/runbook.md | 已补 HTTP/HTTPS/NEXT_PUBLIC 说明 |
| ⏸ | P1-1 | feature分支+91改动+0tag无交付基线 | 待发布冻结后 commit/tag delivery-... | 当前未提交改动很多,直接 tag 不包含修复 |
## 批次C · P2 打磨8项
| 状态 | 编号 | 问题 | 改哪 | 验收(物理勾) |
|---|---|---|---|---|
| ✅ | P2-3 | 裂变LLM失败静默降级兜底草稿仍报 completed | fission_pipeline.py 加 completed_with_fallback/is_fallback/fallback_reason前端同步提示 | compileall/build 通过 |
| ✅ | 项13 | 无 docs/ 排障文档 | 新建 docs/ops/troubleshooting.md | 已修正 /health 路径 |
| ✅ | P2-4 | 无 .github/workflows CI/pip-audit | 新建 .github/workflows/ci.yml | npm audit 本地 0 漏洞CI 文件已入库 |
| ✅ | 项mongo | prod mongo 无 healthcheckdepends service_started | docker-compose.prod.yml mongo块+depends改service_healthy | compose config 通过 |
| ✅ | 项uvicorn | prod uvicorn 单进程无--workers | docker-compose.prod.yml 加 --workers(env可配) | compose config 通过 |
| ✅ | P2-2 | git跟踪6个PNG产物 | 保留唯一测试参考图 test/ref_product.png其余未被 git 跟踪 | git ls-files 仅剩 ref_product.png |
| ✅ | 项10 | 图片批次失败提示只有数字无原因 | images/page.tsx 渲染 reason + retry | npm build 通过 |
| ✅ | P2-1 | README 与现状错位(端口/nginx/provider) | README/backend README/frontend README 校正 | 已复核 |