Files
mkd/constants.tsx

526 lines
25 KiB
TypeScript
Raw Permalink Normal View History

2026-02-04 00:17:04 +05:00
import { Building, District, EntranceSection, User, Employee, Candidate, Vacancy, PREvent, ResidentReport, DomaApplication, ResidentFeedback, StrategicGoal, Invoice, OfficeRequest, OfficeInventoryItem, OfficeDocument, OfficeAsset, LegalContract, LegalCourtCase, LegalCounterparty, PersonalAccount, AccountMeter, MeterReading } from './types';
import {
LayoutDashboard,
Map,
Wrench,
Banknote,
Scale,
Briefcase,
UsersRound,
Megaphone,
Building2,
Settings,
} from 'lucide-react';
export const CURRENT_USER_MOCK: User = {
id: 'u1',
name: 'Алексей Петров',
role: 'DIRECTOR',
avatar: 'https://picsum.photos/id/1005/64/64'
};
export const MOCK_DISTRICTS: District[] = [];
export const EMPLOYEE_POSITIONS: string[] = [
'Слесарь-сантехник',
'Электрик',
'Дворник',
'Мастер участка',
'Сантехник',
'Сварщик',
'Юрист по работе с дебиторской задолженностью',
'Слесарь-сантехник (4-5 разряд)',
'Другое'
];
export const MOCK_EMPLOYEES: Employee[] = [
{
id: 'e1',
name: 'Иванов Иван Иванович',
position: 'Слесарь-сантехник',
phone: '+7 900 123-45-67',
status: 'active',
salary: 45000,
assignedDistrictId: 'd-1',
birthDate: '1985-03-15',
messengerLogins: [
{ messenger: 'Telegram', login: '@ivanov_ii' },
{ messenger: 'Max', login: '+7 900 123-45-67' }
],
photoUrl: 'https://picsum.photos/id/64/200/200',
registrationDate: '2020-01-15',
hrData: {
passportData: {
series: '4510',
number: '123456',
issuedBy: 'ОУФМС России по г. Москве',
issuedDate: '2010-05-20',
registrationAddress: 'г. Москва, ул. Ленина, д. 10, кв. 25'
},
laborBook: {
number: 'ТК-123456',
entries: [
{ date: '2020-01-15', organization: 'ООО "УК Дружба"', position: 'Слесарь-сантехник' }
]
},
certificates: [
{ type: '2-НДФЛ', requestedDate: '2024-01-10', issuedDate: '2024-01-12', status: 'ready' },
{ type: 'Справка с места работы', requestedDate: '2024-03-05', status: 'requested' }
],
otherDocuments: [
{ name: 'Договор трудового найма', type: 'Трудовой договор', date: '2020-01-15' },
{ name: 'Медицинская книжка', type: 'Мед. документ', date: '2023-06-10' }
]
}
},
{
id: 'e2',
name: 'Петров Петр Петрович',
position: 'Электрик',
phone: '+7 900 123-45-68',
status: 'vacation',
salary: 50000,
assignedDistrictId: 'd-1',
birthDate: '1988-07-22',
messengerLogins: [
{ messenger: 'Telegram', login: '@petrov_pp' }
],
registrationDate: '2019-05-10',
hrData: {
passportData: {
series: '4512',
number: '234567',
issuedBy: 'ОУФМС России по г. Москве',
issuedDate: '2012-08-15',
registrationAddress: 'г. Москва, пр. Мира, д. 5, кв. 12'
},
laborBook: {
number: 'ТК-234567',
entries: [
{ date: '2019-05-10', organization: 'ООО "УК Дружба"', position: 'Электрик' }
]
}
}
},
{
id: 'e3',
name: 'Сидорова Анна Александровна',
position: 'Дворник',
phone: '+7 900 123-45-69',
status: 'active',
salary: 25000,
assignedDistrictId: 'd-2',
birthDate: '1975-11-30',
messengerLogins: [
{ messenger: 'Max', login: '+7 900 123-45-69' }
],
photoUrl: 'https://picsum.photos/id/65/200/200',
registrationDate: '2021-03-01',
hrData: {
passportData: {
series: '4508',
number: '345678',
issuedBy: 'ОУФМС России по г. Москве',
issuedDate: '2008-12-10',
registrationAddress: 'г. Москва, ул. Заречная, д. 20, кв. 8'
},
laborBook: {
number: 'ТК-345678',
entries: [
{ date: '2021-03-01', organization: 'ООО "УК Дружба"', position: 'Дворник' }
]
},
certificates: [
{ type: 'Справка о доходах', requestedDate: '2024-05-15', status: 'requested' }
]
}
},
{
id: 'e4',
name: 'Кузнецов Владимир Викторович',
position: 'Мастер участка',
phone: '+7 900 111-22-33',
status: 'active',
salary: 65000,
assignedDistrictId: 'd-1',
birthDate: '1980-02-14',
messengerLogins: [
{ messenger: 'Telegram', login: '@kuznetsov_vv' },
{ messenger: 'Max', login: '+7 900 111-22-33' }
],
photoUrl: 'https://picsum.photos/id/66/200/200',
registrationDate: '2018-09-01',
hrData: {
passportData: {
series: '4509',
number: '456789',
issuedBy: 'ОУФМС России по г. Москве',
issuedDate: '2009-03-25',
registrationAddress: 'г. Москва, ул. Центральная, д. 15, кв. 45'
},
laborBook: {
number: 'ТК-456789',
entries: [
{ date: '2018-09-01', organization: 'ООО "УК Дружба"', position: 'Мастер участка' },
{ date: '2015-01-10', organization: 'ООО "СтройСервис"', position: 'Мастер' }
]
},
certificates: [
{ type: '2-НДФЛ', requestedDate: '2024-01-10', issuedDate: '2024-01-12', status: 'ready' }
]
}
},
{
id: 'e5',
name: 'Степанов Сергей Сергеевич',
position: 'Сантехник',
phone: '+7 900 444-55-66',
status: 'active',
salary: 42000,
assignedDistrictId: 'd-2',
birthDate: '1990-09-05',
messengerLogins: [
{ messenger: 'Telegram', login: '@stepanov_ss' }
],
registrationDate: '2022-06-15',
hrData: {
passportData: {
series: '4511',
number: '567890',
issuedBy: 'ОУФМС России по г. Москве',
issuedDate: '2011-11-18',
registrationAddress: 'г. Москва, ул. Новая, д. 8, кв. 15'
},
laborBook: {
number: 'ТК-567890',
entries: [
{ date: '2022-06-15', organization: 'ООО "УК Дружба"', position: 'Сантехник' }
]
}
}
},
];
export const MOCK_CANDIDATES: Candidate[] = [
{ id: 'c1', name: 'Новиков Д.Д.', position: 'Мастер участка', stage: 'interview', phone: '+7 999 000-00-01' },
{ id: 'c2', name: 'Козлов Е.Е.', position: 'Сварщик', stage: 'new', phone: '+7 999 000-00-02' },
];
export const MOCK_VACANCIES: Vacancy[] = [
{ id: 'v1', position: 'Слесарь-сантехник (4-5 разряд)', department: 'Тех. отдел', status: 'urgent', salary: '55 000 - 65 000 ₽', applicantsCount: 3, postedDate: '2024-05-10', description: 'Техническое обслуживание внутридомовых инженерных систем ГВС, ХВС, отопления и канализации.' },
{ id: 'v2', position: 'Мастер участка', department: 'Эксплуатация', status: 'active', salary: '70 000 ₽', applicantsCount: 12, postedDate: '2024-05-15', description: 'Организация и контроль работы линейного персонала на вверенном участке (8-10 МКД).' },
{ id: 'v3', position: 'Юрист по работе с дебиторской задолженностью', department: 'Юр. отдел', status: 'active', salary: '60 000 ₽', applicantsCount: 8, postedDate: '2024-05-20', description: 'Подготовка приказов, исковых заявлений, представление интересов УК в судах и ФССП.' },
];
export const MOCK_PR_EVENTS: PREvent[] = [
{ id: 'ev1', title: 'День Соседа (Гриль-вечеринка)', date: '2024-06-15', type: 'resident', category: 'holiday', status: 'planned', location: 'ул. Ленина, д.12 (двор)', attendeesCount: 0, budget: 15000 },
{ id: 'ev2', title: 'Эко-субботник "Чистый Участок"', date: '2024-06-08', type: 'resident', category: 'eco', status: 'planned', location: 'пр. Мира, д.8', attendeesCount: 0, budget: 5000 },
{ id: 'ev3', title: 'Квартальный Тимбилдинг (Квиз)', date: '2024-06-20', type: 'internal', category: 'training', status: 'planned', location: 'Офис УК', attendeesCount: 24, budget: 12000 },
];
export const MOCK_RESIDENT_REPORTS: ResidentReport[] = [
{ id: 'rep1', buildingId: 'b-1', address: 'Тестовый пер., д.55', month: 'Май 2024', status: 'published', stats: { appsDone: 42, budgetSpent: 125000, cleaningQuality: 4.8 } },
{ id: 'rep2', buildingId: 'b-2', address: 'ул. Ленина, д.12', month: 'Май 2024', status: 'draft', stats: { appsDone: 15, budgetSpent: 45000, cleaningQuality: 3.2 } },
];
export const MOCK_STRATEGIC_GOALS: StrategicGoal[] = [
{ id: 'g1', department: 'production', title: 'Качество и Скорость', description: 'Снизить долю просроченных заявок', currentValue: 8, targetValue: 5, unit: '%', deadline: '30.09.2024' },
{ id: 'g2', department: 'pr', title: 'Лояльность Жителей', description: 'Повысить общий NPS по компании', currentValue: 68, targetValue: 75, unit: '', deadline: '31.12.2024' },
{ id: 'g3', department: 'finance', title: 'Финансовая Эффективность', description: 'Достичь чистой прибыли (мес)', currentValue: 1200000, targetValue: 1500000, unit: '₽', deadline: '31.07.2024' },
{ id: 'g4', department: 'development', title: 'Рост Портфеля', description: 'Подключить новые дома в управление', currentValue: 3, targetValue: 5, unit: 'домов', deadline: '31.12.2024' },
{ id: 'g5', department: 'legal', title: 'Юридическая Сила', description: 'Повысить процент выигранных дел', currentValue: 85, targetValue: 90, unit: '%', deadline: '30.09.2024' },
{ id: 'g6', department: 'hr', title: 'Стабильность Команды', description: 'Снизить текучесть кадров (год)', currentValue: 12, targetValue: 10, unit: '%', deadline: '31.12.2024' },
];
export const MOCK_FEEDBACK: ResidentFeedback[] = [
{ id: 'f1', buildingId: 'b-1', address: 'Тестовый пер., д.55', date: '2024-05-28', text: 'Очень довольна работой дворника, всегда чисто во дворе. Спасибо!', source: 'Опрос', rating: 10 },
{ id: 'f2', buildingId: 'b-2', address: 'ул. Ленина, д.12', date: '2024-05-27', text: 'Лифт постоянно ломается, уже неделю хожу пешком на 8 этаж. Это просто издевательство.', source: 'Приложение', rating: 1 },
];
export const MOCK_APPLICATIONS: DomaApplication[] = [
{ id: 12345, number: 'A-12345', status: 'new', description: 'Течь трубы в ванной комнате, сильный напор.', address: 'Тестовый пер., д.55', apartment: '15', clientName: 'Сергеева А.Н.', createdAt: '2024-05-30T10:00:00Z', deadlineAt: '2024-05-30T18:00:00Z' },
];
export const MOCK_OFFICE_REQUESTS: OfficeRequest[] = [
{ id: 'or1', requesterName: 'Иванова М. (HR)', category: 'stationery', itemName: 'Бумага А4 (5 коробок)', date: '2024-06-01', status: 'new', amount: 3500, priority: 'medium' },
];
export const MOCK_OFFICE_INVENTORY: OfficeInventoryItem[] = [
{ id: 'oi1', name: 'Бумага А4 (SvetoCopy)', quantity: 2, unit: 'кор.', minThreshold: 3, lastRestock: '2024-05-10' },
];
export const MOCK_OFFICE_DOCUMENTS: OfficeDocument[] = [
// FIX: Added type property to mock data to match interface and resolve errors in components
{ id: 'doc1', regNumber: 'ВХ-1234', title: 'Требование об уплате налога', correspondent: 'ИФНС №5', date: '2024-06-01', status: 'registered', type: 'incoming', assignedTo: 'Гл. Бухгалтер' },
];
export const MOCK_OFFICE_ASSETS: OfficeAsset[] = [
{ id: 'as1', name: 'MacBook Air M1', type: 'laptop', assignedTo: 'Алексей Петров', purchaseDate: '2023-01-15', condition: 'good', serialNumber: 'C02XXXXX' },
];
// LEGAL MOCK DATA
export const MOCK_LEGAL_CONTRACTS: LegalContract[] = [
{ id: 'lc1', number: '2024/05-12', type: 'Поставка', counterparty: 'ООО "СтройМаш"', amount: 1500000, status: 'active', startDate: '2024-01-01', endDate: '2024-12-31', autoProlongation: true, manager: 'Петров А.А.', hasDisagreements: false },
];
export const MOCK_LEGAL_CASES: LegalCourtCase[] = [
{ id: 'case1', caseNumber: 'А40-12345/2024', type: 'arbitration', role: 'plaintiff', subject: 'Взыскание задолженности с ООО "Ромашка"', amount: 450000, status: 'litigation', nextHearingDate: '2024-06-25', judge: 'Иванова М.С.' },
{ id: 'case2', caseNumber: '2-1234/2024', type: 'debt_recovery', role: 'plaintiff', subject: 'Взыскание за ЖКУ', debtorName: 'Козлов Е.Е.', address: 'ул. Ленина, 12, кв. 45', amount: 85000, status: 'litigation', nextHearingDate: '2024-06-12', judge: 'Петров В.В.' },
{ id: 'case3', caseNumber: '2-5566/2023', type: 'debt_recovery', role: 'plaintiff', subject: 'Взыскание за ЖКУ', debtorName: 'Сидорова А.М.', address: 'пр. Мира, 8, кв. 101', amount: 120000, recoveredAmount: 45000, amountAtBailiffs: 15000, status: 'enforcement', fsspStatus: 'Арест счетов', fsspLastActionDate: '2024-05-10', bailiffName: 'Успенский С.В.', judge: 'Михайлова Е.Н.' },
{ id: 'case4', caseNumber: 'пр-778', type: 'debt_recovery', role: 'plaintiff', subject: 'Претензия по задолженности', debtorName: 'Иванов С.С.', address: 'Заречная, 44, кв. 12', amount: 35000, status: 'pre_trial' },
];
export const MOCK_LEGAL_COUNTERPARTIES: LegalCounterparty[] = [
{ id: 'cp1', name: 'ООО "СтройМаш"', inn: '7701234567', status: 'active', riskLevel: 'low', checkedDate: '2024-05-20' },
];
// MOCK данные модуля развития удалены - теперь используются данные из БД через API
// Данные загружаются через backendApi.getDevelopmentPipeline(), getDevelopmentOSS(), и т.д.
// Helper to create elements
const createElement = (id: string, name: string) => ({
id,
name,
generalStatus: 'NOT_SELECTED' as const,
electroStatus: 'NOT_SELECTED' as const,
weldingStatus: 'NOT_SELECTED' as const,
});
const createEntranceSections = (prefix: string): EntranceSection[] => [
{
id: `${prefix}-floors`,
title: 'Этажи',
elements: [
createElement(`${prefix}-fl-1`, 'Напольное покрытие'),
createElement(`${prefix}-fl-2`, 'Освещение'),
]
}
];
const createCommonSections = (prefix: string): EntranceSection[] => [
{
id: `${prefix}-roof`,
title: 'Кровля',
elements: [
createElement(`${prefix}-roof-1`, 'Покрытие'),
]
}
];
const createEntrance = (num: number, bId: string) => ({
id: `${bId}-ent-${num}`,
number: num,
floors: 10,
liftsCount: 1,
hasBasement: 'NOT_SELECTED' as const,
hasTechFloor: 'NOT_SELECTED' as const,
hasAttic: 'NOT_SELECTED' as const,
hasParking: 'NOT_SELECTED' as const,
hasMansard: 'NOT_SELECTED' as const,
entranceGroupsCount: 1,
sections: createEntranceSections(`${bId}-ent-${num}`)
});
// Helper: Generate Readings History
const generateReadingsHistory = (baseValue: number): MeterReading[] => {
const readings: MeterReading[] = [];
let currentValue = baseValue;
const today = new Date();
for (let i = 0; i < 12; i++) {
const date = new Date(today.getFullYear(), today.getMonth() - i, 20);
const consumption = Math.floor(Math.random() * 20) + 5;
readings.push({
date: date.toISOString().split('T')[0],
value: currentValue,
consumption: consumption,
source: 'app'
});
currentValue -= consumption;
}
return readings;
};
// Helper to create mock personal accounts
const createMockAccounts = (buildingId: string, aptCount: number): PersonalAccount[] => {
const accounts: PersonalAccount[] = [];
const types: Array<'apartment' | 'parking' | 'storage' | 'office'> = ['apartment', 'parking', 'storage', 'office'];
const sentiments: Array<'negative' | 'toxic' | 'positive' | 'loyal' | 'neutral'> = ['negative', 'toxic', 'positive', 'loyal', 'neutral'];
for (let i = 1; i <= aptCount; i++) {
const areaTotal = Math.floor(40 + Math.random() * 60);
const accountType = i <= aptCount * 0.8 ? 'apartment' : types[Math.floor(Math.random() * types.length)];
const hasProfile = Math.random() > 0.3; // 70% имеют профиль
accounts.push({
id: `${buildingId}-acc-${i}`,
accountNumber: `${buildingId.replace('b-', '')}00${i}`,
apartmentNumber: i.toString(),
type: accountType,
floor: Math.ceil(i/4),
owners: [{
fullName: 'Иванов И.И.',
phone: '+7 900 000-00-00',
residentProfile: i % 3 === 0 ? {
sentiment: sentiments[Math.floor(Math.random() * sentiments.length)],
birthday: `198${Math.floor(Math.random() * 10)}-${String(Math.floor(Math.random() * 12) + 1).padStart(2, '0')}-${String(Math.floor(Math.random() * 28) + 1).padStart(2, '0')}`,
email: `owner${i}@example.com`,
preferredContactMethod: 'phone' as any,
} : undefined
}],
registered: i % 2 === 0 ? [
{ id: `reg-${i}-1`, fullName: 'Петрова А.А.', phone: '+7 900 111-11-11', email: `registered${i}@example.com` },
{ id: `reg-${i}-2`, fullName: 'Петров П.П.', phone: '+7 900 111-11-12' },
] : [],
areaTotal: areaTotal,
areaLiving: accountType === 'apartment' ? Math.floor(areaTotal * 0.7) : 0,
areaNonLiving: accountType === 'apartment' ? Math.floor(areaTotal * 0.3) : areaTotal,
meters: accountType === 'apartment' ? [
{ id: `m-${i}-1`, type: 'ХВС', make: 'Бетар', number: `BC-${i}321`, lastVerification: '2022-05-10', nextVerification: '2026-05-10', readings: generateReadingsHistory(150) },
] : [],
isMeterInstallationFeasible: accountType === 'apartment',
premiseNotes: i % 7 === 0 ? 'Требуется косметический ремонт' : undefined
});
}
return accounts;
};
const createBuilding = (id: string, districtId: string, address: string, img: string, npsScore: number): Building => ({
id,
districtId,
imageUrl: img,
nps: npsScore,
passport: {
address,
apartmentsCount: 160,
general: {
address: address,
fiasCode: '8c5b2444-70a0-4932-980c-0e78548135f3',
constructionYear: 1988,
commissionYear: 1989,
seriesType: '1-447С-37',
floors: 10,
undergroundFloors: 1,
totalArea: 5400,
livingArea: 4800,
nonLivingArea: 200,
commonArea: 400,
cadastralNumberBuild: '77:01:0001001:1000',
cadastralNumberLand: '77:01:0001001:25',
},
construction: {
foundationType: 'Ленточный',
foundationMaterial: 'Железобетон',
wallMaterial: 'Кирпич силикатный',
floorMaterial: 'Железобетонные плиты',
roofType: 'Плоская',
roofMaterial: 'Мягкая рулонная кровля',
roofArea: 850,
facadeType: 'Оштукатуренный',
facadeInsulation: false,
windowType: 'ПВХ (частично)',
},
engineering: {
heatingType: 'Центральное',
heatingWiring: 'Верхняя',
hasITP: true,
waterSupplyMaterial: 'Сталь оцинкованная',
waterSupplyType: 'Циркуляционная',
sewerMaterial: 'Чугун',
electricityEntries: 2,
hasVRU: true,
gasType: 'Нет',
ventilationType: 'Естественная',
},
meters: [
{ resource: 'Heat', hasMeter: true, model: 'ВКТ-7', number: '123456', lastVerification: '2023-09-01', nextVerification: '2027-09-01' },
{ resource: 'Water', hasMeter: true, model: 'Взлет ТСР-М', number: '987654', lastVerification: '2022-05-15', nextVerification: '2026-05-15' },
{ resource: 'Electricity', hasMeter: true, model: 'Меркурий 230', number: '555444', lastVerification: '2020-11-20', nextVerification: '2030-11-20' },
{ resource: 'Gas', hasMeter: false },
],
lifts: [
{ count: 1, type: 'Пассажирский', capacity: 400, speed: 1.0, installYear: 2015, factoryNumber: 'KMZ-1001' },
],
land: {
area: 1200,
hasPlayground: true,
hasSportsGround: false,
hasParking: true,
hasFencing: true,
hasContainerSite: true,
},
management: {
contractDate: '2020-01-01',
contractNumber: 'У-55/2020',
servicesList: ['Содержание жилья', 'Текущий ремонт', 'Управление', 'Вывоз ТБО'],
tariffMaintenance: 35.50,
serviceContracts: [
{ id: 'sc1', serviceType: 'Водоснабжение (РСО)', providerName: 'АО Водоканал', contractNumber: 'В-100/22', contractDate: '2022-01-15' },
{ id: 'sc2', serviceType: 'Тех. обслуживание лифтов', providerName: 'ООО ЛифтСервис', contractNumber: 'Л-55/23', contractDate: '2023-03-10', expiryDate: '2025-03-10' },
{ id: 'sc3', serviceType: 'Видеонаблюдение', providerName: 'Безопасный Город', contractNumber: 'ВН-12', contractDate: '2024-01-01' },
{ id: 'sc4', serviceType: 'Интернет (МОП)', providerName: 'Ростелеком', contractNumber: 'РТ-9988', contractDate: '2021-06-05' },
]
}
},
staff: [{ id: 's1', role: 'Главный инженер', company: 'ООО «Дружба»', name: 'Иванов И.И.' }],
entrances: [1, 2].map(n => createEntrance(n, id)),
commonSections: createCommonSections(id),
accounts: createMockAccounts(id, 10),
financials: {
balance: 450000,
debt: 85000,
collectionRate: 94,
topDebtors: [
{ apartment: '15', amount: 45000, months: 6, status: 'new' },
],
invoices: [
{ id: 'inv1', buildingId: id, address: address, contractorName: 'ООО "ЛифтСервис"', serviceName: 'ТО Лифтов', amount: 25000, date: '2024-05-20', status: 'approved', priority: 'high', closingDocsReceived: false },
]
},
requests: { new: 2, inProgress: 4, overdue: 0 },
inspectionHistory: [
{ id: 'act-1', number: '124-ОС', date: '2024-05-15', inspector: 'Иванов И.И.', type: 'scheduled_spring', status: 'completed', issuesCount: 2 },
],
tasks: [
{
id: 't1',
title: 'Замена лампочек',
deadline: new Date('2024-05-20').toISOString(),
status: 'new',
priority: 'medium',
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
buildingId: ''
},
],
annualPlan: [
{ id: 'p1', year: 2024, month: 'Май', workName: 'Промывка системы отопления', status: 'current', progress: 45, estimatedCost: 45000 },
],
inventory: [
{ id: 'inv-1', name: 'Перфоратор Bosch', category: 'tool', quantity: 1, unit: 'шт.', lastCheck: '2024-05-01' },
],
writeOffHistory: [],
residents: [
{ id: 'r1', name: 'Марья Ивановна', role: 'chairman', apartment: '45', mood: 'angry', lastContact: 'Вчера' },
],
reports: [
{ id: 'rep1', month: 'Ноябрь 2023', status: 'ready' },
],
isDirty: false
});
export const MOCK_BUILDINGS: Building[] = [];
export const NAV_ITEMS = [
{ id: 'dashboard', label: 'Сводка', icon: LayoutDashboard },
{ id: 'objects', label: 'Участки', icon: Map },
{ id: 'requests', label: 'Заявки', icon: Wrench },
{ id: 'office', label: 'Офис', icon: Building2 },
{ id: 'pr', label: 'PR и NPS', icon: Megaphone },
{ id: 'finance', label: 'Финансы', icon: Banknote },
{ id: 'legal', label: 'Юр. отдел', icon: Scale },
{ id: 'development', label: 'Развитие', icon: Briefcase },
{ id: 'hr', label: 'Кадры', icon: UsersRound },
{ id: 'admin', label: 'Панель управления', icon: Settings },
];