81 lines
1.9 KiB
Markdown
81 lines
1.9 KiB
Markdown
# JSON Schema Contract: Deterministic Article Content Selection
|
|
|
|
**Branch**: `004-deterministic-content-selection` | **Date**: 2026-08-20 | **Spec**: [spec.md](../spec.md)
|
|
|
|
---
|
|
|
|
## 1. Input JSON Schema
|
|
|
|
O arquivo de entrada deve conter uma lista de artigos sob a chave `articles`.
|
|
|
|
```json
|
|
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"required": ["articles"],
|
|
"properties": {
|
|
"articles": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"trafilatura": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": { "type": ["string", "null"] },
|
|
"error": { "type": ["string", "null"] }
|
|
}
|
|
},
|
|
"newspaper4k": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": { "type": ["string", "null"] },
|
|
"error": { "type": ["string", "null"] }
|
|
}
|
|
},
|
|
"readability": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cleaned_text": { "type": ["string", "null"] },
|
|
"error": { "type": ["string", "null"] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Output JSON Schema
|
|
|
|
O arquivo de saída mantém todos os campos, metadados e ordem originais, adicionando obrigatoriamente `selected_extractor`.
|
|
|
|
```json
|
|
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"required": ["articles"],
|
|
"properties": {
|
|
"articles": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["selected_extractor"],
|
|
"properties": {
|
|
"selected_extractor": {
|
|
"type": "string",
|
|
"enum": ["trafilatura", "newspaper4k", "readability"]
|
|
},
|
|
"trafilatura": { "type": "object" },
|
|
"newspaper4k": { "type": "object" },
|
|
"readability": { "type": "object" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|