Фикс предпросмотра файлов с абсолютными self-URL
- extractFileKey понимает абсолютные URL (по pathname) — превью работает для уже записанных файлов - normalizeFileUrl: абсолютные self-URL нормализуются в относительные при записи file-полей (REST field-values, MCP update_task_fields/upload-инструменты, bot-api, create task)
This commit is contained in:
@@ -15,6 +15,7 @@ import { withSuperAdmin, openTenantCtx, _tenantCtx, db } from "../db";
|
||||
import { eq, and, desc, sql, lt, inArray } from "drizzle-orm";
|
||||
import { enrichMessage, getMembersForSSE } from "./messenger.helpers";
|
||||
import { notificationService } from "../services/notification.service";
|
||||
import { normalizeFileFieldUrls } from "../utils/upload";
|
||||
|
||||
export function registerBotApiRoutes(app: import("express").Express): void {
|
||||
// =====================================================
|
||||
@@ -341,9 +342,11 @@ export function registerBotApiRoutes(app: import("express").Express): void {
|
||||
const field = fieldMap.get(code);
|
||||
if (!field) continue;
|
||||
|
||||
// Нормализация self-URL в file-полях: абсолютные https://.../api/files/<key> → относительные
|
||||
const storedValue = field.type === 'file' ? normalizeFileFieldUrls(value) : value;
|
||||
try {
|
||||
await storage.updateTaskFieldValue(taskId, field.id, req.organizationId!, {
|
||||
value: value as string | number | boolean | null | Record<string, unknown>
|
||||
value: storedValue as string | number | boolean | null | Record<string, unknown>
|
||||
});
|
||||
} catch {
|
||||
// Если запись не существует, создаём
|
||||
@@ -351,7 +354,7 @@ export function registerBotApiRoutes(app: import("express").Express): void {
|
||||
taskId,
|
||||
fieldId: field.id,
|
||||
formId: task.formId,
|
||||
value: value as string | number | boolean | null | Record<string, unknown>
|
||||
value: storedValue as string | number | boolean | null | Record<string, unknown>
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user