L'entrée « urssaf-echeancier / pending-definition / recurrence unknown » traînait depuis erp#54 avec la consigne « ne pas inventer de cadence ». L'opérateur a communiqué l'échéancier : ce n'est pas trimestriel mais trois appels irréguliers. 493,00 (22/05, prélevé) + 1 215,00 (05/08) + 1 333,00 (05/11) = 3 041,00 EUR Corrige aussi le compte comptable, faux dans la note : les cotisations d'un gérant associé unique de SARLU (TNS) vont en 646 — cotisations personnelles du dirigeant — et non en 645, qui vise les cotisations patronales sur salaires et doit rester vide puisque Arcodange n'a aucun salarié. Le schéma accepte désormais amount_eur : la boucle de rappels T11 (erp#60) a besoin du montant en donnée structurée, pas noyé dans du texte libre. Registre validé : 8 règles, 16 entrées, 8 ADC, 0 erreur. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01VRShc4QhLLU73FLHx9vskh
47 lines
2.5 KiB
JSON
47 lines
2.5 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "fleet/profile/calendar.schema.json",
|
|
"title": "Arcodange compliance calendar (fleet/profile/calendar.yaml)",
|
|
"description": "Dated obligations the T11 reminder loop (erp#60) reads. due 'YYYY-MM-DD' = exact date; 'YYYY-MM' = month window (source gives no day - verify on the authority's notice, never invent). Exactly one of due|recurrence per entry unless status is pending-definition/conditional (checked by scripts/validate.py, which implements the JSON-Schema subset {type, properties, required, additionalProperties, items, enum, pattern}).",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["version", "defaults", "entries"],
|
|
"properties": {
|
|
"version": { "type": "integer", "enum": [1] },
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["reminders_days_before"],
|
|
"properties": {
|
|
"reminders_days_before": { "type": "array", "items": { "type": "integer" } },
|
|
"reminders_repeat_until_acknowledged": { "type": "boolean" }
|
|
}
|
|
},
|
|
"entries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["id", "title", "category", "source"],
|
|
"properties": {
|
|
"id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
"title": { "type": "string" },
|
|
"category": { "type": "string", "enum": ["fiscal", "legal", "regulatory", "social", "receivable", "contract"] },
|
|
"nature": { "type": "string", "enum": ["regulatory-hard", "fiscal-hard", "legal-hard", "engineering", "informational"] },
|
|
"status": { "type": "string", "enum": ["confirmed", "estimated", "conditional", "pending-definition"] },
|
|
"due": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}(-[0-9]{2})?$" },
|
|
"recurrence": { "type": "string", "enum": ["yearly", "quarterly", "monthly", "unknown"] },
|
|
"months": { "type": "array", "items": { "type": "integer" } },
|
|
"effective_from": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" },
|
|
"effective_until": { "type": ["string", "null"], "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" },
|
|
"authority": { "type": "string" },
|
|
"related_task": { "type": "string", "pattern": "^T[0-9]{2}$" },
|
|
"source": { "type": "string" },
|
|
"notes": { "type": "string" },
|
|
"amount_eur": { "type": "number" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|