chore(repo): дедуп formatAmount, пины образов, дефолты MinIO, доля any
Шаги 2.3 и 2.4 плана production-готовности: - lib/format.ts formatAmount вместо 2 локальных копий - пины тегов minio/rclone/ollama/traccar/pgvector + osrm по digest - minioadmin без дефолта (env required, dev-подсказки в .env.example) - 28 any в auto-transitions/shared типизированы из @shared/schema - удалён _tablefield_orig.txt - check/lint/build чисто, vitest 104/104
This commit is contained in:
@@ -5,6 +5,7 @@ import { logAudit } from '../utils/audit';
|
||||
import { db } from '../db';
|
||||
import { formatUserName } from '../utils/formatUserName';
|
||||
import { tasks, forms, roles } from '@shared/schema';
|
||||
import type { FormStatus, Task } from '@shared/schema';
|
||||
import { eq, and, inArray } from 'drizzle-orm';
|
||||
import { SseConnectionIndex } from '../utils/sse-connection-index';
|
||||
import { logger } from '../utils/logger';
|
||||
@@ -334,8 +335,8 @@ export const sseLimiter = rateLimit({
|
||||
});
|
||||
|
||||
export interface SystemFieldContext {
|
||||
statuses?: any[];
|
||||
usersMap?: Map<number, any>;
|
||||
statuses?: FormStatus[];
|
||||
usersMap?: Map<number, { firstName?: string | null; lastName?: string | null; middleName?: string | null; email?: string | null } | undefined>;
|
||||
}
|
||||
|
||||
function safeParseOptions(opts: unknown): unknown {
|
||||
@@ -606,7 +607,7 @@ export async function resolveTaskFieldTitles(
|
||||
}
|
||||
|
||||
export async function buildSystemFieldValues(
|
||||
task: any,
|
||||
task: Task,
|
||||
orgId: number,
|
||||
ctx?: SystemFieldContext
|
||||
): Promise<Map<string, string>> {
|
||||
@@ -618,7 +619,7 @@ export async function buildSystemFieldValues(
|
||||
// Use preloaded statuses if provided, otherwise fetch
|
||||
const statuses = ctx?.statuses
|
||||
?? (task.currentStatusId && task.formId ? await storage.getFormStatuses(task.formId, orgId) : []);
|
||||
const status = (statuses as any[]).find((s: any) => s.id === task.currentStatusId);
|
||||
const status = statuses.find((s) => s.id === task.currentStatusId);
|
||||
map.set('_status', status?.name ?? '');
|
||||
|
||||
if (task.assignedTo) {
|
||||
|
||||
Reference in New Issue
Block a user