Так как пациент, доктор и администратор - хоть и имеют разные роли, но суть одно и то же,
так что основные данные собраны в модели Users
, c возможностью расширения дополнительных параметров в Patients
, Doctors
.
К тому, же сам доктор в какой-то момент может стать пациентом. (при этом рабочий личный телефон разные)
Из-за этого пришлось повозиться с DRF, попереопределять методы. Но зато у нас нет дубдлирования данных.
Доп. сущность для администратора пока не создавалась - ограничился ролью в модели Users
.
flake8 и pytest встроены через pre-commit
,
- тесты пока поверхностные, особенно что касается отрицательных сценариев. Чисто механическая работа - в реальном проекте кончено надо покрыть нормально.
- можно добавить nginx в докере, чтобы статические файлы отдавалось через него, но как-то я приывык с nginx рабоать на сервере, а не в докере. Так что докер пока без статики
- нет проверки на занятость времени при записи к врачу. Тут можно было бы использовать ограничение
Exclude
postgres или сделать проверку в сериализаторе, но я не стал усложнять - тестовое как никак - рефакторинг тестов. Как минимум вынести фикстуры
чтобы сильно не заморачиваться я .env.prod
положил в репозиторий. С этими настройками стартует докер
Для локального запуска, запуска тестов стоит создать аналогичный .env
ps потное дело, что SECRET_KEY
в репозитории это только для тестов и удобства проверяющего
Либо через uv в dev режиме:
uv run manage.py migrate && uv run manage.py runserver
Либо через docker-compose:
docker-compose up --build
После этого стоит создать суперпользователя. Либо через manage.py напрямяю либо через docker-compose:
docker-compose run uv run manage.py createsuperuser
Без докера запуститься на 8000 порту, через докер - на 8080 порту.
Сходить на /api/token/
и залогиниться.
Отлично!
Теперь можно пойти на /api/
, а оттуда по другим эндпоинтам и создавать, редактировать, удалять и получать данные.
Поиск консультации по статусу /api/consultations/?status=finished
Поиск с сортировкой /api/consultations/?ordering=start_time&status=confirmed
Поиск по врачу /api/consultations/?search=Петров&search_type=doctor