upload
This commit is contained in:
@@ -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"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user