Реестр известных расхождений между документацией, OpenAPI и фактическим кодом. Если drift исправлен в коде или документации, пункт нужно удалить отсюда.
chat_bridge.openapi.CHAT_OPENAPI_FRAGMENT документирует:
POST /api/v1/uploads/photosВ chat_around/internal/httpapi/handlers.go handler для этого route не подключен. Фактические routes Go service:
GET /healthzGET /ws/chatsGET /api/v1/chatsPOST /api/v1/chatsGET /api/v1/chats/:chatID/messagesРешение: реализовать handler в Go service или удалить endpoint из OpenAPI fragment.
OpenAPI fragment описывает расширенный ChatSummary с peer, last_message, unread_count, can_notify_order_ready.
Фактический Go handler GET /api/v1/chats возвращает базовые chat rows из Repository.ListChats().
Решение: синхронизировать OpenAPI fragment с текущим response или расширить Go API.
Wiki раньше описывала, что при last_event_id клиент всегда получает sync.replayed.
Фактический код отправляет sync.replayed только если найдены сообщения после last_event_id. При пустом replay событие не отправляется.
Flow documentation описывает, что existing job events provider блокируют время, кроме canceled.
Фактический JobSheetCalendarService._get_free_intervals_for_date() берет события первого JobSheet provider и не исключает canceled. При этом move-overlap validation отдельно исключает canceled.
Решение: либо исправить service logic, либо уточнить flows как current limitation.
has_slotsget_free_slots_for_days() ставит has_slots как slots is not None.
get_free_slots_for_date() возвращает список, включая пустой список, поэтому has_slots может быть True даже при отсутствии slots.
Решение: заменить на bool(slots) или задокументировать текущее поведение как limitation.
Документация должна учитывать, что OTP_SMS_SEND_TIMEOUT_SECONDS применяется только при включенном Mobizon. В default/dev mode MOBIZON_ENABLED=0, OTP равен 0000, resend timeout не применяется.
docker-compose.local.yml имеет default ${CHAT_HTTP_PORT:-8998}, но django_around/around/.env.example задает CHAT_HTTP_PORT=20001.
Если перед запуском local compose выполнить cp .env.example .env, chat будет опубликован на 20001, пока значение не изменить вручную.
Django умеет local MEDIA_ROOT, но production compose не монтирует persistent media volume, а nginx не отдает /media/.
Production media должна идти через S3-compatible storage или через отдельную доработку compose/nginx.