Files
mkd/inspectionElementTemplates.ts
2026-02-04 00:17:04 +05:00

90 lines
4.6 KiB
TypeScript
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { InspectionMKDElement } from './types';
function createElement(id: string, name: string): InspectionMKDElement {
return {
id,
name,
generalStatus: 'NOT_SELECTED',
electroStatus: 'NOT_SELECTED',
weldingStatus: 'NOT_SELECTED',
repairType: '',
mainPhoto: undefined,
additionalPhotos: []
};
}
/** Типовые наименования элементов по этажу подъезда (поэтажный осмотр). */
export const FLOOR_ELEMENT_NAMES = [
'Стены и потолок',
'Напольное покрытие',
'Лестничный марш',
'Перила',
'Окна и подоконники',
'Освещение',
'Почтовые ящики',
'Двери в квартиры (состояние коробок)',
'Колясочная (при наличии)'
] as const;
/** Типовые элементы для секции «Парадная» (входная группа). */
export const ENTRANCE_ELEMENT_NAMES = [
'Входная дверь',
'Козырьки',
'Домофон / видеодомофон',
'Освещение',
'Уборка / состояние вестибюля'
] as const;
/** Элементы по общим секциям (ключ — title секции). */
export const COMMON_SECTION_ELEMENTS: Record<string, readonly string[]> = {
'Кровля': ['Покрытие', 'Примыкания', 'Водосточная система', 'Выходы на кровлю', 'Ограждения'],
'Подвал': ['Несущие конструкции', 'Коммуникации', 'Освещение', 'Вентиляция', 'Отсутствие протечек / затоплений', 'Двери и люки'],
'Фундамент': ['Видимая часть фундамента', 'Отмостка', 'Гидроизоляция', 'Вентиляционные продухи'],
'Фасад': ['Стены', 'Швы', 'Окна общего пользования', 'Отливы', 'Балконы (общие конструкции)'],
'Благоустройство': [
'Дорожки и проезды, тротуары',
'Освещение дворовой территории',
'Урны и контейнеры для мусора',
'Контейнерная площадка',
'Озеленение (газоны, кустарники)',
'Детская / спортивная площадки',
'Парковочные места',
'Ограждение территории',
'Крыльца и входные группы (со стороны двора)',
'Ливневая канализация'
],
'Общий паркинг': ['Покрытие', 'Разметка', 'Освещение', 'Ограждение', 'Вентиляция (если подземный)'],
'Технический этаж': ['Конструкции', 'Инженерное оборудование', 'Освещение', 'Доступ'],
'Чердак': ['Конструкции', 'Утепление', 'Вентиляция', 'Освещение', 'Люки'],
'Цоколь': ['Видимая часть цоколя', 'Отмостка', 'Гидроизоляция', 'Вентиляционные продухи']
};
/** Создать массив элементов МКД из списка названий (с уникальными id). */
export function buildElementsFromNames(
names: readonly string[],
prefix: string
): InspectionMKDElement[] {
return names.map((name, idx) =>
createElement(`${prefix}-${idx}-${Date.now()}`, name)
);
}
/** Создать элементы этажа по шаблону. */
export function buildFloorElements(entranceNumber: number, floorNumber: number): InspectionMKDElement[] {
const prefix = `entrance-${entranceNumber}-floor-${floorNumber}`;
return buildElementsFromNames(FLOOR_ELEMENT_NAMES, prefix);
}
/** Создать элементы парадной по шаблону. */
export function buildEntranceElements(entranceNumber: number): InspectionMKDElement[] {
const prefix = `entrance-${entranceNumber}`;
return buildElementsFromNames(ENTRANCE_ELEMENT_NAMES, prefix);
}
/** Создать элементы для общей секции по title. */
export function buildCommonSectionElements(sectionTitle: string, sectionId: string): InspectionMKDElement[] {
const names = COMMON_SECTION_ELEMENTS[sectionTitle];
if (!names || names.length === 0) return [];
return buildElementsFromNames(names, sectionId);
}