fix: 测试清单(8) 新一轮 — ZWQ/PMC/设置/团队 多项修复

视频/工作台/商品库(ZWQ):
- row19 视频阶段移除已取消的【上传视频】按钮 (pipeline.tsx)
- row20 工作台统计栏(总项目/进行中/成片)点击跳转视频项目对应 tab (dashboard/projects/route-config/App)
- row21 最新项目跳转改用真实 projectId, 不再跳到最近打开项目 (dashboard.tsx)
- row22+PMC28 网格/列表视图模式持久化(localStorage), 跨菜单记住用户选择 (projects/ai-tools + 新 hook use-view-mode.ts)
- row24 已有三视图的演员/模特直接复用, 不再强制点AI生成三视图 (pipeline.tsx)

图片生成/设置(PMC):
- row27 任务中心: 6个进行中状态补全归类, 不再把生成中误判为失败栏 (stage-config.ts)
- row29 头像上传500: avatar_url 存公读直链替代超长预签名URL(URLField max_length=200溢出) (accounts/views.py, 需部署)
- row30 显示名保存后回显: 改读 first_name 回退 username, 修刷新仍旧名 (settings.tsx)
- row31/32 隐藏【创作默认】【显示】两个设置模块 (settings.tsx)

平台套图(YYX):
- row3 图片预览铺满占位 (ai-tools-page.css)

团队:
- PMC25 充值/邀请成员/设置月限额三弹窗禁止点遮罩误关 (team.tsx)

含平台套图线上提示词优化(services.py/views.py/api.ts, 前序会话遗留一并提交)
构建: tsc --noEmit=0, npm run build=0 (1755模块); 后端 py_compile OK
注: row29 头像/后端项需部署生效

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
zyc
2026-06-29 16:45:29 +08:00
co-authored by Claude Opus 4.8
parent f3b89f3d49
commit ffada7caab
15 changed files with 292 additions and 82 deletions
+6 -12
View File
@@ -4,9 +4,7 @@ import {
Bell,
KeyRound,
LogOut,
Monitor,
ShieldCheck,
Sliders,
Upload,
User as UserIcon,
} from "lucide-react";
@@ -15,7 +13,8 @@ import { TeamModal } from "../components/overlays";
type SectionKey = "profile" | "security" | "notify" | "pref" | "display";
const SECTION_KEYS: SectionKey[] = ["profile", "security", "notify", "pref", "display"];
// 可导航(UI 可见)的分区。pref(创作默认)/ display(显示)已隐藏入口,故不在此列。
const SECTION_KEYS: SectionKey[] = ["profile", "security", "notify"];
const NAV: Array<{ group: string; items: Array<{ key: SectionKey; label: string; icon: ReactNode }> }> = [
{
@@ -26,13 +25,7 @@ const NAV: Array<{ group: string; items: Array<{ key: SectionKey; label: string;
{ key: "notify", label: "通知", icon: <Bell /> },
],
},
{
group: "偏好",
items: [
{ key: "pref", label: "创作默认", icon: <Sliders /> },
{ key: "display", label: "显示", icon: <Monitor /> },
],
},
// 「偏好」组(创作默认 / 显示)已隐藏 —— 入口移除,对应面板因导航不可达而不再显示。
];
const TEMPLATE_CHOICES = [
@@ -177,7 +170,8 @@ export function SettingsPage({
const cd = preferences?.creation_defaults;
const dp = preferences?.display;
return {
name: user.username || "",
// 显示名称存在后端 first_name(UserSerializer 暴露),username 不随保存变;优先读 first_name 回退 username
name: (user as { first_name?: string }).first_name || user.username || "",
email: user.email || "",
phone: "",
template: cd?.template ?? DEFAULT_PREFS.template,
@@ -191,7 +185,7 @@ export function SettingsPage({
language: dp?.language ?? DEFAULT_PREFS.language,
density: dp?.density ?? DEFAULT_PREFS.density,
};
}, [user.username, user.email, preferences]);
}, [user, preferences]);
// baseline = 已保存值;draft = 当前编辑值。diff(draft, baseline) = 脏字段。
const [baseline, setBaseline] = useState<TrackedState>(baselineFromProps);