# Как подключить конвертацию .doc → .docx Сервис: **https://liberta.containerk8s.dev.nubes.ru** ## API **Конвертация:** ```bash curl -X POST -F "file=@документ.doc" https://liberta.containerk8s.dev.nubes.ru/convert -o результат.docx ``` **Проверка:** ```bash curl https://liberta.containerk8s.dev.nubes.ru/health # → {"ok":true,"version":"1.0.0"} ``` ## Интеграция в Python (как в Сверке) ### 1. config.py — URL сервиса ```python CONVERT_SERVICE_URL = os.getenv( "CONVERT_SERVICE_URL", "http://containerk8s.df36c8af-1a95-4623-b551-0d37b731ccca.svc.cluster.local:5000" ) ``` ### 2. upload_bp.py — замена subprocess на HTTP ```python import httpx import config @upload_bp.route("/convert-doc", methods=["POST"]) def convert_doc(): f = request.files.get("files") if not f: return jsonify(ok=False, error="no file"), 400 try: resp = httpx.post( config.CONVERT_SERVICE_URL + "/convert", files={"file": (f.filename, f.read(), f.content_type or "application/msword")}, timeout=120, ) if resp.status_code == 200: return send_file(io.BytesIO(resp.content), mimetype="...docx") return jsonify(ok=False, error=resp.json().get("error")), 500 except httpx.TimeoutException: return jsonify(ok=False, error="conversion timeout"), 500 ``` ### 3. files.js — фронтенд ```javascript var CONVERT_URL = '/convert-doc'; // Перед uploadFile: если .doc → сначала convertDoc() async function convertDoc(file, onProgress) { var fd = new FormData(); fd.append('files', file, file.name); var resp = await fetch(CONVERT_URL, { method: 'POST', body: fd }); if (!resp.ok) throw new Error('Конвертация: HTTP ' + resp.status); var blob = await resp.blob(); return new File([blob], file.name.replace(/\.doc$/i, '.docx'), { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }); } ``` ## Топология ``` Браузер → POST /convert-doc (Flask-сервер) ↓ httpx liberta:5000/convert (libreoffice) ↓ .docx обратно ↓ обычный upload + парсинг ``` ## Деплой liberta Образ: `gitea.services.ngcloud.ru/nail/contractor-convert:latest` Рецепт: `~/nubes/contracts/convert-service/` - Dockerfile: python:3.12 + libreoffice + flask - Платформа: pythonk8s - Порт: 5000 - Память: 1024 MB - CPU: 500m - Реплики: 1