7d40cf95bf
- FastAPI Identify API (port 8081) - Neo4j propertygraf (64 noder, 80 kanter) - Ingest-pipeline (Python) - Byggscript + integrationstester - Docker Compose setup
19 lines
1.2 KiB
Python
19 lines
1.2 KiB
Python
import json, hashlib
|
|
from pathlib import Path
|
|
ROT = Path("/mnt/user-data/outputs/landvex-produktionspaket-v1")
|
|
ROLL = {"00-styrning":"styrning","10-data":"data (enda sanningskälla)","20-automation":"automation","30-produkt":"produkt","40-strategi":"strategi & rapporter"}
|
|
filer = []
|
|
for p in sorted(ROT.rglob("*")):
|
|
if p.is_file() and p.name != "MANIFEST.json":
|
|
rel = p.relative_to(ROT).as_posix()
|
|
filer.append({"sokvag": rel, "roll": ROLL[rel.split("/")[0]],
|
|
"bytes": p.stat().st_size,
|
|
"sha256": hashlib.sha256(p.read_bytes()).hexdigest()})
|
|
man = {"paket":"landvex-produktionspaket","version":"1.0","genererad":"2026-07-04",
|
|
"statistik":{"objektklasser":37,"kallbelagda_klasser":35,"produktmodeller":27,
|
|
"grafkanter":176,"aktiva_bounties":16,"bounty_forslag":17,"valideringsfel":0},
|
|
"kanonisk_not":"10-data/ ersätter alla tidigare versioner (master v1/v2, delfiler). Arkiv kvar i arbetsytan utanför paketet.",
|
|
"antal_filer":len(filer),"filer":filer}
|
|
(ROT/"00-styrning/MANIFEST.json").write_text(json.dumps(man,ensure_ascii=False,indent=2),encoding="utf-8")
|
|
print(f"MANIFEST: {len(filer)} filer checksummerade")
|