diff --git a/.github/workflows/01.1.agentic_cron.yml b/.github/workflows/01.1.agentic_cron.yml index 5a9af98d..98e659c8 100644 --- a/.github/workflows/01.1.agentic_cron.yml +++ b/.github/workflows/01.1.agentic_cron.yml @@ -178,6 +178,21 @@ jobs: gh workflow run 01.1.agentic_cron.yml -f historical_mode=true -f historical_chunked=true -f historical_until_date=$NEXT_DATE fi + - name: Run Deduplication Scan + if: success() + env: + PYTHONPATH: . + run: | + python -u -c "import asyncio; from src.dedup import run_dedup; asyncio.run(run_dedup(dry_run=False))" || echo "Dedup scan skipped" + + - name: Run Enrichment Pipeline + if: success() + env: + PYTHONPATH: . + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + python -u -m src.enrichment || echo "Enrichment pipeline skipped" + - name: Upload Visual Dashboard Artifact if: always() uses: actions/upload-artifact@v7 diff --git a/src/agentic_curator.py b/src/agentic_curator.py index ddcd5561..031c8a5c 100644 --- a/src/agentic_curator.py +++ b/src/agentic_curator.py @@ -143,7 +143,10 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]: "- Assign tags. You MUST include:\n" " 1. 1 to 2 maturity tags from: [DE FACTO STANDARD], [ENTERPRISE-STABLE], [EMERGING], [GUIDE], [CASE STUDY], [COMMUNITY-TOOL], [LEGACY].\n" " 2. Fine-grained technical/architectural tags from the content (e.g., [EBPF], [WASM], [GITOPS], [IAC], [SERVICE-MESH], [SERVERLESS], [MLOPS], [DB]). Keep them uppercase and wrapped in brackets.\n" - "Respond ONLY JSON list: [{\"url\": \"...\", \"impact_score\": int, \"reputation_penalty\": bool, \"reputation_summary\": \"...\", \"pub_date\": \"YYYY-MM-DD\", \"primary_category\": \"...\", \"suggested_new_category\": \"...\", \"title\": \"...\", \"desc\": \"...\", \"en_summary\": \"High-density summary...\", \"language\": \"...\", \"type\": \"...\", \"level\": \"...\", \"technical_hierarchy\": [...], \"tags\": [...], \"is_microservice\": bool}, ...]\n\n" + "PHASE 5: COMPANY & GEO CLASSIFICATION\n" + "- Identify 'company': The company/organization that authored or is the primary subject (e.g., 'Google', 'Netflix', 'CNCF', 'Independent').\n" + "- Identify 'geo_region': The HQ region of that company. Use one of: 'americas', 'europe', 'spain', 'asia_pacific', 'global'.\n" + "Respond ONLY JSON list: [{\"url\": \"...\", \"impact_score\": int, \"reputation_penalty\": bool, \"reputation_summary\": \"...\", \"pub_date\": \"YYYY-MM-DD\", \"primary_category\": \"...\", \"suggested_new_category\": \"...\", \"title\": \"...\", \"desc\": \"...\", \"en_summary\": \"High-density summary...\", \"language\": \"...\", \"type\": \"...\", \"level\": \"...\", \"technical_hierarchy\": [...], \"tags\": [...], \"is_microservice\": bool, \"company\": \"...\", \"geo_region\": \"...\"}, ...]\n\n" "RESOURCES:\n" + "\n".join([f"- {d['asset']['url']}: (MVQ Penalty: {d['mvq_penalty']}) {d['content']}" for d in batch_data]) ) @@ -208,6 +211,7 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]: "reputation_status": "Vetted" if not data.get("reputation_penalty") else "Suspicious", "reputation_summary": data.get("reputation_summary", ""), "source_provenance": d["asset"].get("source_type", "Social"), "social_preview_url": d["rich_meta"].get("og_image", ""), + "company": data.get("company", ""), "geo_region": data.get("geo_region", ""), "category": primary_cat, "status": "online", "last_checked": datetime.now().timestamp(), "discovered_at": datetime.now(MADRID_TZ).isoformat(), "last_ai_eval": datetime.now(MADRID_TZ).isoformat(), diff --git a/src/v2_optimizer.py b/src/v2_optimizer.py index 1017100d..d7c75ccc 100644 --- a/src/v2_optimizer.py +++ b/src/v2_optimizer.py @@ -1463,10 +1463,13 @@ class V2VisionEngine: try: with open("v2-mkdocs.yml", "r") as f: content = f.read() nav = [ - "nav:", - " - \"🔙 Back to V1 (Exhaustive)\": https://nubenetes.com/v1/", + "nav:", + " - \"🔙 Back to V1 (Exhaustive)\": https://nubenetes.com/v1/", " - \"The 2026 Vision\": index.md", " - \"Technical Tags\": tags.md", + " - \"Intelligence Digest\":", + " - \"Tech & Cloud Digest\": tech-digest.md", + " - \"Industry & Geo Digest\": industry-digest.md", " - \"Agentic Video Hub\":", " - videos/index.md", " - \"AI Agents and MCP\": videos/ai-agents.md",