# School CRM - Система управления задачами для образовательных учреждений ## Описание проекта School CRM - это веб-приложение для управления задачами и проектами в образовательных учреждениях. Система позволяет эффективно организовывать работу между администрацией, учителями и сотрудниками школы. ## Основные возможности ### 🔐 Многоуровневая аутентификация - **Локальная авторизация** - встроенная система пользователей - **LDAP-интеграция** - поддержка доменной аутентификации - **Ролевая модель**: - Администратор - полный доступ ко всем функциям - Учитель - создание и управление своими задачами ### 📋 Управление задачами - **Создание задач** с детальным описанием и сроками - **Назначение исполнителей** - несколько пользователей на одну задачу - **Индивидуальные сроки** для каждого исполнителя - **Копирование задач** - быстрая репликация существующих шаблонов - **Мягкое удаление** с возможностью восстановления ### 📊 Система статусов - ⏳ Назначена - 🔄 В работе - ✅ Выполнена - ❗ Просрочена (автоматическое определение) ### 📎 Работа с файлами - **Загрузка документов** - до 15 файлов, максимум 300MB - **Организованное хранение** - структура папок по задачам и пользователям - **Безопасное скачивание** - проверка прав доступа ### 📝 Логирование и аналитика - **Детальная история действий** - кто, что и когда сделал - **Отслеживание изменений** статусов и назначений - **Мониторинг загрузки файлов** ## Технологический стек ### Backend - **Node.js** - серверная платформа - **Express.js** - веб-фреймворк - **SQLite** - база данных - **Multer** - обработка загрузки файлов - **Bcryptjs** - хэширование паролей ### Frontend - **Чистый JavaScript** - без зависимостей от фреймворков - **HTML5/CSS3** - адаптивный интерфейс - **AJAX** - асинхронные запросы к API ### Безопасность - **Сессии** - управление аутентификацией - **Проверка прав доступа** - на всех уровнях - **Валидация данных** - клиентская и серверная ## Установка и запуск ### Предварительные требования - Node.js 14+ - npm или yarn ### Шаги установки 1. Клонировать репозиторий 2. Установить зависимости: `npm install` 3. Настроить переменные окружения в `.env` 4. Запустить сервер: `npm start` 5. Открыть в браузере: `http://localhost:3000` ### Конфигурация Создайте файл `.env` со следующими параметрами: PORT=3000 SESSION_SECRET=your_secret_key LDAP_AUTH_URL=your_ldap_endpoint ALLOWED_GROUPS=admin_teachers,department_heads ## API Endpoints ### Аутентификация - `POST /api/login` - вход в систему - `POST /api/logout` - выход - `GET /api/user` - информация о текущем пользователе ### Задачи - `GET /api/tasks` - список задач - `POST /api/tasks` - создание задачи - `GET /api/tasks/:id` - получение задачи - `PUT /api/tasks/:id` - обновление задачи - `DELETE /api/tasks/:id` - удаление задачи - `POST /api/tasks/:id/copy` - копирование задачи ### Файлы - `POST /api/tasks/:id/files` - загрузка файлов - `GET /api/tasks/:id/files` - список файлов задачи - `GET /api/files/:id/download` - скачивание файла ### Логи - `GET /api/activity-logs` - история действий ## Тестовые пользователи После первого запуска создаются тестовые пользователи: - **Администратор**: director / director123 - **Завуч**: zavuch / zavuch123 - **Учитель**: teacher / teacher123 ## Лицензия MIT License - разрешается свободное использование и модификация. ## Поддержка Для вопросов и предложений создавайте issues в репозитории проекта. ## Структура проекта school-crm/ ├── server.js # Основной сервер ├── auth.js # Логика аутентификации ├── database.js # Работа с базой данных ├── package.json # Зависимости ├── .env # Конфигурация ├── public/ # Статические файлы │ ├── index.html # Главная страница │ ├── style.css # Стили │ └── script.js # Клиентский код └── uploads/ # Загруженные файлы └── tasks/ # Файлы задач .env # Первые 3 пользователя системы USER_1_LOGIN=director USER_1_PASSWORD=director123 USER_1_NAME=Директор школы USER_1_EMAIL=director@school.ru USER_2_LOGIN=zavuch USER_2_PASSWORD=zavuch123 USER_2_NAME=Завуч USER_2_EMAIL=zavuch@school.ru USER_3_LOGIN=teacher USER_3_PASSWORD=teacher123 USER_3_NAME=Учитель математики USER_3_EMAIL=math@school.ru SESSION_SECRET=your_secret_key_here # LDAP настройки LDAP_AUTH_URL=https://ldap.ru/api/auth ALLOWED_GROUPS=admin # Добавьте эту строку в ваш .env файл JWT_SECRET=your_super_secret_jwt_key_here_make_it_very_long_and_secure # Настройки сервиса уведомлений NOTIFICATION_SERVICE_URL=https://alarm.ru/api/send-message NOTIFICATION_SERVICE_LOGIN=kalugin66 NOTIFICATION_SERVICE_PASSWORD=kalugin66