Andrey Epifancev efa537e008 perf: каркас замеров фронта
Refs #202

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 22:12:36 +04:00

38 lines
1.2 KiB
TypeScript

import { readFileSync } from 'node:fs';
import path from 'node:path';
export interface User { username: string; password: string; role_id: number }
export interface Sheet {
form_id: number; form_type: string; sheet: string; direction: string | null; year: number;
url: string; rows: number; owner: 'rf' | 'ssp';
}
export interface ProjectReport { project_id: number; year: number; report_type: string; url: string; rows: number }
export interface Page { name: string; url: string }
export interface Manifest {
scale: number;
users: Record<string, User>;
sheets: Sheet[];
project_reports: ProjectReport[];
svods: Page[];
modal_pages: Page[];
}
export const PERF_DIR = path.resolve(__dirname, '../..');
export function scale(): number {
return Number(process.env.PERF_SCALE ?? 1);
}
export function loadManifest(sc: number = scale()): Manifest {
const p = path.join(PERF_DIR, 'results', `manifest-s${sc}.json`);
const d = JSON.parse(readFileSync(p, 'utf-8'));
return {
scale: d.scale,
users: d.users ?? {},
sheets: (d.sheets ?? []).map((s: Sheet) => ({ owner: 'rf', ...s })),
project_reports: d.project_reports ?? [],
svods: d.svods ?? [],
modal_pages: d.modal_pages ?? [],
};
}