WorkspaceRule · types
Interfaces, valeurs et contrats nommés de WorkspaceRule.
Les types ci-dessous définissent les objets nommés et leurs relations. Les propriétés héritées sont incluses dans les tableaux. Les types dérivés d’un schéma renvoient à sa structure; une déclaration TypeScript ne remplace pas les contrôles sémantiques du compilateur.
WorkspaceRule
Admitted complete Rule declaration using the shared scalar and typed expression grammar.
export type WorkspaceRule = z.infer<typeof workspaceRuleSchema>;
ModelRuleExpression
Expression syntax accepted by the complete Model Rule declaration.
export type ModelRuleExpression = WorkspaceRule['expression'];
type ModelRuleExpression = import("./WorkspaceModelFoundationDeclarations.js").ScalarModelRuleExpression | { kind: "exact-compare"; operator: "eq" | "ne" | "lt" | "lte" | "gt" | "gte"; left: import("./WorkspaceExactData.js").ManagedExactDataExpression; right: import("./WorkspaceExactData.js").ManagedExactDataExpression; } | { kind: "integer-compare"; schema: { kind: "integer"; minimum: string; maximum: string; unit: { kind: "dimensionless"; } | { kind: "unit"; key: string; } | { kind: "currency"; key: string; }; }; operator: "eq" | "ne" | "lt" | "lte" | "gt" | "gte"; left: { kind: "field"; field: { definitionPath: string; fieldKey: string; }; } | { kind: "literal"; value: string; }; right: { kind: "field"; field: { definitionPath: string; fieldKey: string; }; } | { kind: "literal"; value: string; }; } | { kind: "real-compare"; schema: { kind: "real"; representation: "binary64"; precisionBits: 53; minimum: number; maximum: number; tolerance: { absolute: number; relative: number; }; unit: { kind: "dimensionless"; } | { kind: "unit"; key: string; }; }; operator: "approximately-equal" | "not-approximately-equal"; left: { kind: "field"; field: { definitionPath: string; fieldKey: string; }; } | { kind: "literal"; value: number; }; right: { kind: "field"; field: { definitionPath: string; fieldKey: string; }; } | { kind: "literal"; value: number; }; };
Exemples appliqués : Vérifier avant de confirmer
Une règle exige une entreprise; une autre interdit un montant négatif ou nul.
Configuration
Fragment à placer dans rules[]. Propriétés et valeurs admises.
{
"contract": "WorkspaceRule@1",
"key": "company-required",
"label": "Entreprise renseignée",
"expression": {
"kind": "present",
"field": {
"definitionPath": "workspace/clients/surface/client",
"fieldKey": "company"
}
}
}
Variante et raccordement
Fragment à placer dans rules[]. Propriétés et valeurs admises.
{
"contract": "WorkspaceRule@1",
"key": "positive-amount",
"label": "Montant positif",
"expression": {
"kind": "compare",
"field": {
"definitionPath": "workspace/quotes/surface/quote",
"fieldKey": "amount"
},
"operator": "gt",
"value": 0
}
}
Exemple de disposition UI
La disposition illustrative ci-dessous situe cette configuration dans l’app Clients/Soumissions. Chaque fragment s’insère à l’emplacement indiqué; ses références aux Fields, Queries et Actions correspondent aux déclarations du Model.
- Entreprise *
- État *
- Notes
- Créer le client
Les notes s’enrichissent dans la fiche après création.