Files
boc/projects/landvex/arkiv/byggscript/bygg_manifest.py
T
Bernt 7d40cf95bf landvex: IOL v3 + Identify API + Neo4j-graf + byggpipeline
- FastAPI Identify API (port 8081)
- Neo4j propertygraf (64 noder, 80 kanter)
- Ingest-pipeline (Python)
- Byggscript + integrationstester
- Docker Compose setup
2026-07-05 05:55:48 +00:00

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")