Files
TextNLPClassifierApp/graphify-out/cache/ast/v0.9.47-s2/49c1f46b23289bcbc8f361b181e8f0f6180ed04378644d6794fdd0747925b39d.json
andreferraro 6a45368cb0 feat(extractor): implement multi-engine article content extractor
- Added scripts/extract_article_contents.py for batch scraping with stealth Foxcape and triple extraction (Trafilatura, Newspaper4k, Readability)
- Created unit, integration, and E2E test suite in tests/test_extract_article_contents.py (90/90 passing)
- Updated specs/003-article-content-extractor and README.md with usage documentation and CLI contracts
- Passed ruff linting/formatting and mypy type checking cleanly
2026-08-20 19:22:20 -03:00

1 line
9.4 KiB
JSON

{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_spec_md", "label": "spec.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "label": "Feature Specification: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "label": "Clarifications", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L10"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_session_2026_08_20", "label": "Session 2026-08-20", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L12"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L19"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "label": "User Story 1 - Extra\u00e7\u00e3o Completa e Consolidada de Artigos em Lote (Priority: P1) \ud83c\udf1f MVP", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L21"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "label": "User Story 2 - Resili\u00eancia e Isolamento de Falhas por Artigo e Motor (Priority: P2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L35"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_3_controle_de_execu\u00e7\u00e3o_via_linha_de_comando_e_feedback_visual_priority_p3", "label": "User Story 3 - Controle de Execu\u00e7\u00e3o via Linha de Comando e Feedback Visual (Priority: P3)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L49"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_edge_cases", "label": "Edge Cases", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L63"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "label": "Requirements *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L72"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_functional_requirements", "label": "Functional Requirements", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L74"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_key_entities", "label": "Key Entities", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L89"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L97"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_measurable_outcomes", "label": "Measurable Outcomes", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L99"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_assumptions", "label": "Assumptions", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L109"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_spec_md", "target": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "target": "$graphify-root$_specs_003_article_content_extractor_spec_session_2026_08_20", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_3_controle_de_execu\u00e7\u00e3o_via_linha_de_comando_e_feedback_visual_priority_p3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_edge_cases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_functional_requirements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_key_entities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_measurable_outcomes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_assumptions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L109", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}