Описание задачи
Разработать простую админ-панель для управления расписаниями сотрудников (отдел продаж, колл-центр). Система должна поддерживать авторизацию, CRUD-операции, а также REST API с готовой документацией.
Обязательные технологии
- Python
- FastAPI
- SQLAlchemy
- Pydantic
- Docker (+ Docker Compose)
Дизайн админки
На базе fastapi-amis-admin или аналогичного фреймворка.
Модели данных
- users (id, name, fullname, passwd_hash, is_active, is_admin) - пользователи
- contexts (id, name, description) - контексты
- schedules (id, name, json_config, is_active) - расписания
Функционал админки
- Авторизация (логин/пароль)
- CRUD пользователей (только для is_admin=true)
- CRUD контекстов (настройки/справочники)
- CRUD расписаний (с мультиселектом дней недели, месяцев, дней месяца)
API (доступно в Swagger /docs)
- GET /api/route-context - получение активного контекста
- GET /api/is-schedule-active - проверка, активно ли расписание в данный момент
Требования к сдаче
- Dockerfile + docker-compose (внешняя MariaDB)
- Alembic миграции
- README с инструкцией по запуску
- Unit-тесты (pytest) и интеграционные тесты
Критерии приемки
- Docker-compose up запускает проект без ошибок
- Админка доступна по /admin
- CRUD работает корректно
- API возвращает корректный JSON
- Все тесты проходят