feat: 移除图片生成记录中的尺寸字段,调整归档逻辑以支持异步处理
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
- 所有返回给前端的 `msg` 必须使用本地业务表达,不提及“上游”“NewAPI”“Lsky”“供应商”“token”“key”等内部来源;内部异常统一返回“服务器内部错误”。
|
||||
- 注释和日志要解释意图、边界和排查信息,不输出密码、cookie、完整 key、token、图片二进制或完整 prompt。
|
||||
- 已存在的说明性注释不要随意删除,尤其是 `server/utils/openai.ts` 里的模型调用、视觉输入、流式解析等上下文注释。
|
||||
- 不要写任何可能阻塞整个进程的代码。
|
||||
|
||||
## API 路由规范
|
||||
|
||||
@@ -59,17 +60,21 @@
|
||||
|
||||
## 生图、图床与历史记录
|
||||
|
||||
- `POST /api/images/generate` 当前同步等待生图完成后返回,不向前端透传流式进度。
|
||||
- `POST /api/images/generate` 当前同步等待生图完成后立即返回,不向前端透传流式进度,也不等待图床归档完成。
|
||||
- 生图成功后返回:
|
||||
- `imageUrl`:生成图片访问地址,前端当前优先展示。
|
||||
- `hostedImageUrl`:Lsky 图床归档后的 URL,归档失败时为 `null`。
|
||||
- `revisedPrompt`:流式 chat completions 当前没有等价字段,通常为空。
|
||||
- 生图主链路先把记录落库为 `SUCCEEDED`,并清空 `hostedImageUrl`、`hostedResponse`、`imageMimeType`、`errorMessage`;之后再由响应后的后台任务异步上传 Lsky。
|
||||
- 历史记录中的图床归档状态约定:
|
||||
- `status === "SUCCEEDED"` 且 `hostedImageUrl === null` 且 `errorMessage === null`:表示图片已生成、仍在归档中。
|
||||
- `status === "SUCCEEDED"` 且 `hostedImageUrl === null` 且 `errorMessage !== null`:表示归档失败。
|
||||
- `hostedImageUrl !== null`:表示归档成功。
|
||||
- Lsky 归档逻辑集中在 `server/utils/lsky.ts`:
|
||||
- 配置从 `LSKY_BASE_URL`、`LSKY_TOKEN`、`LSKY_STORAGE_ID` 读取。
|
||||
- 上传时先下载上游图片,再用 `multipart/form-data` 调 Lsky `/upload`。
|
||||
- 文件名格式为 `userId_username_timestamp_recordId.ext`。
|
||||
- tags 固定包含 `AIArtStudio`、`user:{userId}`、`record:{recordId}`、`model:gpt-image-2`。
|
||||
- 图床上传失败不影响本次生图成功:接口仍返回 `imageUrl`,数据库记录归档失败提示;前端可见文案只能说“图片归档失败”等本地描述。
|
||||
- 图床上传失败不影响本次生图成功:接口仍立即返回 `imageUrl`,数据库记录归档失败提示;前端可见文案只能说“图片归档失败”等本地描述。
|
||||
- 数据库不保存图片 base64;不要恢复 `image_base64` 或类似大文本存图方案。
|
||||
- 历史列表和详情都不向前端返回完整上游响应、图床响应或内部错误详情;这些内容可以入库供服务端排查,但 API 响应应固定隐藏或置空。
|
||||
|
||||
@@ -82,10 +87,13 @@
|
||||
- 登录或 `/api/auth/me` 成功后会 upsert `User` 快照,主键使用 NewAPI 用户 id。
|
||||
- 生图记录写入 `ImageGeneration`:
|
||||
- 开始时写 `RUNNING`。
|
||||
- 成功时写 `SUCCEEDED`、上游 URL、图床 URL、MIME、完整上游响应、完整图床响应、耗时。
|
||||
- 生成成功时先写 `SUCCEEDED`、上游 URL、完整上游响应、耗时。
|
||||
- 后台归档成功后再补写图床 URL、MIME、完整图床响应。
|
||||
- 后台归档失败时只补写本地错误文案,不把记录改回失败。
|
||||
- 失败时写 `FAILED`、错误信息、耗时。
|
||||
- 删除历史采用软删除 `deletedAt`。
|
||||
- `GenerationStats` 使用固定 id `global` 记录全局统计。
|
||||
- `runningRequests` 只表示生图进行中,不包含图床归档阶段。
|
||||
- 统计更新失败只记录日志,不应阻断用户拿到已经生成的图片。
|
||||
- 需要变更数据库结构时,同时维护 Prisma migration 和 `create_tables.sql`。
|
||||
|
||||
@@ -100,8 +108,8 @@
|
||||
- `create_running_record`
|
||||
- `get_api_key`
|
||||
- `call_image_stream_api`
|
||||
- `upload_lsky`
|
||||
- `finish_success_record`
|
||||
- 图床归档改为响应后的后台日志阶段,继续打印 `recordId`、归档是否成功、失败摘要等信息,但不影响主请求返回。
|
||||
- 不记录密码、cookie、完整 API key、Lsky token、完整 prompt、图片二进制、base64。
|
||||
- 全局请求日志中间件只记录 method、path、status、耗时,不记录请求体和响应体。
|
||||
|
||||
@@ -131,7 +139,7 @@
|
||||
- 用户服务在 `app/services/user_service.ts`,图片服务在 `app/services/image_service.ts`。
|
||||
- 登录成功后可以调用 `UserReady()` 准备环境;`/api/auth/me` 恢复登录状态时不自动调用 ready。
|
||||
- 当前首页生图组件为 `app/components/ImageGenerateCom.vue`,优先展示响应中的 `imageUrl`。
|
||||
- `hostedImageUrl` 作为图床归档地址返回,后续需要切换展示来源时再调整前端策略。
|
||||
- `hostedImageUrl` 不在生成接口中返回,只在历史记录中作为归档结果字段保留;后续需要切换展示来源时再调整前端策略。
|
||||
|
||||
## 代码风格
|
||||
|
||||
|
||||
Reference in New Issue
Block a user