Files
makelore/.project-docs/30-worklog/tasks/20260807-makelore-release-client-8c4e.md
brother7 724290e864 实现 Makelore 一键提交审核
需求:让非专业用户在项目操作区一次提交,运营审核通过后直接发布。

实现:由 Electron Main 完成安全打包、自动版本、幂等重试和状态脱敏;补齐友好失败反馈、唯一提交入口及隔离 Electron E2E fixture。
2026-08-08 14:44:08 +08:00

67 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Task: 迁移并验收 Makelore 一键发布客户端
## Identity
- Task ID: 20260807-makelore-release-client-8c4e
- Mode: Feature
- Branch: codex/20260807-makelore-release-client-8c4e-makelore-release-client
- Worktree: D:\Datas\OthersProjects\makelore-release-client-8c4e
- Base commit: 7b23cce67a1b9e61a48d89dedbd088d37b10ecd4
- Owner: codex
- Status: Ready for Integration
## Scope
-`D:\Datas\OthersProjects\makelore` 为正确客户端仓库,重新核对一键发布实现与 Electron E2E 基线。
- 补齐 `tests/e2e/fixtures/electron.ts`,恢复现有 Electron E2E 的测试收集和隔离启动能力。
- 在不恢复独立发布/上传工作台的前提下,迁移 Main-owned 安全打包、自动版本、幂等重试和友好失败反馈。
- 用户已确认在现有项目操作区增加唯一“提交审核”动作;不新增发布页面、侧栏入口或发布资源卡。
## Intent And Constraints
- 项目文件、ZIP 生成、Works Square Token、幂等键和网络重试均由 Electron Main 持有Renderer 只调用 Host API。
- 遵守 Makelore 产品边界:不恢复 Works/素材广场、发布上传页面或云部署工作台。
- 保留内部 `niancode` 兼容标识,面向用户的新增文案使用 Makelore。
- 当前主工作区存在未归属的登录、设备预览等改动;所有实现只允许在本任务隔离工作树进行。
- E2E 每个测试使用独立临时 profile同一测试内重启复用该 profile结束后关闭 Electron 并清理临时目录。
## Outcome
- 已确认此前客户端改动落在错误的 NianCode 工作树,不能计为 Makelore 已完成;服务端发布链路不受此路径更正影响。
- 已确认 Makelore 当前 HEAD 与全部本地 Git 历史都缺少 `tests/e2e/fixtures/electron.ts`,但 13 个 E2E spec 均导入该模块,因此 Playwright 会在测试收集阶段因模块不可解析而停止。
- 已补齐 fixture 最小契约:`test``expect``launchElectronApp``electronApp``page``getStableWindow``closeElectronApp``completeSetup`;每个测试隔离 profile同测试重启复用所有 Electron 进程都有有界关闭与强杀兜底;启动环境采用跨平台必要变量白名单,不继承 Works 配置、密钥或开发服务器地址。
- 已在 Electron Main 增加确定性静态项目打包:校验 npm/Vite 根项目、生成兼容 `niancode.yml`、排除依赖/构建产物和常见云凭据/私钥/密钥状态文件、限制数量与体积,并通过目录祖先 identity 链在扫描、打开和读取前后拒绝符号链接、越界目录与打包期间替换。
- 已将 Works Square 会话 Token、`VERSION.md`/时间版本、更新说明、临时 ZIP 和幂等键全部留在 Main408/502/503/504 与网络异常重试复用同一键和相同字节,新的用户提交生成新键。
- 已为提交和当前项目状态提供无 Renderer Token 的 Host API成功响应也只投影安全字段并校验必需结构异常 200、安全失败、上游正文、构建堆栈、路径与未知字段均不会进入 Renderer。
- 已在现有项目配置底部操作区加入唯一“一键提交审核”:自动作品 ID/标题/简介/分类2 秒轮询云端构建,成功后显示“已提交,等待运营审核”,可恢复失败给出原因和下一步,不确定结果保持锁定以防重复提交。
- 未新增 `/publish` 路由、发布侧栏或发布资源卡;现有 E2E 继续断言这些工作台入口不存在。
- fixture 恢复后暴露的登录按钮旧文案、设置页旧 test id/控件和项目配置旧入口断言已按当前 Makelore 产品行为更新,没有为测试绕开生产登录门禁。
- README 已同步当前产品状态:不恢复独立发布工作台,只在现有项目配置底部提供 Main-owned 一键提交审核。
## Verification
- 只读文件检查确认 `tests/e2e/fixtures` 目录不存在。
- `git ls-tree -r HEAD -- tests/e2e` 确认当前提交只包含 13 个 spec不包含 fixture。
- `git log --all -- tests/e2e/fixtures` 无结果,确认没有可直接 cherry-pick 的本地历史来源。
- `rg` 确认现有 spec 需要 shared fixture同时现有 E2E 明确断言发布侧栏和发布资源卡不存在。
- 发布链路聚焦 Vitest6 files / 77 tests passed。
- `pnpm run typecheck` 与全部变更 TypeScript/TSX 的 scoped ESLint 通过。
- `pnpm run build:vite` 的 Renderer、Main、Preload 构建通过;仅保留仓库既有的大 chunk 提示。
- `pnpm exec playwright test --list --reporter=line` 成功收集 13 files / 21 tests。
- 真实 Electron 串行验收覆盖首次设置、跳过后登录门禁、同 profile 重启、俄语设置持久化、创建项目、Superpowers 默认关闭和唯一发布入口8 passed。
- `git diff --check` 通过,构建输出与依赖没有进入未跟踪文件列表。
## Follow-ups
- 使用真实 Works Square URL、创作者账号和已部署 Builder/Static Gateway 运行“客户端提交 → 构建/浏览器门禁 → 运营批准 → 公共作品”整链;当前本地验证未冒充生产发布成功。
- 集成时优先合并服务端发布生命周期与门禁,再发布依赖新状态字段和错误码的 Makelore 客户端。
## Promotion Candidates
- Target: Makelore `AGENTS.md` 或发布集成说明。
- Proposal: 将“发布入口只存在于现有项目操作区Renderer 只发 projectId/非敏感元数据Main 持有文件、Token、版本、ZIP、幂等与重试”记录为长期客户端边界。
- Evidence: 本任务实现、77 项聚焦回归、13/21 E2E 收集和 8 项真实 Electron 验收。
- Future impact: 后续发布状态、失败反馈和真实环境验收不得重新引入发布工作台或 Renderer Token/文件路径。
- Semantic conflicts: 无;与仓库禁止恢复发布/上传工作台的现行约束一致。
- Human confirmation required: 是。