# 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/ # Файлы задач