feat: 补充注释

This commit is contained in:
2026-04-26 01:13:38 +08:00
parent e26e2f5491
commit 4c58f409e9
23 changed files with 206 additions and 95 deletions
+21 -3
View File
@@ -1,3 +1,4 @@
// server/utils/imageGenerationRecords.ts - 生图相关数据库操作:用户快照、生成记录、历史查询和统计。
import type { IUserBasicData } from "#shared/types";
import type {
IImageGenerationStatsData,
@@ -238,8 +239,8 @@ export const getImageGenerationDetail = async (
return {
...mapImageGenerationItem(record),
imageMimeType: record.imageMimeType,
upstreamResponse: record.upstreamResponse,
hostedResponse: record.hostedResponse
upstreamResponse: null,
hostedResponse: null
};
};
@@ -295,6 +296,7 @@ const upsertGenerationStats = (update: Prisma.GenerationStatsUpdateInput) => {
});
};
/** 更新统计失败不能影响主链路,避免统计表问题导致生图接口失败 */
const safeUpsertGenerationStats = async (
update: Prisma.GenerationStatsUpdateInput
) => {
@@ -307,6 +309,7 @@ const safeUpsertGenerationStats = async (
}
};
/** upsert 创建统计行时,把本次 increment 转换为初始计数 */
const buildStatsCreateInput = (update: Prisma.GenerationStatsUpdateInput) => {
return {
totalRequests: getIncrementValue(update.totalRequests),
@@ -318,6 +321,7 @@ const buildStatsCreateInput = (update: Prisma.GenerationStatsUpdateInput) => {
};
};
/** 从 Prisma increment 操作里取出增量;非 increment 操作在创建时按 0 处理 */
const getIncrementValue = (value: unknown): number => {
if (
value &&
@@ -331,6 +335,7 @@ const getIncrementValue = (value: unknown): number => {
return 0;
};
/** 将 Prisma 记录转换为前端类型,BigInt/Date 在这里统一序列化 */
const mapImageGenerationItem = (record: {
id: bigint;
userId: number;
@@ -360,17 +365,30 @@ const mapImageGenerationItem = (record: {
imageUrl: record.imageUrl,
hostedImageUrl: record.hostedImageUrl,
revisedPrompt: record.revisedPrompt,
errorMessage: record.errorMessage,
errorMessage: getPublicRecordMessage(record.status, record.errorMessage),
createdAt: record.createdAt.toISOString()
};
};
/** 计算耗时并兜底为非负数,避免系统时间抖动导致负值 */
const getDurationMs = (startedAt: Date, endedAt: Date) => {
return Math.max(0, endedAt.getTime() - startedAt.getTime());
};
/** 保存到数据库的错误信息只保留可读摘要,不保存复杂错误对象 */
const getSafeErrorMessage = (error: unknown): string => {
if (error instanceof Error) return error.message;
if (typeof error === "string") return error;
return "图片生成失败";
};
/** 返回给前端的记录错误只保留本地泛化文案,具体内部错误留在数据库和服务端日志 */
const getPublicRecordMessage = (
status: ImageGenerationStatus,
errorMessage: string | null
): string | null => {
if (!errorMessage) return null;
return status === ImageGenerationStatus.SUCCEEDED
? "图片归档失败"
: "图片生成失败";
};