Skip to content

fix(chat): принимать PSD-файлы в чате - #846

Merged
ShaerWare merged 1 commit into
mainfrom
local/fix/psd-upload
Sep 1, 2026
Merged

ShaerWare merged 1 commit into
mainfrom
local/fix/psd-upload

Conversation

@ShaerWare

Copy link
Copy Markdown
Owner

Summary

Клиент присылает макеты в .psd — загрузка падала с «Unsupported type». Причин две:

  1. Типа не было в ALLOWED_MIME_TYPES, а браузер для .psd часто шлёт application/octet-stream или пустой content-type. Запасной разбор по расширению покрывал только текстовые файлы.
  2. В accept поля выбора файла .psd не значился — файл даже не выбирался в диалоге.

Что сделано

  • image/vnd.adobe.photoshop и его варианты (image/psd, application/x-photoshop, …) в белом списке; тип доопределяется по расширению — _resolve_content_type
  • PSD идёт по обычному пути изображения: Pillow читает сведённую копию, дальше размеры → превью → OCR
  • Превью конвертируется в RGB из любого режима: PSD приходит в CMYK или с альфа-каналом, JPEG такого не принимает
  • PSD без сведённой копии (сохранён без «Maximize compatibility») Pillow не откроет — файл всё равно сохраняется и прикладывается к сообщению, теряется только превью
  • .psd добавлен в accept в админке и в мобильном приложении

NEWS

🎨 В чат теперь можно загружать .psd

Макеты и схемы в формате Photoshop раньше просто не принимались. Теперь файл загружается, показывается превью, а текст с макета распознаётся и попадает в контекст разговора.

Test plan

  • tests/unit/test_upload_psd.py — 10 тестов: доопределение типа по расширению (в том числе .PSD в верхнем регистре и пустой content-type), загрузка RGB и CMYK PSD с превью, битый PSD не срывает загрузку, неизвестный бинарник по-прежнему отвергается
  • Фикстура — минимальный валидный PSD, собранный по спецификации (Pillow умеет PSD читать, но не писать)
  • ruff check + format — чисто
  • После деплоя: перебрать admin и rsync в /var/www/admin-ai-sekretar24/, загрузить .psd в чат

Мобильное приложение: правка в mobile/src есть, но APK не пересобирал — уедет со следующим мобильным релизом.

🤖 Generated with Claude Code

Клиент присылает макеты в .psd — загрузка падала с «Unsupported type».
Причин две: типа не было в белом списке, а браузер для .psd часто вообще
шлёт application/octet-stream или пустой content-type, и запасной разбор
по расширению покрывал только текстовые файлы. В поле выбора файла на
фронте .psd тоже не значился, так что файл даже не выбирался.

- image/vnd.adobe.photoshop и его варианты в белом списке, тип
  доопределяется по расширению (_resolve_content_type)
- PSD обрабатывается как изображение: Pillow читает сведённую копию,
  дальше обычный путь — размеры, превью, OCR
- превью конвертируется в RGB из любого режима: PSD приходит в CMYK или
  с альфа-каналом, JPEG такого не примет
- PSD без сведённой копии (сохранён без «Maximize compatibility») Pillow
  не откроет — файл всё равно сохраняется и прикладывается к сообщению,
  теряется только превью
- .psd добавлен в accept в админке и в мобильном приложении

## NEWS

🎨 **В чат теперь можно загружать .psd**

Макеты и схемы в формате Photoshop раньше просто не принимались. Теперь
файл загружается, показывается превью, а текст с макета распознаётся и
попадает в контекст разговора.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ShaerWare
ShaerWare merged commit 7312cb7 into main Sep 1, 2026
3 checks passed
@ShaerWare
ShaerWare deleted the local/fix/psd-upload branch September 1, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant