Files
Claude Code DTP Worker 35a20247f8 [DTP-Worker] Sprint 5 · Générateur DocType CONFOTUR Application (ONAPI/Legal · roadmap L55)
DocType custom porteur des dossiers d'incitation touristique CONFOTUR (Ley
158-01, RD), référencé par RBAC (3 rôles) et le workflow vente mais jamais
généré. Permissions = permissions_cibles RBAC mot pour mot ; is_submittable
déduit de l'action submit ; estado/dossier_vente dérivés du workflow ; aucun
taux/loi/montant fabriqué (#6). 14 invariants, 44 tests, hand-off dans out/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 08:09:41 +00:00

203 lines
7.9 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://oto-enterprise-os-dtp/legal/confotur_application.schema.json",
"title": "Bundle fixture DocType 'CONFOTUR Application' genere depuis confotur_spec.json + rbac_50_roles.json + workflow_vente_spec.json",
"description": "Contrat de sortie du generateur confotur_application_gen.py. Valide par le validateur maison Publiciste (zero pip) dans le job CI legal-confotur-tests.",
"type": "object",
"additionalProperties": false,
"required": ["manifest", "doctype"],
"properties": {
"manifest": {
"type": "object",
"additionalProperties": false,
"required": [
"generated_from",
"rbac_source",
"workflow_source",
"source_version",
"rbac_version",
"workflow_version",
"doctype_name",
"custom",
"is_submittable",
"counts",
"module_a_confirmer",
"doctypes_lies_a_confirmer",
"roles_rbac_utilises",
"depot_events",
"note_anti_invention",
"hand_off_vps"
],
"properties": {
"generated_from": { "type": "string", "const": "confotur_spec.json" },
"rbac_source": { "type": "string", "const": "rbac_50_roles.json" },
"workflow_source": { "type": "string", "const": "crm/workflow_vente/workflow_vente_spec.json" },
"source_version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
"rbac_version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
"workflow_version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
"doctype_name": { "type": "string", "const": "CONFOTUR Application" },
"custom": { "type": "boolean" },
"is_submittable": { "type": "boolean" },
"counts": {
"type": "object",
"additionalProperties": false,
"required": ["fields", "data_fields", "sections", "permissions", "roles", "depot_events"],
"properties": {
"fields": { "type": "integer", "minimum": 3 },
"data_fields": { "type": "integer", "minimum": 2 },
"sections": { "type": "integer", "minimum": 1 },
"permissions": { "type": "integer", "minimum": 1 },
"roles": { "type": "integer", "minimum": 1 },
"depot_events": { "type": "integer", "minimum": 1 }
}
},
"module_a_confirmer": { "type": "string", "minLength": 1 },
"doctypes_lies_a_confirmer": {
"type": "array",
"uniqueItems": true,
"items": { "type": "string", "minLength": 1 }
},
"roles_rbac_utilises": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["role_id", "erpnext_role_name", "portail", "permissions", "custom"],
"properties": {
"role_id": { "type": "string", "minLength": 1 },
"erpnext_role_name": { "type": "string", "pattern": "^OTO " },
"portail": { "type": "string", "minLength": 1 },
"permissions": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": { "type": "string", "enum": ["read", "write", "create", "submit", "cancel", "amend", "delete", "print", "email", "report", "import", "export", "share"] }
},
"custom": { "type": "boolean" }
}
}
},
"depot_events": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["action", "next_state", "update_value", "role_id", "erpnext_role_name", "portail"],
"properties": {
"action": { "type": "string", "minLength": 1 },
"next_state": { "type": "string", "minLength": 1 },
"update_value": { "type": "string", "pattern": "^confotur" },
"role_id": { "type": "string", "minLength": 1 },
"erpnext_role_name": { "type": "string", "pattern": "^OTO " },
"portail": { "type": "string", "minLength": 1 }
}
}
},
"note_anti_invention": { "type": "string", "minLength": 1 },
"hand_off_vps": { "type": "string", "minLength": 1 }
}
},
"doctype": {
"type": "object",
"additionalProperties": false,
"required": [
"doctype",
"name",
"module",
"custom",
"is_submittable",
"naming_rule",
"autoname",
"title_field",
"search_fields",
"track_changes",
"track_seen",
"editable_grid",
"engine",
"field_order",
"fields",
"permissions"
],
"properties": {
"doctype": { "type": "string", "const": "DocType" },
"name": { "type": "string", "const": "CONFOTUR Application" },
"module": { "type": "string", "minLength": 1 },
"custom": { "$ref": "#/definitions/flag" },
"is_submittable": { "$ref": "#/definitions/flag" },
"naming_rule": { "type": "string", "minLength": 1 },
"autoname": { "type": "string", "minLength": 1 },
"title_field": { "type": "string", "minLength": 1 },
"search_fields": { "type": "string", "minLength": 1 },
"track_changes": { "$ref": "#/definitions/flag" },
"track_seen": { "$ref": "#/definitions/flag" },
"editable_grid": { "$ref": "#/definitions/flag" },
"engine": { "type": "string", "const": "InnoDB" },
"field_order": {
"type": "array",
"minItems": 3,
"uniqueItems": true,
"items": { "type": "string", "minLength": 1 }
},
"fields": {
"type": "array",
"minItems": 3,
"items": { "$ref": "#/definitions/docfield" }
},
"permissions": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/definitions/docperm" }
}
}
}
},
"definitions": {
"flag": { "type": "integer", "enum": [0, 1] },
"docfield": {
"type": "object",
"additionalProperties": false,
"required": ["fieldname", "fieldtype"],
"properties": {
"fieldname": { "type": "string", "pattern": "^[a-z0-9_]+$" },
"fieldtype": {
"type": "string",
"enum": ["Section Break", "Column Break", "Data", "Select", "Link", "Date", "Datetime", "Small Text", "Text", "Check"]
},
"label": { "type": "string", "minLength": 1 },
"options": { "type": "string" },
"default": { "type": "string" },
"reqd": { "$ref": "#/definitions/flag" },
"read_only": { "$ref": "#/definitions/flag" },
"in_list_view": { "$ref": "#/definitions/flag" },
"in_standard_filter": { "$ref": "#/definitions/flag" },
"hidden": { "$ref": "#/definitions/flag" },
"bold": { "$ref": "#/definitions/flag" }
}
},
"docperm": {
"type": "object",
"additionalProperties": false,
"required": ["role", "permlevel"],
"properties": {
"role": { "type": "string", "pattern": "^OTO " },
"permlevel": { "type": "integer", "minimum": 0 },
"read": { "$ref": "#/definitions/flag" },
"write": { "$ref": "#/definitions/flag" },
"create": { "$ref": "#/definitions/flag" },
"submit": { "$ref": "#/definitions/flag" },
"cancel": { "$ref": "#/definitions/flag" },
"amend": { "$ref": "#/definitions/flag" },
"delete": { "$ref": "#/definitions/flag" },
"print": { "$ref": "#/definitions/flag" },
"email": { "$ref": "#/definitions/flag" },
"report": { "$ref": "#/definitions/flag" },
"import": { "$ref": "#/definitions/flag" },
"export": { "$ref": "#/definitions/flag" },
"share": { "$ref": "#/definitions/flag" }
}
}
}
}