# 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