This commit is contained in:
2026-06-24 14:40:43 +00:00
parent 22b05a7a1b
commit 7058970f98
80 changed files with 6383 additions and 0 deletions
@@ -0,0 +1,508 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.invalid/schemas/report-payload.schema.json",
"title": "Monthly Report Render Payload",
"type": "object",
"additionalProperties": false,
"properties": {
"report": {
"type": "object",
"additionalProperties": false,
"properties": {
"report_version": {
"type": "string",
"pattern": "^[0-9]+\\.[0-9]+$"
},
"prompt_version": {
"type": "string",
"pattern": "^[0-9]+\\.[0-9]+$"
},
"template_version": {
"type": "string",
"pattern": "^[0-9]+\\.[0-9]+$"
},
"generated_at": {
"type": "string",
"format": "date-time"
},
"publisher": {
"type": "string",
"minLength": 2,
"maxLength": 120
},
"period": {
"type": "object",
"additionalProperties": false,
"properties": {
"year": {
"type": "integer",
"minimum": 2020,
"maximum": 2100
},
"month": {
"type": "integer",
"minimum": 1,
"maximum": 12
},
"label": {
"type": "string",
"minLength": 4,
"maxLength": 40
},
"comparison_label": {
"type": "string",
"minLength": 4,
"maxLength": 60
}
},
"required": [
"year",
"month",
"label",
"comparison_label"
]
}
},
"required": [
"report_version",
"prompt_version",
"template_version",
"generated_at",
"publisher",
"period"
]
},
"customer": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{2,64}$"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 160
},
"property_name": {
"type": "string",
"minLength": 2,
"maxLength": 160
},
"location": {
"type": "string",
"minLength": 2,
"maxLength": 160
},
"contact_line": {
"type": "string",
"minLength": 0,
"maxLength": 180
},
"logo_data_uri": {
"type": "string",
"pattern": "^data:image/(png|jpeg|svg\\+xml);base64,"
},
"logo_text": {
"type": "string",
"minLength": 1,
"maxLength": 5
}
},
"required": [
"id",
"name",
"property_name",
"location",
"contact_line",
"logo_text"
]
},
"design": {
"type": "object",
"additionalProperties": false,
"properties": {
"theme": {
"type": "string",
"enum": [
"alpine-sage",
"classic",
"editorial-ink",
"editorial-ivory",
"editorial-rose",
"executive-blue",
"executive-burgundy",
"executive-charcoal",
"forest-lodge",
"ledger-blue",
"ledger-green",
"ledger-sepia",
"magazine-citrus",
"magazine-cobalt",
"magazine-plum",
"midnight-gold",
"modern",
"nordic-light",
"nordic-night",
"ocean-breeze",
"poster-mono",
"poster-red",
"poster-yellow",
"soft-lavender",
"split-teal",
"split-terracotta",
"split-violet",
"sunset-coral"
]
},
"primary_color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"secondary_color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"accent_color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"text_color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"muted_color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"surface_color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"font_family": {
"type": "string",
"minLength": 3,
"maxLength": 100,
"pattern": "^[A-Za-z0-9 _,-]+$"
},
"palette_mode": {
"type": "string",
"enum": [
"theme",
"custom"
],
"description": "theme nutzt die feste Theme-Palette; custom nutzt die mitgelieferten Designfarben."
}
},
"required": [
"theme",
"primary_color",
"secondary_color",
"accent_color",
"text_color",
"muted_color",
"surface_color",
"font_family"
]
},
"metrics": {
"type": "object",
"additionalProperties": false,
"properties": {
"currency": {
"type": "string",
"enum": [
"EUR",
"USD",
"GBP"
]
},
"revenue": {
"type": "number",
"minimum": 0
},
"occupancy_rate": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"adr": {
"type": "number",
"minimum": 0
},
"revpar": {
"type": "number",
"minimum": 0
},
"bookings": {
"type": "integer",
"minimum": 0
},
"nights_sold": {
"type": "integer",
"minimum": 0
},
"average_stay": {
"type": "number",
"minimum": 0
},
"cancellation_rate": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"comparison": {
"type": "object",
"additionalProperties": false,
"properties": {
"revenue_delta_pct": {
"type": "number",
"minimum": -1000,
"maximum": 1000
},
"occupancy_delta_pp": {
"type": "number",
"minimum": -100,
"maximum": 100
},
"adr_delta_pct": {
"type": "number",
"minimum": -1000,
"maximum": 1000
},
"bookings_delta": {
"type": "integer",
"minimum": -100000,
"maximum": 100000
}
},
"required": [
"revenue_delta_pct",
"occupancy_delta_pp",
"adr_delta_pct",
"bookings_delta"
]
}
},
"required": [
"currency",
"revenue",
"occupancy_rate",
"adr",
"revpar",
"bookings",
"nights_sold",
"average_stay",
"cancellation_rate",
"comparison"
]
},
"trends": {
"type": "array",
"minItems": 2,
"maxItems": 12,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"label": {
"type": "string",
"minLength": 2,
"maxLength": 20
},
"revenue": {
"type": "number",
"minimum": 0
},
"occupancy_rate": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"adr": {
"type": "number",
"minimum": 0
}
},
"required": [
"label",
"revenue",
"occupancy_rate",
"adr"
]
}
},
"content": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.invalid/schemas/claude-output.schema.json",
"title": "Claude Monthly Report Content",
"type": "object",
"additionalProperties": false,
"properties": {
"summary": {
"type": "object",
"additionalProperties": false,
"properties": {
"headline": {
"type": "string",
"minLength": 8,
"maxLength": 110
},
"text": {
"type": "string",
"minLength": 80,
"maxLength": 900
},
"rating": {
"type": "string",
"enum": [
"positive",
"neutral",
"watch"
]
}
},
"required": [
"headline",
"text",
"rating"
]
},
"developments": {
"type": "array",
"minItems": 2,
"maxItems": 4,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"title": {
"type": "string",
"minLength": 4,
"maxLength": 80
},
"text": {
"type": "string",
"minLength": 40,
"maxLength": 450
},
"impact": {
"type": "string",
"enum": [
"positive",
"neutral",
"negative"
]
}
},
"required": [
"title",
"text",
"impact"
]
}
},
"recommendations": {
"type": "array",
"minItems": 1,
"maxItems": 3,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"priority": {
"type": "integer",
"minimum": 1,
"maximum": 3
},
"category": {
"type": "string",
"minLength": 3,
"maxLength": 80
},
"title": {
"type": "string",
"minLength": 5,
"maxLength": 100
},
"reason": {
"type": "string",
"minLength": 40,
"maxLength": 450
},
"action": {
"type": "string",
"minLength": 30,
"maxLength": 450
},
"expected_effect": {
"type": "string",
"minLength": 20,
"maxLength": 300
}
},
"required": [
"priority",
"category",
"title",
"reason",
"action",
"expected_effect"
]
}
},
"outlook": {
"type": "object",
"additionalProperties": false,
"properties": {
"headline": {
"type": "string",
"minLength": 5,
"maxLength": 100
},
"text": {
"type": "string",
"minLength": 60,
"maxLength": 700
}
},
"required": [
"headline",
"text"
]
},
"data_quality_notes": {
"type": "array",
"maxItems": 4,
"items": {
"type": "string",
"minLength": 5,
"maxLength": 240
}
}
},
"required": [
"summary",
"developments",
"recommendations",
"outlook",
"data_quality_notes"
]
},
"legal_note": {
"type": "string",
"minLength": 10,
"maxLength": 500
}
},
"required": [
"report",
"customer",
"design",
"metrics",
"trends",
"content",
"legal_note"
]
}