| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import json, os, sys
- OUT = '.scratch/cockpit-real-data-wayfinding/verify/artifacts/t67'
- names = ["map-snapshot","infra-base-archives","infra-operating","infra-management","infra-emergency",
- "mon-overview","mon-distribution","mon-situation","ev-current","ev-history","ev-efficiency",
- "ev-analysis","ov-monitoring","ov-warning-settings","work-orders"]
- variants = ["none","d0","d1","dun","d99"]
- def load(n, v):
- p = os.path.join(OUT, f"v2-{n}-{v}.json")
- try:
- with open(p, encoding='utf-8') as f:
- return json.load(f)
- except Exception as e:
- return {"__load_error__": str(e)}
- def walk(a, b, path="", out=None, limit=400):
- if out is None: out = []
- if len(out) >= limit: return out
- if type(a) != type(b):
- out.append((path, repr(a)[:60], repr(b)[:60])); return out
- if isinstance(a, dict):
- for k in sorted(set(a) | set(b)):
- if k not in a: out.append((path+"/"+k, "<absent>", repr(b[k])[:60])); continue
- if k not in b: out.append((path+"/"+k, repr(a[k])[:60], "<absent>")); continue
- walk(a[k], b[k], path+"/"+k, out, limit)
- elif isinstance(a, list):
- if len(a) != len(b):
- out.append((path+"/len", str(len(a)), str(len(b))))
- for i in range(min(len(a), len(b))):
- walk(a[i], b[i], path+f"[{i}]", out, limit)
- else:
- if a != b: out.append((path, repr(a)[:60], repr(b)[:60]))
- return out
- for n in names:
- print("="*100)
- print(n)
- for v in variants[1:]:
- a = load(n,"none"); b = load(n,v)
- if "__load_error__" in b:
- print(f" none vs {v}: LOAD ERROR {b['__load_error__']}"); continue
- d = walk(a,b)
- print(f" none vs {v}: {len(d)} diff(s)")
- for p,x,y in d[:12]:
- print(f" {p}: {x} -> {y}")
|