No description
- TypeScript 97.5%
- CSS 2.4%
| 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.5, 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 |
首次登录强制修改密码,修改后方可进入管理后台。
管理后台功能
- 数据概览(
/admin/dashboard):按日期查看调用统计、功能分布与用户调用明细 - 用户管理(
/admin/users):搜索和筛选成员,创建/编辑/删除用户,分配功能权限与每日额度 - 渠道与模型(
/admin/channels):配置服务凭证、Base URL,添加和启停模型 - 模型分配(
/admin/models):为各功能的调用环节选择模型 - 备用路线(
/admin/backup):配置 Wish 备用生图模型 - 注册码管理(
/admin/reg-codes):生成注册码,管理使用次数和启用状态
后台使用统一侧边导航,支持浅色/深色主题与移动端布局。
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 的完整地址。
模型配置说明
- 每个渠道(Base URL + API Key)下可挂多个模型,在管理后台「渠道与模型」中维护。
- 每个功能的每个环节(如 灵感创作 = 分析图片 + 生成提示词 + 生成图片)可单独绑定模型, 在「模型分配」中配置;未绑定的环节使用默认模型(与升级前行为一致)。
- 上游某个模型故障时,管理员在此切换即可,无需改代码或重启服务(配置缓存约 10 分钟, 保存配置后立即生效)。
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 组件