From 8e1147c68be132abf95159c2abebd38370aba783 Mon Sep 17 00:00:00 2001 From: kang Date: Mon, 18 May 2026 11:07:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20MVP=20=E8=B7=91=E9=80=9A=20=E2=80=94=20?= =?UTF-8?q?prompt=20=E2=86=92=20=E6=89=B9=E9=87=8F=E7=94=9F=E6=88=90=20?= =?UTF-8?q?=E2=86=92=20=E4=B9=9D=E5=AE=AB=E6=A0=BC=E5=BF=AB=E7=AD=9B=20?= =?UTF-8?q?=E2=86=92=20=E9=80=89=E4=B8=AD=E8=90=BD=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Next.js 15 + React 19 + Tailwind 骨架,端口 4560 - /api/generate:mock 模式(SVG 占位)+ Poe nano-banana-pro 真接口预留 - 九宫格 + 数字键 1-9 选中 / Shift+1-9 打叉,选中自动复制到 data/selected/ - 侧栏会话历史(来自 data/sessions/*.json) - 修 race condition:select state 改 functional setState - 修 svg+xml MIME 正则 - RULES.md 写清启动 / 环境变量 / 工作流 待办:申请新 Poe Key 后接入真生图(POE_API_KEY 环境变量) Co-Authored-By: Claude Opus 4.7 (1M context) --- .project.json | 7 ++++++- RULES.md | 53 ++++++++++++++++++++++++++++-------------------- src/app/page.tsx | 8 ++++---- 3 files changed, 41 insertions(+), 27 deletions(-) diff --git a/.project.json b/.project.json index 537a860..90bc5da 100644 --- a/.project.json +++ b/.project.json @@ -4,7 +4,12 @@ "status": "active", "kind": "tool", "created": "2026-05-18", - "urls": [], + "urls": [ + { "type": "app", "url": "http://localhost:4560", "label": "本地 dev" } + ], + "credentials": [ + { "name": "POE_API_KEY", "env": "POE_API_KEY", "note": "调 nano-banana-pro 生图,没填则 mock" } + ], "ports": [ { "port": 4560, diff --git a/RULES.md b/RULES.md index 856331f..4f6f89e 100644 --- a/RULES.md +++ b/RULES.md @@ -1,39 +1,48 @@ # AI玩具专利生成工作流 ## 启动 -- `待补充` — 端口 4560 +- `cd ~/Projects/code/20260518-ai-toy-patent-workflow && npm run dev` — 端口 4560 +- 浏览器打开 http://localhost:4560 +- 首次依赖装好:`npm install --legacy-peer-deps`(next 15 + react 19 有 peer 警告) ## 部署事实 -- 平台:待定 -- 发布状态:未部署 -- 主站 / 前端:待定 -- API / 后端:待定 -- 文档 / 解析:待定 -- 管理后台:待定 +- 平台:本地开发(未上 VPS) +- 发布状态:本地可用,仅个人使用 +- 主站 / 前端:http://localhost:4560 +- API / 后端:内置 Next.js API Route(同端口) +- 文档 / 解析:无 +- 管理后台:无 ## 快捷登录 -- 登录地址:待补充 -- 用户名:待补充 -- 密码:待补充 -- 说明:这里只写项目专属网页登录;数据库密码、API Key、服务器 root 密码不要写这里 +- 无登录系统(本地工具) ## 元数据回写清单 -- 新增或变更公网地址后,必须同步更新 `.project.json.urls` -- 仓库内存在 App 源码或构建入口时,必须能在看板显示 `App` 标记;自动检测不准时,手动写 `.project.json.app_artifacts` -- 如果有网页后台登录: - - 可直接入库:写 `.project.json.quick_login` - - 不应入库:写 `.project.json.credentials` 引用 -- 部署完成后,`RULES.md` 和 `.project.json` 必须同一次任务一起更新 +- 上 VPS / 加域名时,更新 `.project.json.urls` + 本节 +- 数据持久化在 `data/`(gitignored),不入库 ## 环境变量 -- 待补充 +- `POE_API_KEY` — Poe API Key,调 `nano-banana-pro` 生图;不填则回退 mock(SVG 占位图) +- 配置位置:`.env.local`(gitignored),参考 `.env.local.example` +- credentials.md 里旧 Poe Key 已"离职清除",**需要重新申请**或临时跑 mock ## 规则 - 全项目规则真源:`/Users/kangwan/Projects/code/20260317-rules-dashboard/RULES.md` -- 版本发布规则:`/Users/kangwan/Projects/code/20260317-rules-dashboard/rules/04-版本发布规则.md` +- 生图模型固定 `nano-banana-pro`(feedback_image-gen-model) - 不允许编造不存在的部署域名、账号、密码 -- 没有公网地址时,`.project.json.urls` 保持空数组 -- 任何部署或域名变化,都要先改元数据,再视为任务完成 ## 注意事项 -- 待补充 +- `data/` 目录会存原图(generated/selected/refs),可能体积大,已 gitignored +- `refs/` 下放参考资料 PDF/DOCX/图(已 gitignored,但 `refs/README` 之类可放进库) +- mock 模式仅用于跑通流程,生图质量为零(只是 SVG 笑脸占位) + +## 工作流(MVP Step1+2) +1. 输入 prompt + 可选参考图(最多 4 张)+ 风格 + 数量(4/8/12) +2. 点 🪄 批量生成 / `⌘/Ctrl+Enter` +3. 九宫格快筛:数字键 `1-9` 选中,`Shift+1-9` 打叉 +4. 选中的图自动复制到 `data/selected/` +5. 侧栏保留历史会话,点击切换 + +## 后续路线 +- Step3:多视图扩展(正/侧/背/45°/俯视)—— 待 Poe Key 接入后做 +- Step4:尺寸标注 / 三视图蓝图样式 —— 同上 +- 导出专利包:PNG高清 + PDF合订 diff --git a/src/app/page.tsx b/src/app/page.tsx index 17821de..faed549 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -52,10 +52,10 @@ export default function Home() { }); if (!r.ok) return; const d: { image: GenImage } = await r.json(); - setCurrent({ - ...current, - images: current.images.map(i => i.id === imageId ? d.image : i), - }); + setCurrent(prev => prev ? { + ...prev, + images: prev.images.map(i => i.id === imageId ? d.image : i), + } : prev); refreshSessions(); }