Spaces:
Running
Running
File size: 1,799 Bytes
9de795a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | /* AUTOGENERIERT aus packages/shared/schemas – nicht von Hand ändern (pnpm codegen). */
/**
* Vertrag 6: deklarative Norm-Regel (Daten statt Code, Norm-Regelsatz-v0). Beide Interpreter (TS @fp/shared · Python fp_engines) lesen exakt dieses Format. Parameter-Konventionen je type: siehe packages/shared/src/rules/README.md.
*/
export interface Regel {
id: string;
/**
* «alle» = Basis-Rahmen, gilt in jedem Raum. Im Grossraum gelten Regeln pro Zone.
*/
roomType: "alle" | "bad" | "kueche" | "wohnen" | "schlafen" | "essen" | "flur" | "sonstig";
/**
* funktionsTyp des Zielobjekts (z.B. wc, lavabo) oder «*» für alle Objekte bzw. raumbezogene Regeln.
*/
appliesTo: string;
kategorie: "rahmen" | "objekt-raum" | "objekt-objekt" | "sperrzone" | "anschluss" | "ergonomie";
type:
| "collision"
| "wall-distance"
| "object-distance"
| "clearance"
| "door-swing"
| "keep-clear"
| "host-binding"
| "connection"
| "circulation"
| "relation";
/**
* hard = Constraint (muss) · soft = Score (Ergonomie/Stil).
*/
severity: "hard" | "soft";
/**
* Parametrierung je type (z.B. minDist, depth, width, radius, anschluss, maxDist, measure).
*/
params?: {
[k: string]: number | string;
};
/**
* Regel gilt nur in diesem Normprofil; ohne Feld: in allen.
*/
normProfile?: "ch" | "eu";
/**
* Profil → params-Overrides (CH/EU-Werte über der Basis).
*/
profilOverrides?: {
[k: string]: {
[k: string]: number | string;
};
};
/**
* Strengere Werte, wenn Barrierefrei-Overlay aktiv (Mechanik vorgesehen, Werte post-POC).
*/
barrierefreiOverride?: {
[k: string]: number | string;
};
quelle: string;
status: "zu-verifizieren" | "verifiziert";
hinweis?: string;
}
|