- SECRET_KEY, DEBUG (по умолчанию выключен), ALLOWED_HOSTS — из DJANGO_*;
- необязательный API_TOKEN (заголовок Authorization: Bearer), лимит файла
MAX_UPLOAD_SIZE_MB (по умолчанию 50);
- в ответ на ошибку больше не отдаётся текст исключения — он уходит в лог;
- Django 5.2 LTS: 4.2 больше не поддерживается.
- текст документа вставлялся в HTML как есть — XSS у потребителя, который отрисует
результат; теперь текст и таблицы экранируются;
- файл с расширением .PDF или .DOCX давал пустой результат;
- картинки из DOCX и PDF всегда помечались image/png; теперь — настоящий тип, а сырые
потоки PDF без формата картинки пропускаются; пустые ячейки таблиц — пустые строки.
Путь к сгенерированным модулям считался на уровень выше репозитория, импорт всегда падал, и
вместо gRPC работала заглушка с поддельным success: true. Путь исправлен, заглушка убрана;
адрес и таймаут — GRPC_SERVER и GRPC_TIMEOUT (пусто — шаг пропускается), недоступный
сервер даёт success: false. proto/*_pb2*.py пересобраны под актуальный protobuf.
- любой файл, кроме WAV 16 кГц моно, падал с NameError: вызывался несуществующий
convert.convert_audio_to_wav;
- из длинной записи оставалась только последняя фраза: бралось лишь FinalResult(), а Vosk
отдаёт текст по фразам через Result();
- общий временный audio.wav в текущей папке — одновременные запросы перезаписывали друг
другу аудио; теперь свой временный файл на запрос;
- ffmpeg — из PATH (или FFMPEG_BINARY) вместо Windows-пути к ffmpeg.exe;
- модель загружается один раз на процесс, а не на каждый запрос;
- ошибка конвертации возвращается клиенту, а не печатается и не превращается в пустой текст.