No description
- TypeScript 96.5%
- HTML 3.3%
- CSS 0.1%
- JavaScript 0.1%
| .superpowers/brainstorm/1170693-1780491168 | ||
| data/uploads | ||
| docs/superpowers | ||
| prisma | ||
| public | ||
| scripts | ||
| src | ||
| .env.example | ||
| .env.local.example | ||
| .gitignore | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| prisma.config.ts | ||
| README.md | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
| vitest.config.ts | ||
Lum Image — AI 生图后端服务
东溪淼选生图助手后端,提供图片生成、图片分析、Live 图生成、用户管理等功能。
技术栈
- 框架: Next.js 16 (App Router)
- ORM: Prisma 7 + SQLite (better-sqlite3)
- 认证: bcryptjs + jsonwebtoken
- AI 模型: Lumorian API (gpt-image-2, mimo-v2.5)、DashScope API (happyhorse-1.1-i2v)
- 转换工具: ffmpeg(客户端本地运行)
快速开始
npm install
npx prisma migrate dev # 初始化数据库
npx tsx scripts/seed.ts # 创建管理员账号
npm run dev # 启动开发服务器 (port 3030)
管理员后台
首次访问 http://localhost:3030/admin,使用默认账号登录:
| 账号 | 密码 |
|---|---|
admin |
admin123456 |
首次登录强制修改密码,修改后方可进入管理后台。
管理后台功能
- 仪表盘: 调用统计(按服务/用户)
- 用户管理: 创建/编辑/删除用户,分配功能权限(灵感创作、裂变、文案仿写、自由创作、Live 图)
- API Key 管理: 配置各服务的 API Key 和自定义 Base URL
API Key 配置说明
API Key 由管理员在后台统一配置,存储于数据库中。用户在前端无需手动输入 Key。
| 服务 | 用途 | Base URL 示例 |
|---|---|---|
lumorian |
图片生成、灵感创作、图片分析 | https://api.lumorian.org |
dashscope |
Live 图视频生成 | https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis |
openai |
备用 | — |
Base URL 为可选字段,留空则使用默认值(Lumorian:
NEXT_PUBLIC_API_BASE_URL,DashScope:dashscope.aliyuncs.com/...)。百炼用户需填写包含 WorkspaceId 的完整地址。
API 端点
认证
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /api/auth/login |
账号密码登录,返回 JWT |
| GET | /api/auth/me |
获取当前用户信息与权限 |
| POST | /api/auth/change-password |
修改密码 |
Live 图生成
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /api/live-photo/generate |
提交 Live 图生成(SSE 流式进度) |
| GET | /api/live-photo/status |
查询任务状态 |
| GET | /api/live-photo/download/[taskId] |
获取下载信息 |
Live 图生成需用户登录且拥有
livephoto权限,API Key 和 Base URL 由服务端从数据库读取。
图片生成
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /api/upload |
上传图片 |
| POST | /api/analyze |
分析参考图片(使用 Lumorian API) |
| POST | /api/generate-structured-sse |
图片生成 SSE 流式(使用 Lumorian API) |
| POST | /api/generate-structured |
灵感创作 / 风格裂变 / 自由创作 |
| POST | /api/generate |
图片生成简化版 |
以上接口的 API Key 由服务端从数据库读取,前端无需传递
x-api-key。
管理 API(需 admin 权限)
| 方法 | 端点 | 说明 |
|---|---|---|
| GET/POST | /api/admin/users |
用户列表 / 新建 |
| PATCH/DELETE | /api/admin/users/[id] |
编辑 / 删除用户 |
| GET/PUT | /api/admin/api-keys |
API Key 查看 / 保存 |
| GET | /api/admin/usage |
用量统计 |
环境变量
| 变量 | 说明 | 默认值 |
|---|---|---|
JWT_SECRET |
JWT 签名密钥 | lum-jwt-secret-...(生产必须更换) |
ADMIN_USERNAME |
默认管理员账号 | admin |
ADMIN_PASSWORD |
默认管理员密码 | admin123456 |
NEXT_PUBLIC_API_BASE_URL |
Lumorian API 默认地址(管理员可在后台按服务覆盖) | https://api.lumorian.org |
NEXT_PUBLIC_IMAGE_BASE_URL |
图片服务地址 | https://image.lumorian.org |
API Key 和 Base URL 现在通过管理后台配置并存储于数据库,不再依赖
DASHSCOPE_ENDPOINT等环境变量硬编码。
Live 图生成流程
用户提交 (prompt + image_url + resolution + duration)
→ 后端调用 DashScope API(异步)
→ 轮询任务状态
→ 获取视频 URL → 返回给客户端
→ 客户端(Electron)本地运行 ffmpeg 转换
→ 输出 Apple Live Photo (.heic + .mov)
数据库
SQLite 数据库位于 data/lum.db,包含以下表:
| 表 | 说明 |
|---|---|
users |
用户账号、密码哈希、功能权限、日限额 |
api_keys |
后端统一管理的 API Key,支持自定义 baseUrl |
usage_logs |
每次 API 调用的记录 |
live_photo_tasks |
Live 图生成任务记录 |
目录结构
src/
├── app/
│ ├── admin/ # 管理后台 Web 界面
│ ├── api/
│ │ ├── auth/ # 登录、修改密码
│ │ ├── admin/ # 用户管理、API Key、用量统计
│ │ ├── live-photo/ # Live 图生成、状态、下载
│ │ └── ... # 原有生成/分析/上传端点
│ └── detect/ # 图片检测工具
├── lib/
│ ├── auth/ # JWT 认证、API Key 管理、种子脚本
│ ├── livephoto/ # DashScope 集成、视频转换
│ ├── prompts/ # 生图 prompt 模板
│ └── db.ts # Prisma 客户端单例
└── components/ # Web UI 组件