38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
# Запрос: загрузка файлов с нуля
|
||
|
||
**Задача:** надёжная загрузка docx/pdf/zip (до 50MB) через веб-интерфейс.
|
||
|
||
## Ресурсы
|
||
|
||
- **Flask** (managed pythonk8s.services.ngcloud.ru, деплой = git push)
|
||
- **PostgreSQL 17.6** (внутренний кластер `postgresqlk8s-master...svc.cluster.local`)
|
||
- **Redis** (внутренний `redisk8s...svc.cluster.local`, admin/aLITloRefJEiCPqUc2xB)
|
||
- **БД:** пул psycopg2 (2-10, keepalive), таблицы есть (`documents`, `contracts`, `supplements`)
|
||
- **Парсеры:** python-docx (DOCX), pdfplumber (PDF), zipfile (ZIP), textify.to_text()
|
||
- **LLM:** aillm.ru (gpt-oss-120b), HTTP/2
|
||
- **Клиент:** браузер, XHR POST, JSON body
|
||
|
||
## Что НЕ работает (43 версии)
|
||
|
||
- POST с телом > 64KB → nginx/Ingress рвёт TCP (HTTP 000, ReadTimeout)
|
||
- 10-50KB: 100% надёжно
|
||
- FormData, JSON/base64, чанки, Redis, retry — ничего не помогло
|
||
- 64KB — жёсткий предел платформы
|
||
|
||
## Что нужно
|
||
|
||
1. **Архитектура загрузки** — гарантированно обходящая лимит 64KB на тело запроса
|
||
2. **Прогресс на клиенте** — интерактивно (имя файла, проценты, таймер)
|
||
3. **Парсинг после загрузки** — извлечение параграфов, таблиц, стилей
|
||
4. **ZIP** — показывать содержимое, парсить файлы внутри
|
||
|
||
## Вопросы
|
||
|
||
1. Как обойти 64KB лимит тела запроса?
|
||
2. Чанки — на клиенте или сервере?
|
||
3. Redis — нужен или нет для этой задачи?
|
||
4. Как гарантировать целостность файла при чанковой загрузке?
|
||
5. Какая структура БД оптимальна для хранения результатов парсинга?
|
||
|
||
**Ответь кратко: архитектура (3-5 пунктов), потом отвечу на вопросы.**
|