v1.0.157: VM API /api/supplements + /api/documents — index.cfm no longer calls Lucee api.cfm

This commit is contained in:
2026-06-23 16:40:19 +04:00
parent 3a93c48907
commit ddc0a8b42d
2 changed files with 45 additions and 11 deletions
+36
View File
@@ -10,6 +10,11 @@ from db import prompts as db_prompts
from db.connection import DB_CONFIG
db_prompts.seed_defaults()
# ── DB modules ────────────────────────────────────────────────────────────
from db import supplements as db_supplements
from db import documents as db_documents
from db import spec_current as db_spec_current
# ── Services ──────────────────────────────────────────────────────────────
from services.upload import handle_upload
from services.unzip import handle_unzip
@@ -35,6 +40,10 @@ class Handler(BaseHTTPRequestHandler):
self._handle_process_v2(parsed)
elif parsed.path == "/health":
self._json({"ok": True, "db": DB_CONFIG["dbname"]})
elif parsed.path == "/api/supplements":
self._handle_api_supplements(parsed)
elif parsed.path.startswith("/api/documents/"):
self._handle_api_document(parsed)
else:
self.send_error(404)
@@ -79,6 +88,33 @@ class Handler(BaseHTTPRequestHandler):
self.wfile.write(f"data: {json.dumps(data, ensure_ascii=False)}\n\n".encode())
self.wfile.flush()
# ── /api/supplements ──────────────────────────────────────────────────
def _handle_api_supplements(self, parsed):
params = parse_qs(parsed.query)
cid = params.get("contract_id", [None])[0]
if not cid:
self._json({"ok": False, "error": "contract_id required"}, 400)
return
rows = db_supplements.list_by_contract(cid)
self._json({"ok": True, "supplements": rows})
# ── /api/documents/<id> ──────────────────────────────────────────────
def _handle_api_document(self, parsed):
doc_id = parsed.path.split("/")[-1]
doc = db_documents.get(doc_id)
if not doc:
self._json({"ok": False, "error": "not found"}, 404)
return
self._json({
"ok": True,
"id": doc["id"],
"filename": doc["filename"],
"status": doc["status"],
"elements_json": doc.get("elements_json"),
})
# ── /upload ───────────────────────────────────────────────────────────
def _handle_upload(self):