chore: align local docker environment
This commit is contained in:
@@ -616,6 +616,80 @@
|
||||
"message": "docs: record upload generation safeguards",
|
||||
"hash": "1728808",
|
||||
"files_changed": 2
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T12:09:24+08:00",
|
||||
"type": "commit",
|
||||
"message": "chore: record Muse Mate generation run",
|
||||
"hash": "7292bb2",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T04:10:01Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T04:20:01Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T04:30:01Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T04:40:01Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T04:50:01Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T05:00:01Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T05:10:02Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T05:20:02Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T05:30:02Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T05:40:02Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:chore: record Muse Mate generation run",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-19T13:40:25+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-19 13:40 (+1, ~2)",
|
||||
"hash": "f4ce3d4",
|
||||
"files_changed": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"created": "2026-05-18",
|
||||
"urls": [
|
||||
{ "type": "app", "url": "https://ai-toy.kang-kang.com", "label": "VPS 生产" },
|
||||
{ "type": "app", "url": "http://localhost:4560", "label": "本地 dev" }
|
||||
{ "type": "app", "url": "http://localhost:4560", "label": "本地 Docker" }
|
||||
],
|
||||
"credentials": [
|
||||
{ "name": "OPENAI_API_KEY", "env": "OPENAI_API_KEY", "note": "GPT 文本/结构化/图片生成;没填则图片 mock" },
|
||||
@@ -25,7 +25,8 @@
|
||||
},
|
||||
"stack": [
|
||||
"Next.js + GPT + Seedance",
|
||||
"Docker Compose + Coolify Traefik"
|
||||
"Docker Compose local/prod parity",
|
||||
"Coolify Traefik"
|
||||
],
|
||||
"ownership": "personal"
|
||||
}
|
||||
|
||||
8
RULES.md
8
RULES.md
@@ -1,8 +1,9 @@
|
||||
# AI玩具专利生成工作流
|
||||
|
||||
## 启动
|
||||
- `cd ~/Projects/code/20260518-ai-toy-patent-workflow && npm run dev` — 端口 4560
|
||||
- 推荐本地环境:`cd ~/Projects/code/20260518-ai-toy-patent-workflow && npm run docker:up` — Docker Compose,端口 4560
|
||||
- 浏览器打开 http://localhost:4560
|
||||
- 备用非 Docker 开发:`npm run dev` — 端口 4560
|
||||
- 首次依赖装好:`npm install --legacy-peer-deps`(next 15 + react 19 有 peer 警告)
|
||||
|
||||
## 部署事实
|
||||
@@ -11,7 +12,7 @@
|
||||
- 服务名 / 容器名:`ai-toy-patent-workflow`
|
||||
- 服务器路径:`/opt/ai-toy-patent-workflow`
|
||||
- 主站 / 前端:https://ai-toy.kang-kang.com
|
||||
- 本地 dev:http://localhost:4560
|
||||
- 本地 Docker:http://localhost:4560
|
||||
- API / 后端:内置 Next.js API Route(生产同域名)
|
||||
- 文档 / 解析:无
|
||||
- 管理后台:无
|
||||
@@ -22,6 +23,8 @@
|
||||
## 元数据回写清单
|
||||
- 改公网域名或迁移部署时,更新 `.project.json.urls` + 本节
|
||||
- 数据持久化在 `data/`(gitignored),不入库;上传原图在 `data/uploads/`
|
||||
- 本地 Docker 使用 `docker-compose.yml`,挂载 `./data:/app/data`,读取 `.env.local`,并强制 `PUBLIC_APP_URL=http://localhost:4560`
|
||||
- VPS 生产 Docker 使用 `docker-compose.prod.yml`,挂载 `./data:/app/data`,读取 `deploy/.env.production`,并强制 `PUBLIC_APP_URL=https://ai-toy.kang-kang.com`
|
||||
- VPS 数据持久化在 `/opt/ai-toy-patent-workflow/data`
|
||||
- VPS 生产环境变量在 `/opt/ai-toy-patent-workflow/deploy/.env.production`,不入库
|
||||
|
||||
@@ -35,6 +38,7 @@
|
||||
- `SEEDANCE_API_BASE` — 默认 `https://ark.cn-beijing.volces.com/api/v3`
|
||||
- `PUBLIC_APP_URL` — 生产填公网入口,用于把 `/api/img/...` 补成 Seedance 可访问的绝对 URL
|
||||
- 配置位置:`.env.local`(gitignored),参考 `.env.local.example`
|
||||
- 生产配置模板:`deploy/.env.production.example`;真实生产值只放 VPS 的 `/opt/ai-toy-patent-workflow/deploy/.env.production`
|
||||
- 图片生成未配置 GPT Key 时回退 mock(SVG 占位图),视频生成不 mock,必须配置 Seedance Key
|
||||
|
||||
## 规则
|
||||
|
||||
10
deploy/.env.production.example
Normal file
10
deploy/.env.production.example
Normal file
@@ -0,0 +1,10 @@
|
||||
# GPT API. Keep the real value only on the VPS at deploy/.env.production.
|
||||
OPENAI_API_KEY=
|
||||
GPT_TEXT_MODEL=gpt-5.5
|
||||
GPT_IMAGE_MODEL=gpt-image-2
|
||||
GPT_API_BASE=https://api.openai.com/v1
|
||||
|
||||
# Seedance video generation.
|
||||
SEEDANCE_API_KEY=
|
||||
SEEDANCE_MODEL=doubao-seedance-2-0-260128
|
||||
SEEDANCE_API_BASE=https://ark.cn-beijing.volces.com/api/v3
|
||||
20
docker-compose.yml
Normal file
20
docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
name: ai-toy-patent-workflow-local
|
||||
|
||||
services:
|
||||
web:
|
||||
container_name: ai-toy-patent-workflow-local
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
image: ai-toy-patent-workflow:local
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ./.env.local
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
PORT: "4560"
|
||||
PUBLIC_APP_URL: http://localhost:4560
|
||||
ports:
|
||||
- "4560:4560"
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
@@ -6,7 +6,10 @@
|
||||
"dev": "next dev -p 4560",
|
||||
"build": "next build",
|
||||
"start": "next start -p 4560",
|
||||
"lint": "next lint"
|
||||
"lint": "next lint",
|
||||
"docker:up": "docker compose up -d --build",
|
||||
"docker:down": "docker compose down",
|
||||
"docker:logs": "docker compose logs -f web"
|
||||
},
|
||||
"dependencies": {
|
||||
"next": "^15.5.18",
|
||||
|
||||
Reference in New Issue
Block a user