170 lines
8.0 KiB
Markdown
170 lines
8.0 KiB
Markdown
|
|
# Центр управления жилым фондом (МКД)
|
|||
|
|
|
|||
|
|
<div align="center">
|
|||
|
|
<img width="1200" height="475" alt="GHBanner" src="https://github.com/user-attachments/assets/0aa67016-6eaf-458a-adb2-6e31a0763ed6" />
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
Веб-приложение для комплексного управления многоквартирными домами (МКД), включающее модули для управления объектами, финансами, кадрами, юридическими вопросами, PR-деятельностью и офисной работой.
|
|||
|
|
|
|||
|
|
## 🚀 Возможности
|
|||
|
|
|
|||
|
|
### Основные модули:
|
|||
|
|
|
|||
|
|
- **📊 Дашборд** - Общая сводка и аналитика по всем направлениям
|
|||
|
|
- **🏢 Объекты** - Управление зданиями, характеристиками, осмотрами, планами работ
|
|||
|
|
- **📝 Заявки** - Реестр заявок жильцов, контроль качества, диспетчеризация
|
|||
|
|
- **💰 Финансы** - Управление счетами, платежами, дебиторской задолженностью, отчетностью
|
|||
|
|
- **👥 HR** - Управление персоналом, вакансиями, наймом, зарплатами
|
|||
|
|
- **⚖️ Юридический** - Договоры, судебные дела, взыскание долгов, доверенности
|
|||
|
|
- **📢 PR** - Управление событиями, обратной связью жильцов, SMM, негативными ситуациями
|
|||
|
|
- **🏛️ Офис** - Документооборот, управление помещениями, база знаний, закупки
|
|||
|
|
- **🔧 Развитие** - Технический аудит, маркетинговые кампании, работа с ОСС
|
|||
|
|
|
|||
|
|
### Система ролей:
|
|||
|
|
|
|||
|
|
Приложение поддерживает различные роли пользователей с разными уровнями доступа:
|
|||
|
|
|
|||
|
|
- **Директор** - Полный доступ ко всем модулям
|
|||
|
|
- **Главный инженер** - Дашборд, объекты, заявки, офис, развитие
|
|||
|
|
- **Мастер** - Объекты, заявки
|
|||
|
|
- **Юрист** - Дашборд, юридический, объекты, заявки
|
|||
|
|
- **Финансист** - Дашборд, финансы, офис, объекты
|
|||
|
|
- **HR-менеджер** - Дашборд, HR, офис
|
|||
|
|
- **PR-менеджер** - Дашборд, PR, заявки
|
|||
|
|
|
|||
|
|
## 🛠️ Технологии
|
|||
|
|
|
|||
|
|
- **React 19** - UI библиотека
|
|||
|
|
- **TypeScript** - Типизация
|
|||
|
|
- **Vite** - Сборщик и dev-сервер
|
|||
|
|
- **Tailwind CSS** - Стилизация
|
|||
|
|
- **Lucide React** - Иконки
|
|||
|
|
- **html2canvas & jsPDF** - Экспорт в PDF
|
|||
|
|
|
|||
|
|
## 📋 Требования
|
|||
|
|
|
|||
|
|
- **Node.js** (рекомендуется версия 18+)
|
|||
|
|
|
|||
|
|
## 🚀 Установка и запуск
|
|||
|
|
|
|||
|
|
### 1. Установка зависимостей
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Настройка переменных окружения
|
|||
|
|
|
|||
|
|
Создайте файл `.env.local` в корне проекта на основе `.env.example`:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# API Configuration
|
|||
|
|
VITE_API_BASE_URL=http://localhost:4000/api
|
|||
|
|
|
|||
|
|
# Doma AI API Configuration
|
|||
|
|
# URL API Doma AI (по умолчанию используется тестовый стенд)
|
|||
|
|
VITE_DOMA_AI_API_URL=https://condo.d.doma.ai/admin/api
|
|||
|
|
|
|||
|
|
# Учетные данные для авторизации в Doma AI
|
|||
|
|
# Используйте email и пароль ИЛИ телефон и пароль
|
|||
|
|
VITE_DOMA_AI_EMAIL=your-email@example.com
|
|||
|
|
VITE_DOMA_AI_PASSWORD=your-password
|
|||
|
|
# ИЛИ используйте телефон:
|
|||
|
|
# VITE_DOMA_AI_PHONE=+79991234567
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Настройка интеграции с Doma AI (PRODUCTION):**
|
|||
|
|
|
|||
|
|
1. Получите URL API вашего продакшн инстанса Doma AI (обычно: `https://your-domain.doma.ai/admin/api`)
|
|||
|
|
2. Убедитесь, что у вас есть учетные данные для доступа к API
|
|||
|
|
3. Укажите URL API и учетные данные в переменных окружения:
|
|||
|
|
- `VITE_DOMA_AI_API_URL` - URL вашего инстанса Doma AI
|
|||
|
|
- `VITE_DOMA_AI_EMAIL` / `VITE_DOMA_AI_PHONE` - учетные данные
|
|||
|
|
- `VITE_DOMA_AI_PASSWORD` - пароль
|
|||
|
|
4. При первом запуске приложение автоматически авторизуется в Doma AI
|
|||
|
|
5. Заявки будут автоматически загружаться из Doma AI в раздел "Заявки"
|
|||
|
|
|
|||
|
|
**Для тестирования** можно использовать тестовый стенд: https://condo.d.doma.ai/
|
|||
|
|
|
|||
|
|
### 3. Запуск в режиме разработки
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm run dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Приложение будет доступно по адресу: `http://localhost:3000`
|
|||
|
|
|
|||
|
|
### 4. Сборка для продакшена
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm run build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. Просмотр production сборки
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm run preview
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📁 Структура проекта
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
├── components/ # React компоненты
|
|||
|
|
│ ├── applications/ # Модуль заявок
|
|||
|
|
│ ├── building/ # Компоненты для работы со зданиями
|
|||
|
|
│ ├── development/ # Модуль развития
|
|||
|
|
│ ├── finance/ # Финансовый модуль
|
|||
|
|
│ ├── hr/ # HR модуль
|
|||
|
|
│ ├── legal/ # Юридический модуль
|
|||
|
|
│ ├── objects/ # Компоненты объектов
|
|||
|
|
│ ├── office/ # Офисный модуль
|
|||
|
|
│ └── pr/ # PR модуль
|
|||
|
|
├── services/ # Сервисы (API, storage, etc.)
|
|||
|
|
├── types.ts # TypeScript типы
|
|||
|
|
├── constants.tsx # Константы и моки
|
|||
|
|
├── App.tsx # Главный компонент
|
|||
|
|
├── index.tsx # Точка входа
|
|||
|
|
└── vite.config.ts # Конфигурация Vite
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 Конфигурация
|
|||
|
|
|
|||
|
|
### Vite конфигурация
|
|||
|
|
|
|||
|
|
Проект настроен для работы с прокси-сервером API:
|
|||
|
|
|
|||
|
|
- Dev сервер: `http://localhost:3000`
|
|||
|
|
- API прокси: `/api` → `https://n8n.iieasy.ru/`
|
|||
|
|
|
|||
|
|
Настройки можно изменить в `vite.config.ts`.
|
|||
|
|
|
|||
|
|
## 📝 Особенности
|
|||
|
|
|
|||
|
|
- **Локальное хранилище** - Сохранение состояния выбранных зданий и активных вкладок
|
|||
|
|
- **Адаптивный дизайн** - Поддержка мобильных устройств
|
|||
|
|
- **Система ролей** - Контроль доступа на основе ролей пользователей
|
|||
|
|
- **Экспорт данных** - Возможность экспорта отчетов в PDF
|
|||
|
|
- **Интеграция с Doma AI** - Автоматическая синхронизация заявок через GraphQL API
|
|||
|
|
|
|||
|
|
## 🎯 Разработка
|
|||
|
|
|
|||
|
|
### Добавление нового модуля
|
|||
|
|
|
|||
|
|
1. Создайте компонент модуля в `components/`
|
|||
|
|
2. Добавьте навигационный элемент в `constants.tsx`
|
|||
|
|
3. Добавьте обработку в `App.tsx` в функции `renderContent()`
|
|||
|
|
4. Настройте права доступа в `ROLE_ACCESS` в `App.tsx`
|
|||
|
|
|
|||
|
|
### Работа с типами
|
|||
|
|
|
|||
|
|
Все типы определены в `types.ts`. При добавлении новых сущностей обновите соответствующие типы.
|
|||
|
|
|
|||
|
|
## 📄 Лицензия
|
|||
|
|
|
|||
|
|
Проект разработан для внутреннего использования.
|
|||
|
|
|
|||
|
|
## 🔗 Ссылки
|
|||
|
|
|
|||
|
|
- [AI Studio](https://ai.studio/apps/drive/1jOVxm30BucP1pvw8ODxuHe3FC-Xaww9E)
|
|||
|
|
- [Документация Doma AI API](https://developers.doma.ai/ru/docs/index)
|
|||
|
|
- [Doma AI API Playground](https://condo.d.doma.ai/admin/api)
|