Фикс предпросмотра файлов с абсолютными 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:
@@ -16,6 +16,7 @@ import { validateRequiredFields } from "../utils/validate-required-fields";
|
||||
import { shiftRelatedTasks, calculateDateShift } from "../services/gantt-shift.service";
|
||||
import { runAutomationsByTrigger, type AutomationRunResult } from "./automation.routes";
|
||||
import { normalizeFieldValueForStorage } from "../utils/normalize-field-value";
|
||||
import { normalizeFileFieldUrls } from "../utils/upload";
|
||||
import { resolveRestActor, checkApiKeyWriteAccess } from "../utils/api-key-actor";
|
||||
import { db, withTenant } from "../db";
|
||||
import { eq, and, sql } from "drizzle-orm";
|
||||
@@ -261,6 +262,10 @@ export function registerTaskCrudWriteRoutes(router: ReturnType<typeof import("ex
|
||||
|
||||
// Auto-generate contract number for 'mine' mode
|
||||
let finalValue = normalizeFieldValueForStorage(value, field.type);
|
||||
// Нормализация self-URL в file-полях: абсолютные https://.../api/files/<key> → относительные
|
||||
if (field.type === 'file') {
|
||||
finalValue = normalizeFileFieldUrls(finalValue) as typeof finalValue;
|
||||
}
|
||||
if (field.type === 'contract-number') {
|
||||
const parsed = typeof value === 'string' ? JSON.parse(value) : value;
|
||||
if (parsed && parsed.mode === 'mine' && (!parsed.value || parsed.value === '')) {
|
||||
|
||||
Reference in New Issue
Block a user