90 lines
2.2 KiB
Python
90 lines
2.2 KiB
Python
"""
|
|
Unified JSON document schema and helpers used by both generation prompts and renderers.
|
|
|
|
This defines a single canonical template and the supported section types.
|
|
"""
|
|
|
|
from typing import List
|
|
|
|
# Canonical list of supported section types across the system
|
|
supportedSectionTypes: List[str] = [
|
|
"table",
|
|
"bullet_list",
|
|
"heading",
|
|
"paragraph",
|
|
"code_block",
|
|
"image",
|
|
]
|
|
|
|
# Canonical JSON template used for AI generation (documents array + sections)
|
|
# Rendering pipelines can select the first document and read its sections.
|
|
jsonTemplateDocument: str = """{
|
|
"metadata": {
|
|
"split_strategy": "single_document",
|
|
"source_documents": [],
|
|
"extraction_method": "ai_generation"
|
|
},
|
|
"documents": [
|
|
{
|
|
"id": "doc_1",
|
|
"title": "{{DOCUMENT_TITLE}}",
|
|
"filename": "document.json",
|
|
"sections": [
|
|
{
|
|
"id": "section_heading_example",
|
|
"content_type": "heading",
|
|
"elements": [
|
|
{"level": 1, "text": "Heading Text"}
|
|
],
|
|
"order": 0
|
|
},
|
|
{
|
|
"id": "section_paragraph_example",
|
|
"content_type": "paragraph",
|
|
"elements": [
|
|
{"text": "Paragraph text content"}
|
|
],
|
|
"order": 0
|
|
},
|
|
{
|
|
"id": "section_bullet_list_example",
|
|
"content_type": "bullet_list",
|
|
"elements": [
|
|
{
|
|
"items": ["Item 1", "Item 2"]
|
|
}
|
|
],
|
|
"order": 0
|
|
},
|
|
{
|
|
"id": "section_table_example",
|
|
"content_type": "table",
|
|
"elements": [
|
|
{
|
|
"headers": ["Column 1", "Column 2"],
|
|
"rows": [
|
|
["Row 1 Col 1", "Row 1 Col 2"],
|
|
["Row 2 Col 1", "Row 2 Col 2"]
|
|
],
|
|
"caption": "Table caption"
|
|
}
|
|
],
|
|
"order": 0
|
|
},
|
|
{
|
|
"id": "section_code_example",
|
|
"content_type": "code_block",
|
|
"elements": [
|
|
{
|
|
"code": "function example() { return true; }",
|
|
"language": "javascript"
|
|
}
|
|
],
|
|
"order": 0
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}"""
|
|
|
|
|