WorkspaceExactData · types
Interfaces, valeurs et contrats nommés de WorkspaceExactData.
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.
ManagedExactDataValueType
Declared numeric value type and unit used to type the expression program.
export type ManagedExactDataValueType = z.infer<typeof managedExactDataValueTypeSchema>;
ManagedExactDataExpression
Typed numeric syntax has no scripts, arbitrary function names or unregistered conversion operators.
export type ManagedExactDataExpression =
| { kind: 'literal'; type: ManagedExactDataValueType; value: string }
| { kind: 'field'; type: ManagedExactDataValueType; field: ExactFieldReference }
| { kind: 'calculation'; type: ManagedExactDataValueType; key: string }
| {
kind: 'arithmetic';
operator: 'add' | 'subtract' | 'multiply' | 'divide';
left: ManagedExactDataExpression;
right: ManagedExactDataExpression;
type: ManagedExactDataValueType;
rounding: Rounding | null;
unitOperation: { key: string; version: string } | null;
}
| {
kind: 'round';
operand: ManagedExactDataExpression;
type: ManagedExactDataValueType;
rounding: Rounding;
}
| {
kind: 'conditional';
condition: ManagedExactDataPredicate;
whenTrue: ManagedExactDataExpression;
whenFalse: ManagedExactDataExpression;
type: ManagedExactDataValueType;
}
| {
kind: 'conversion';
conversionKey: string;
conversionVersion: string;
operand: ManagedExactDataExpression;
type: ManagedExactDataValueType;
}
| {
kind: 'query-total';
queryKey: string;
parameters: Record<string, z.infer<typeof workspaceQueryBindingSchema>>;
operator: 'count' | 'count-distinct';
type: ManagedExactDataValueType;
}
| {
kind: 'aggregate';
queryKey: string;
parameters: Record<string, z.infer<typeof workspaceQueryBindingSchema>>;
field: ExactFieldReference;
operator: 'sum' | 'min' | 'max' | 'average';
type: ManagedExactDataValueType;
rounding: Rounding | null;
};
ManagedExactDataPredicate
Boolean conditions compare typed exact values; truthiness never substitutes for an explicit comparison.
| Champ | Options / valeurs attendues | Description |
|---|---|---|
kind |
"compare" |
Requis. Sélectionne la variante et les propriétés admises dans cette branche. |
operator |
"eq" | "ne" | "lt" | "lte" | "gt" | "gte" |
Requis. Comparaison ou opération de la variante; la valeur doit correspondre au type attendu. |
left |
ManagedExactDataExpression |
Requis. Définit « left » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
right |
ManagedExactDataExpression |
Requis. Définit « right » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options. |
export interface ManagedExactDataPredicate {
kind: 'compare';
operator: 'eq' | 'ne' | 'lt' | 'lte' | 'gt' | 'gte';
left: ManagedExactDataExpression;
right: ManagedExactDataExpression;
}
WorkspaceExactData
Admitted units, conversions and calculations; evaluation belongs to the shared numeric engine.
export type WorkspaceExactData = z.infer<typeof workspaceExactDataSchema>;
Exemples appliqués : Texte requis et choix métier
Entreprise utilise une saisie texte obligatoire; État réutilise une liste de valeurs déclarées.
Configuration
Fragment à placer dans forms[].fields[]. Propriétés et valeurs admises.
{
"contract": "WorkspaceFormControl@2",
"repeatable": false,
"key": "company",
"label": "Entreprise",
"input": "text",
"binding": {
"kind": "field",
"fieldKey": "company"
},
"required": true,
"ruleKeys": [],
"options": []
}
Variante et raccordement
Fragment à placer dans forms[].fields[]. Propriétés et valeurs admises.
{
"contract": "WorkspaceFormControl@2",
"repeatable": false,
"key": "status",
"label": "État",
"input": "choice",
"binding": {
"kind": "field",
"fieldKey": "status"
},
"required": true,
"ruleKeys": [],
"options": [
"prospect",
"active"
]
}
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.
- Identité du client
- Notes et suivi
- Paramètres
- Soumissions liées
Le client souhaite préparer une proposition pour son nouveau projet. Préciser les besoins et confirmer le budget avant la revue.
Texte éditable dans la Surface