Files
contracts/History/sonnet-upload-from-scratch.md

2.1 KiB
Raw Permalink Blame History

Запрос: загрузка файлов с нуля

Задача: надёжная загрузка 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 пунктов), потом отвечу на вопросы.