설계 개편
This commit is contained in:
+171
-241
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://example.invalid/techviz/vizspec-1.0.schema.json",
|
||||
"$id": "https://example.invalid/techviz/vizspec-1.1.schema.json",
|
||||
"title": "TechViz Grounded Visualization Specification",
|
||||
"type": "object",
|
||||
"required": [
|
||||
@@ -20,7 +20,7 @@
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"version": {
|
||||
"const": "1.0"
|
||||
"enum": ["1.0", "1.1"]
|
||||
},
|
||||
"id": {
|
||||
"type": "string",
|
||||
@@ -52,18 +52,11 @@
|
||||
]
|
||||
},
|
||||
"direction": {
|
||||
"enum": [
|
||||
"LR",
|
||||
"RL",
|
||||
"TB",
|
||||
"BT"
|
||||
]
|
||||
"enum": ["LR", "RL", "TB", "BT"]
|
||||
},
|
||||
"audience": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
"items": {"type": "string"}
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
@@ -79,252 +72,51 @@
|
||||
},
|
||||
"source_context": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"document",
|
||||
"document_sha256",
|
||||
"anchor"
|
||||
],
|
||||
"required": ["document", "document_sha256", "anchor"],
|
||||
"additionalProperties": true,
|
||||
"properties": {
|
||||
"document": {
|
||||
"type": "string"
|
||||
},
|
||||
"document": {"type": "string"},
|
||||
"document_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-f0-9]{64}$"
|
||||
},
|
||||
"anchor": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"kind",
|
||||
"value",
|
||||
"line"
|
||||
],
|
||||
"required": ["kind", "value", "line"],
|
||||
"additionalProperties": true,
|
||||
"properties": {
|
||||
"kind": {
|
||||
"enum": [
|
||||
"marker",
|
||||
"heading",
|
||||
"line"
|
||||
]
|
||||
},
|
||||
"kind": {"enum": ["marker", "heading", "line"]},
|
||||
"value": {},
|
||||
"line": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
}
|
||||
"line": {"type": "integer", "minimum": 1}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"composition": {
|
||||
"$ref": "#/$defs/composition"
|
||||
},
|
||||
"groups": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
"label",
|
||||
"evidence",
|
||||
"assumption"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z][A-Za-z0-9_.-]*$"
|
||||
},
|
||||
"label": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"kind": {
|
||||
"type": "string"
|
||||
},
|
||||
"parent": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"evidence": {
|
||||
"$ref": "#/$defs/evidenceArray"
|
||||
},
|
||||
"assumption": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"assumption": {
|
||||
"const": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"assumption"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"evidence": {
|
||||
"maxItems": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
"items": {"$ref": "#/$defs/group"}
|
||||
},
|
||||
"nodes": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
"label",
|
||||
"kind",
|
||||
"evidence",
|
||||
"assumption"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z][A-Za-z0-9_.-]*$"
|
||||
},
|
||||
"label": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"kind": {
|
||||
"type": "string"
|
||||
},
|
||||
"group": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"evidence": {
|
||||
"$ref": "#/$defs/evidenceArray"
|
||||
},
|
||||
"assumption": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"icon": {
|
||||
"type": "string"
|
||||
},
|
||||
"link": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"assumption": {
|
||||
"const": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"assumption"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"evidence": {
|
||||
"maxItems": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
"items": {"$ref": "#/$defs/node"}
|
||||
},
|
||||
"edges": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
"from",
|
||||
"to",
|
||||
"label",
|
||||
"kind",
|
||||
"evidence",
|
||||
"assumption"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z][A-Za-z0-9_.-]*$"
|
||||
},
|
||||
"from": {
|
||||
"type": "string"
|
||||
},
|
||||
"to": {
|
||||
"type": "string"
|
||||
},
|
||||
"label": {
|
||||
"type": "string"
|
||||
},
|
||||
"kind": {
|
||||
"type": "string"
|
||||
},
|
||||
"order": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"evidence": {
|
||||
"$ref": "#/$defs/evidenceArray"
|
||||
},
|
||||
"assumption": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"assumption": {
|
||||
"const": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"assumption"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"evidence": {
|
||||
"maxItems": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
"items": {"$ref": "#/$defs/edge"}
|
||||
},
|
||||
"legend": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"symbol",
|
||||
"meaning"
|
||||
],
|
||||
"required": ["symbol", "meaning"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"symbol": {
|
||||
"type": "string"
|
||||
},
|
||||
"meaning": {
|
||||
"type": "string"
|
||||
}
|
||||
"symbol": {"type": "string"},
|
||||
"meaning": {"type": "string"}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -332,30 +124,168 @@
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {"version": {"const": "1.1"}},
|
||||
"required": ["version"]
|
||||
},
|
||||
"then": {
|
||||
"required": ["composition"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"$defs": {
|
||||
"composition": {
|
||||
"type": "object",
|
||||
"required": ["profile", "diagram_only", "reference_ids", "rationale"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"profile": {
|
||||
"enum": [
|
||||
"component-flow",
|
||||
"orchestrator-workers",
|
||||
"query-fanout",
|
||||
"timeline",
|
||||
"reconciliation-loop",
|
||||
"resource-controller",
|
||||
"two-zone-pipeline",
|
||||
"sequence",
|
||||
"ports-adapters",
|
||||
"comparison"
|
||||
]
|
||||
},
|
||||
"diagram_only": {"const": true},
|
||||
"reference_ids": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"uniqueItems": true,
|
||||
"items": {"type": "string"}
|
||||
},
|
||||
"rationale": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"focus_node": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"evidenceArray": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"start_line",
|
||||
"end_line"
|
||||
],
|
||||
"required": ["start_line", "end_line"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"start_line": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"end_line": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"quote": {
|
||||
"type": "string"
|
||||
}
|
||||
"start_line": {"type": "integer", "minimum": 1},
|
||||
"end_line": {"type": "integer", "minimum": 1},
|
||||
"quote": {"type": "string"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"type": "object",
|
||||
"required": ["id", "label", "evidence", "assumption"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z][A-Za-z0-9_.-]*$"
|
||||
},
|
||||
"label": {"type": "string", "minLength": 1},
|
||||
"kind": {"type": "string"},
|
||||
"role": {"type": "string"},
|
||||
"parent": {"type": "string"},
|
||||
"description": {"type": "string"},
|
||||
"evidence": {"$ref": "#/$defs/evidenceArray"},
|
||||
"assumption": {"type": "boolean"}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {"assumption": {"const": true}},
|
||||
"required": ["assumption"]
|
||||
},
|
||||
"then": {
|
||||
"properties": {"evidence": {"maxItems": 0}}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"node": {
|
||||
"type": "object",
|
||||
"required": ["id", "label", "kind", "evidence", "assumption"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z][A-Za-z0-9_.-]*$"
|
||||
},
|
||||
"label": {"type": "string", "minLength": 1},
|
||||
"kind": {"type": "string"},
|
||||
"group": {"type": "string"},
|
||||
"description": {"type": "string"},
|
||||
"evidence": {"$ref": "#/$defs/evidenceArray"},
|
||||
"assumption": {"type": "boolean"},
|
||||
"icon": {"type": "string"},
|
||||
"link": {"type": "string"},
|
||||
"role": {"type": "string"},
|
||||
"shape": {"type": "string"},
|
||||
"details": {
|
||||
"type": "array",
|
||||
"maxItems": 8,
|
||||
"items": {"type": "string"}
|
||||
},
|
||||
"position": {"type": "integer", "minimum": 1},
|
||||
"emphasis": {
|
||||
"enum": ["primary", "normal", "muted", "warning"]
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {"assumption": {"const": true}},
|
||||
"required": ["assumption"]
|
||||
},
|
||||
"then": {
|
||||
"properties": {"evidence": {"maxItems": 0}}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"edge": {
|
||||
"type": "object",
|
||||
"required": ["id", "from", "to", "label", "kind", "evidence", "assumption"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z][A-Za-z0-9_.-]*$"
|
||||
},
|
||||
"from": {"type": "string"},
|
||||
"to": {"type": "string"},
|
||||
"label": {"type": "string"},
|
||||
"kind": {"type": "string"},
|
||||
"order": {"type": "integer", "minimum": 1},
|
||||
"style": {"enum": ["solid", "dashed", "dotted"]},
|
||||
"emphasis": {
|
||||
"enum": ["primary", "normal", "muted", "warning"]
|
||||
},
|
||||
"evidence": {"$ref": "#/$defs/evidenceArray"},
|
||||
"assumption": {"type": "boolean"}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {"assumption": {"const": true}},
|
||||
"required": ["assumption"]
|
||||
},
|
||||
"then": {
|
||||
"properties": {"evidence": {"maxItems": 0}}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user