feat: implement AI-powered news digest engine, MkDocs UX overhaul, pipeline hardening, and stub page merges

- Add 26-category news digest engine (src/news_digest.py) with Gemini AI ranking
  for 3/6/12 month temporal panels across tech, cloud, and geo categories
- Add discovered_at, company, geo_region fields to inventory schema with backfill
  script populating 18K+ existing entries
- Fix critical v2-mkdocs.yml bug: plugins were nested under theme (silently disabled)
- Add MkDocs Material features: instant nav, breadcrumbs, footer, announce bar
- Add trending cards CSS grid and replace Agentic Pulse with dynamic Trending Now
- Generate tech-digest.md and industry-digest.md with tabbed 3/6/12 month views
- Merge 12 stub pages (<40 lines each) into parent categories with redirects
- Replace 50 bare except:pass patterns with contextual logging across all pipeline files
- Expand autonomous discovery from 6 to 14 GitHub search queries
- Add stale health re-check for online entries older than 30 days
- Track addition_method by source type (rss, twitter, github_trending)
- Add digest generation step to CI publish workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Nubenetes Bot
2026-06-19 00:38:56 +02:00
co-authored by Claude Sonnet 4.6
parent 138b63c69f
commit 4e87c248fd
23 changed files with 299249 additions and 167979 deletions
+6 -3
View File
@@ -21,14 +21,16 @@ class RepositoryController:
try:
file_meta = self.repository.get_contents(file_path, ref=branch_name)
return base64.b64decode(file_meta.content).decode("utf-8")
except:
except Exception as e:
print(f"[WARN] Failed to get file '{file_path}' from branch '{branch_name}': {str(e)[:100]}")
return ""
def apply_historical_chunk(self, updates: dict, next_since: str) -> None:
branch_name = "bot/historical-accumulator"
try:
self.repository.get_branch(branch_name)
except:
except Exception as e:
print(f"[WARN] Branch '{branch_name}' not found, creating: {str(e)[:100]}")
self._create_feature_branch(branch_name)
for file_path, content in updates.items():
@@ -54,7 +56,8 @@ class RepositoryController:
try:
self._create_feature_branch(branch_name)
except:
except Exception as e:
print(f"[WARN] Branch creation failed, retrying with unique suffix: {str(e)[:100]}")
branch_name = f"bot/knowledge-update-{timestamp_slug}-{id(updates)}"
self._create_feature_branch(branch_name)