diff --git a/deploy/services/drhider.py b/deploy/services/drhider.py index ef06685..6b09d4b 100644 --- a/deploy/services/drhider.py +++ b/deploy/services/drhider.py @@ -6,7 +6,7 @@ DrHider — обфускация документов (двухпроходна Согласованность: одна и та же сущность во всех файлах → одно и то же фиктивное значение. """ -DRHIDER_VERSION = "0.6" +DRHIDER_VERSION = "0.7" import io import csv import re diff --git a/site/app.py b/site/app.py index 510c711..d50c45a 100644 --- a/site/app.py +++ b/site/app.py @@ -3,17 +3,11 @@ Все тяжёлые операции — на ВМ (contracts.kube5s.ru). """ import os -import uuid -import threading import httpx from flask import Flask, render_template, request, jsonify app = Flask(__name__) -# DrHider job store (in-memory, no persistence) -_drhider_jobs = {} -_drhider_lock = threading.Lock() - VM_API = os.environ.get("VM_API", "https://contracts.kube5s.ru") LLM_URL = os.environ.get("LLM_API_URL", "https://api.aillm.ru/v1/chat/completions") LLM_KEY = os.environ.get("LLM_API_KEY", "") @@ -116,8 +110,11 @@ def drhider(): @app.route("/api/drhider", methods=["POST"]) def api_drhider(): - """Обфускация: старт фоновой задачи.""" + """Обфускация: файлы → ZIP.""" + import io + from flask import send_file from services.drhider import obfuscate_files + from services.llm_client import HttpxLLMClient uploaded = request.files.getlist("files") if not uploaded: @@ -127,52 +124,14 @@ def api_drhider(): if not files: return jsonify({"ok": False, "error": "Нет файлов"}), 400 - job_id = uuid.uuid4().hex - with _drhider_lock: - _drhider_jobs[job_id] = {"done": False, "data": None, "error": None} - - def _process(): - try: - from services.llm_client import HttpxLLMClient - llm = HttpxLLMClient(LLM_URL, LLM_KEY, LLM_MODEL) if LLM_KEY else None - zip_data, _csv = obfuscate_files(files, llm_client=llm) - with _drhider_lock: - _drhider_jobs[job_id] = {"done": True, "data": zip_data, "error": None} - except Exception as e: - with _drhider_lock: - _drhider_jobs[job_id] = {"done": True, "data": None, "error": str(e)} - - threading.Thread(target=_process, daemon=True).start() - return jsonify({"ok": True, "job_id": job_id}) - - -@app.route("/api/drhider//status") -def api_drhider_status(job_id): - """Статус задачи.""" - with _drhider_lock: - job = _drhider_jobs.get(job_id) - if not job: - return jsonify({"ok": False, "error": "Неизвестный job_id"}), 404 - return jsonify({"ok": True, "done": job["done"], "error": job["error"]}) - - -@app.route("/api/drhider//download") -def api_drhider_download(job_id): - """Скачать результат.""" - from flask import send_file - import io - with _drhider_lock: - job = _drhider_jobs.get(job_id) - if not job or not job["done"]: - return jsonify({"ok": False, "error": "Не готов"}), 404 - if job["error"]: - return jsonify({"ok": False, "error": job["error"]}), 500 - buf = io.BytesIO(job["data"]) - buf.seek(0) - # Очистка - with _drhider_lock: - _drhider_jobs.pop(job_id, None) - return send_file(buf, mimetype="application/zip", as_attachment=True, download_name="drhider_output.zip") + try: + llm = HttpxLLMClient(LLM_URL, LLM_KEY, LLM_MODEL) if LLM_KEY else None + zip_data, _csv = obfuscate_files(files, llm_client=llm) + buf = io.BytesIO(zip_data) + buf.seek(0) + return send_file(buf, mimetype="application/zip", as_attachment=True, download_name="drhider_output.zip") + except Exception as e: + return jsonify({"ok": False, "error": str(e)}), 500 @app.route("/health") diff --git a/site/services/drhider.py b/site/services/drhider.py index ef06685..6b09d4b 100644 --- a/site/services/drhider.py +++ b/site/services/drhider.py @@ -6,7 +6,7 @@ DrHider — обфускация документов (двухпроходна Согласованность: одна и та же сущность во всех файлах → одно и то же фиктивное значение. """ -DRHIDER_VERSION = "0.6" +DRHIDER_VERSION = "0.7" import io import csv import re diff --git a/site/templates/drhider.html b/site/templates/drhider.html index 66699f0..55e1906 100644 --- a/site/templates/drhider.html +++ b/site/templates/drhider.html @@ -64,7 +64,7 @@ Сверка договоров | DrHider - v0.6 + v0.7
diff --git a/site/templates/index.html b/site/templates/index.html index 84922a8..051832c 100644 --- a/site/templates/index.html +++ b/site/templates/index.html @@ -73,7 +73,7 @@
Nubes - Сверка договоров — LLM AI-driven Event Sourcing v1.0.189-flask + Сверка договоров — LLM AI-driven Event Sourcing v1.0.190-flask
○ Загрузка ○ Классификация