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 = { 'Кровля': ['Покрытие', 'Примыкания', 'Водосточная система', 'Выходы на кровлю', 'Ограждения'], 'Подвал': ['Несущие конструкции', 'Коммуникации', 'Освещение', 'Вентиляция', 'Отсутствие протечек / затоплений', 'Двери и люки'], 'Фундамент': ['Видимая часть фундамента', 'Отмостка', 'Гидроизоляция', 'Вентиляционные продухи'], 'Фасад': ['Стены', 'Швы', 'Окна общего пользования', 'Отливы', 'Балконы (общие конструкции)'], 'Благоустройство': [ 'Дорожки и проезды, тротуары', 'Освещение дворовой территории', 'Урны и контейнеры для мусора', 'Контейнерная площадка', 'Озеленение (газоны, кустарники)', 'Детская / спортивная площадки', 'Парковочные места', 'Ограждение территории', 'Крыльца и входные группы (со стороны двора)', 'Ливневая канализация' ], 'Общий паркинг': ['Покрытие', 'Разметка', 'Освещение', 'Ограждение', 'Вентиляция (если подземный)'], 'Технический этаж': ['Конструкции', 'Инженерное оборудование', 'Освещение', 'Доступ'], 'Чердак': ['Конструкции', 'Утепление', 'Вентиляция', 'Освещение', 'Люки'], 'Цоколь': ['Видимая часть цоколя', 'Отмостка', 'Гидроизоляция', 'Вентиляционные продухи'] }; /** Создать массив элементов МКД из списка названий (с уникальными 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); }