Commit Graph
16 Commits
Author SHA1 Message Date
seaislee1209andClaude Opus 4.8 3f8547564c feat(admin): Phase 1 注册邀请码逻辑 — 码必填 + kind 分流 + validate-invite + 注册页码优先重做
后端:Invitation.kind(join_team/create_team)+ team 可空 + migration;RegisterSerializer 邀请码必填,
create_team 开新团队当 owner+发试用额度、join_team 幂等入伙不重复发额度,删「空码开团队」;
validate-invite 免登录验码端点;团管发码恒 join_team;InvitationSerializer 增 kind/team_name。
前端:注册页码优先(验过才展开;create_team 填团队名 / join_team 只读团队名,不暴露团队列表)、
邀请链接 ?invite= 自动验码、api.validateInvite、验码行/状态提示样式(仅 token)。
测试:accounts 22/22 单测过(RegisterInviteCodeTests + ValidateInviteTests);
无头 e2e _admin-p1.mjs 全断言过 + 0 console error;tsc+build 绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 21:07:03 +08:00
seaislee1209andClaude Opus 4.8 443023a1a9 feat(admin): Phase 0 平台超管基础 — is_platform_admin + IsPlatformAdmin + create_platform_admin(admin/admin123) + AdminAuditLog + Admin 后台外壳与路由 gating
后端:User.is_platform_admin + migration;权限类 IsPlatformAdmin;管理命令建 admin/admin123(幂等);
AdminAuditLog 模型 + log_admin_action() helper;me/login 对无团队超管优雅返回 team=null;UserSerializer 暴露标志。
前端:routes/admin 后台外壳(分组侧栏 + 概览 + 占位)、/admin 路由解析与 gating(超管直落、非超管纠回)、
侧栏平台入口、admin-page.css(仅 token)、IconKitSvg 补图标。
测试:accounts 11/11 单测过;无头 e2e _admin-p0.mjs 全断言过 + 0 console error;tsc+build 绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 20:49:34 +08:00
seaislee1209andClaude Opus 4.8 8fc3870fa3 docs(qa): 还原对比报告补良好档核查结论 + 登录页修复记录
良好档(messages/team/model-photo-demo-a 2-3%)逐页核 diff:结构全对齐、仅文字泛红,
= 真实数据 + 字体抗锯齿残差,无真布局缺口,无需精修。
+ 记录本轮登录/注册页修复(按钮丢失 / 黑块等高 / 品牌文案重梳)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 19:16:40 +08:00
seaislee1209andClaude Opus 4.8 352f99d479 fix(qa): 修页面还原对比 harness(Mac死路径 + file://token崩)+ 全量28页跑通
当年只对了 account/team 两页就卡住,真因两个:
- compare-all.mjs designRoot 写死成原开发者 Mac 路径 → 本机找不到 HTML 稿,改 repoRoot 自适配
- compare-page.mjs preparePage 对 file:// 设计稿也注入 token(file:// origin=null)→ 崩,
  限定 token 只对 http 目标注入(登录后页面如 dashboard 当年对不了的根因)

全量 28 页 pixelmatch:22 优秀(<2%)+ 3 良好(2-5%);3 个大 diff 均为有意偏离
(login/register 认证去邮箱)或真实数据(dashboard 修正后 6.38%),非回归。
+ _shot-extract-flow.mjs:提取新流程无头走查脚本。

报告:docs/todo/页面还原-截图对比收尾-2026-06-19.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 18:52:21 +08:00
seaislee1209andClaude Opus 4.8 827fa7fa54 feat(ai): 实体提取解耦 — 定稿剧本后独立提取角色/场景 + 商品参考图永远带上
根因:实体跟脚本生成耦合,模型不稳(尤其改稿 revise)常丢实体 → 角色提不出、
参考图全空 → 故事板/视频退化纯文生图(用户 demo 全错的真因)。

- 新 skill ecommerce-entity-extract(按 skill-creator 法写):只提角色+场景,
  角色铁律=穿整套衣服/空手/不带与商品同类物/不暴露;商品不提。4 项目实测稳定产出。
- extract_entities_for_project + /extract-entities 端点:读定稿剧本→提实体→
  落库覆盖 metadata + 回填每镜 entity_refs(提取为唯一权威来源,脚本生成完全不动)。
- 商品参考图永远带上:_storyboard_reference_images(视频继承)改为无条件带
  商品三视图→主图兜底,不再依赖 entity_refs 里有没有商品实体。
- 创建商品后端强制要主图(堵兜底洞:无图商品会让下游参考图彻底落空)。

实测:杂鱼煲(原实体0)→6实体,每镜参考图齐(角色+商品+场景),不再文生图。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 17:37:18 +08:00
seaislee1209andClaude Opus 4.8 901d6920f1 docs(todo): 管线「提示词从哪来」溯源页(说人话+竖向流程+点击溯源+播放)
按用户对齐:竖向流程图,提示词拆 3 块(@图指定谁/画面描述/质量词),每块标来源色
(AI编/你填/代码模板/生成的图)+ 真实示例;重点砸在 3 个最模糊点(第2步人物描述哪来、
第3/4步参考图怎么引)各一个高亮答案;质量词如实标"现在基本没有,只代码模板写死几句"。
点积木高亮溯源 + ▶播放流动,纯静态无依赖,iPad 浏览器可开。11 块交互实测通、0 报错。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 16:09:06 +08:00
seaislee1209andClaude Opus 4.8 8af2df709c docs(todo): 后端生成管线全景结构图(HTML 白板)— 每步 AI/代码/数据 标清
3 个侦察 agent 实测代码录制:脚本→资产→故事板→视频 全链。可视化页面标明每步触发/读取/
提示词拼装/AI还是纯代码/参考图引用/落点。关键澄清:角色场景=AI一次产出非程序提取;
AI 只在 5 处真调(①脚本text ②③图 ④故事板图 ⑤Seedance视频),其余纯代码。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 15:02:14 +08:00
seaislee1209andClaude Opus 4.8 e9626d943f fix(core): 管线参考图 #1 — 商品参考图走主图兜底(原先无商品基础资产组就丢)
诊断:实测 _storyboard_reference_images,资产齐全的项目 3/3 全中,链路本身对;
断点在上游资产没配齐/标签错。其中商品最明确:系统非要"商品基础资产组"才认,
但商品天生有真实主图 → 匹配不到商品组时直接用 _product_cover_url(project.product) 当参考。

实测:项目 37197c57 镜0 从 2/3 → 3/3(商品参考图补上);有商品组的项目不重复加。
回归:apps.ai+projects 测试仍 7 个预存 image-provider 失败,零新增。未碰脚本 agent。

附完整诊断 docs/todo/管线参考图链路诊断-2026-06-19.md(根因 #1商品兜底 / #2实体没全生成 / #3标签对齐)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:04:28 +08:00
seaislee1209andClaude Opus 4.8 fb04bf05ae docs(todo): Wave 5 总验收 — 完成报告(Wave 0-4 落地 + 2组migration/拆分移交)
42 后端测试 35过+7预存失败(零新增回归);tsc/build 0;14路由 boot 0报错。
两件移交:2组 migration 低峰 apply + pipeline 巨页拆分待确认。附 apply 操作指引。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 13:15:27 +08:00
seaislee1209andClaude Opus 4.8 946e0169cd docs(todo): Wave 3 收尾(11页) + Wave 3.5 邀请制全栈完成 + 2组migration待apply标注
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 12:46:59 +08:00
seaislee1209andClaude Opus 4.8 05215206f1 docs(todo): Wave 3 进度 — 10 页 P0/P1 还原落地(sub-agent 并行,4 批)
团队/账户/资产库/AI工具/商品/项目/工作台/外壳/设置/商品创建抽屉 全部 tsc+build+无头走查+截图通过。
剩余:消息(下一拍)、登录(并入 Wave3.5)、pipeline视觉(并入 Wave4)。真实数据缺口降级不造假、移交监督。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 05:30:29 +08:00
seaislee1209andClaude Opus 4.8 8e6c6f0881 docs(todo): Wave 2 收口 — part2(poll-reviews挪Celery/写action瘦身)按 rule 3 暂缓移交监督
读码判定两项均落在 rule 3「严禁碰 生成/轮询业务逻辑」内,且对已验证功能(管线写契约 /
借火山AK审核子系统)动刀、loop 内无法 e2e 验收 → 按 rule 14 主动暂缓,附落地方案供用户监督执行。
Wave 2 实质收益(复合索引 + 消息中心 N+1)已在 part1 (99a442e) 落地、零回归。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 04:28:37 +08:00
seaislee1209andClaude Opus 4.8 99a442e883 perf(core): Wave 2 part1 — 复合索引(只生成不apply) + 消息中心 N+1 治理
索引(只 makemigrations 看 SQL,远程 MySQL apply 留用户低峰 / rule 3):
- Asset (team,category,-created_at)+(team,asset_type)、CreditLedger (team,-created_at)+
  (team,ledger_type,created_at)、Project (team,-updated_at)、AITask (team,-created_at)、
  Product (team,-created_at);迁移 assets0005/billing0002/projects0004/ai0008/products0002

消息中心 N+1(ops/views.py):
- type_counts 原 6 次 count(每请求)→ 一次 aggregate(Count(filter=...)) 条件聚合
- ensure_team_notifications 项目花费原逐项目 aggregate(N+1)→ 一次 values('project').annotate(Sum)

验证: apps.ops 测试 3/3 OK;全量 6fail+1err 均为预存 image provider 路由失败(stash 跑 baseline
  复现)= 零新增回归;索引迁移在 sqlite 测试库成功 apply

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 04:18:30 +08:00
seaislee1209andClaude Opus 4.8 42c3c046ea feat(core): Wave 1 part2 — 双主题清污染/mono分级/富分页器/hero字重
S1 双主题: styles.css Dashboard 区(.recent-row/.shortcut/.tip)迁入 design-restraint.css,
  暖米旧 token→restraint(--orange→--heat 等);修 .queue-chip svg --ink-3→--black-alpha-56。
  实测 .shortcut .ic 橙 = rgb(250,93,25)=--heat(原泄漏成暖橙 #E55B26)
S2 mono: design-restraint.css 加 .mono-10/11/12(10.5/11/11.5px)工具类(逐页应用并入 Wave 4)
S7 分页器: pager.tsx 加可选 onPageSizeChange(条数循环)/跳页输入/sticky,旧调用方零破坏;
  CSS 加 .size-cycle/.jump/.sticky(接线 products/library + 服务端分页放 Wave 3)
S8 hero 字重: 核 V1 实测 account/team hero 数字均 font-weight:700 → account 3 处 + team 2 处
  改 700(据实还原 V1 标准答案;记录与 design.md §2.5 的内部不一致)

S6 批量栏共享挪 Wave 3(与 projects/library 重建一起做)

验证: tsc 0 · build 0 · computed-style 橙=heat/字重=700 · pixelmatch account 1.23%/team 2.13%
  · 14 路由回归 boot 0 报错 · 登录 639ms

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 04:07:34 +08:00
seaislee1209andClaude Opus 4.8 74e3c818c5 feat(core): Wave 1 part1 — 浮层进场动画/ESC + Toast 归正 + 账户表横线
S4 浮层: overlays.tsx 新增共享 useOverlayTransition(挂载→下一帧上 .show 触发
  scale(.96→1)/translateX 进场过渡;关闭先撤 .show 播退场再卸载)+ 统一 ESC 关闭,
  应用 TeamModal/ConfirmModal/SuccessModal/Drawer;EmptyPanel 补 .ic-empty 灰 icon
S3 Toast: ToastLike 改用设计系统 .toast(右下/单橙 ic-t/shadow-floating/滑入),
  不再随 success/error 变绿红边;auth login-toast → .toast
S9 表格: account-page.css 删 tbody td border-bottom(对照 V1 account.html 确认应无行线)

验证: tsc 0 · 交互走查 toast出现+ESC关弹窗 · 14 路由回归 boot 0 报错 · 登录 643ms

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 03:51:30 +08:00
seaislee1209andClaude Opus 4.8 8a0ae6a19d perf(core): Wave 0 性能根因 — 连接复用/视频轮询脏检查/图懒加载/隐藏tab停轮询
- settings/base.py: MySQL 加 CONN_MAX_AGE=300 + 健康检查 + connect_timeout=5
  (development/production 共用,production 经 from .base import * 继承);development 去重
- App.tsx pollVideosQuiet: 收尾 setProjectDetail 改 JSON 脏检查,在途段未变化时
  跳过 setState,整棵管线不再每 5 秒空重渲染(纯前端,不碰生成业务)
- ai-tools.tsx: 任务历史网格+列表两处 img 补 loading=lazy/decoding=async
- pipeline.tsx: 审核(8s)+在途资产(4s)纯读轮询加 document.hidden 守卫
  (视频5s轮询驱动生成,保守不加;详见进度文档)

验证: tsc 0 · django check 0 · 14 路由 headless boot 0 报错 · 登录 726ms 无假延迟无邮箱

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 03:36:07 +08:00