Some checks are pending
CI / validate (push) Waiting to run
Skill /seepuls-curate-events: - Rewrite vom Stub auf voll funktional. Nutzt WebFetch's AI-Extraction als Ersatz für mana-research+mana-llm (die nicht laufen). 5-Stufen-Pipeline mit Reviewer-Stops, Hash-Dedupe, Crawl-Audit, robots-Check, direct-SQL-Insert auf prod. - AGGREGATOR_POLICY-konform: User-Agent mit Kontakt-Mail, Datum- Strict-Parsing (kein free-form), description ≤ 220 Zeichen, Bilder Hot-Link. Erster Skill-Run (Demo): 4 Events live in prod. - Zebra Kino: CALLE MÁLAGA (17.05), DAS VERSPRECHEN (02.06) - Apollo Kulturhaus: Hanna Fearns (27.05), EULE & LERCHE (30.05) Crawl-Audit (1 Zeile crawl_jobs) mit robots_check_passed=true, respected_robots_delay=true, status=ok, new=4, updated=0. Findings im ersten Run (für Skill-Verbesserung): - K9 (k9-kulturzentrum.de): JS-heavy, WebFetch error null. - Theater Konstanz: dynamisches Programm, leeres JSON. - Kantine (kantine-kn.de): nur Headline "JUST ONE MORE TRACK", Events auf JS-Subseite. - CineStar: Multiplex, Showtimes via JS. - Apollo Listing-Page hat Events ohne Datum — Detail-Pages liefern dann Datum + Zeit. Multi-Step-Crawl-Pattern. API-Fix: - /api/v1/events response.venue jetzt mit category-Feld. DB-Fix: - events_dedupe_uq, events_slug_uq, events_venue_idx, events_starts_at_idx auf prod nachgezogen (db:push hatte die nicht von der ersten Migration angelegt). Lokal vorhanden, idempotente CREATE INDEX IF NOT EXISTS. Audit-Trail: ~/Documents/seepuls-drafts/zebra-kino-konstanz-events-2026-05-15/ (nicht-Repo, lokal). Enthält plan.md, research/raw.json, design/events.jsonl, publish/insert.sql. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
297 lines
7 KiB
JSON
297 lines
7 KiB
JSON
{
|
||
"date": "2026-05-15",
|
||
"day_number": 1,
|
||
"weekday": "Freitag",
|
||
"commits": 23,
|
||
"authors": [
|
||
{
|
||
"name": "Till JS",
|
||
"count": 23
|
||
}
|
||
],
|
||
"additions": 13600,
|
||
"deletions": 812,
|
||
"net_lines": 12788,
|
||
"files_changed": 120,
|
||
"new_files": 0,
|
||
"deleted_files": 0,
|
||
"session": {
|
||
"first_commit_at": "2026-05-15T12:14:15.000Z",
|
||
"last_commit_at": "2026-05-15T16:16:57.000Z",
|
||
"total_span_minutes": 243,
|
||
"active_minutes": 184,
|
||
"pauses": [
|
||
{
|
||
"from": "14:56",
|
||
"to": "15:55",
|
||
"minutes": 59
|
||
}
|
||
],
|
||
"longest_focus_minutes": 142
|
||
},
|
||
"top_dirs": [
|
||
{
|
||
"path": "apps/api/src/data",
|
||
"pct": 36
|
||
},
|
||
{
|
||
"path": "apps/web/src/pages",
|
||
"pct": 10
|
||
},
|
||
{
|
||
"path": "apps/api/src/db",
|
||
"pct": 7
|
||
},
|
||
{
|
||
"path": "apps/api/src/routes",
|
||
"pct": 6
|
||
},
|
||
{
|
||
"path": "apps/api/src/services",
|
||
"pct": 6
|
||
}
|
||
],
|
||
"top_extensions": [
|
||
{
|
||
"ext": ".yml",
|
||
"count": 73
|
||
},
|
||
{
|
||
"ext": ".ts",
|
||
"count": 59
|
||
},
|
||
{
|
||
"ext": ".astro",
|
||
"count": 27
|
||
},
|
||
{
|
||
"ext": ".md",
|
||
"count": 14
|
||
},
|
||
{
|
||
"ext": ".json",
|
||
"count": 10
|
||
},
|
||
{
|
||
"ext": ".yaml",
|
||
"count": 4
|
||
}
|
||
],
|
||
"tags": [
|
||
"status"
|
||
],
|
||
"commits_list": [
|
||
{
|
||
"hash": "32f0295",
|
||
"short": "seepuls α-0: Repo-Skelett + Aggregator-Schema",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 3466,
|
||
"deletions": 0,
|
||
"timestamp": "2026-05-15T14:14:15+02:00"
|
||
},
|
||
{
|
||
"hash": "ff909d6",
|
||
"short": "docs(status): α-0 als validiert markieren (install + db-push + smoke grün)",
|
||
"type": "docs",
|
||
"scope": "status",
|
||
"additions": 56,
|
||
"deletions": 41,
|
||
"timestamp": "2026-05-15T14:15:47+02:00"
|
||
},
|
||
{
|
||
"hash": "2b148ab",
|
||
"short": "α-1a: robots.txt-Parser + Politeness-Hardening",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 317,
|
||
"deletions": 15,
|
||
"timestamp": "2026-05-15T14:29:37+02:00"
|
||
},
|
||
{
|
||
"hash": "43a7e04",
|
||
"short": "α-1b: Venue-from-URL-Flow + JWT-Auth + Service-Clients",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 486,
|
||
"deletions": 5,
|
||
"timestamp": "2026-05-15T14:32:56+02:00"
|
||
},
|
||
{
|
||
"hash": "12a52d3",
|
||
"short": "α-1: Country-Normalisierung-Tests + STATUS-Update",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 138,
|
||
"deletions": 51,
|
||
"timestamp": "2026-05-15T14:35:01+02:00"
|
||
},
|
||
{
|
||
"hash": "f8bf1bf",
|
||
"short": "α-2: Event-Source-Add + Probe-Crawl + manueller Run",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 623,
|
||
"deletions": 0,
|
||
"timestamp": "2026-05-15T14:50:45+02:00"
|
||
},
|
||
{
|
||
"hash": "e7273bd",
|
||
"short": "α-3: Re-Crawl-Scheduler + DRY-Extraktion",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 342,
|
||
"deletions": 128,
|
||
"timestamp": "2026-05-15T14:52:59+02:00"
|
||
},
|
||
{
|
||
"hash": "85e602e",
|
||
"short": "α-3.5: Seed-Daten + Public Read-API",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 303,
|
||
"deletions": 1,
|
||
"timestamp": "2026-05-15T14:55:14+02:00"
|
||
},
|
||
{
|
||
"hash": "5c08c40",
|
||
"short": "docs(status): α-0/1/2/3/3.5 zusammengefasst, API-Oberfläche dokumentiert",
|
||
"type": "docs",
|
||
"scope": "status",
|
||
"additions": 71,
|
||
"deletions": 75,
|
||
"timestamp": "2026-05-15T14:56:04+02:00"
|
||
},
|
||
{
|
||
"hash": "1dee1c8",
|
||
"short": "α-4: Astro-Web (apps/web/) live-tauglich",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 4478,
|
||
"deletions": 148,
|
||
"timestamp": "2026-05-15T15:55:12+02:00"
|
||
},
|
||
{
|
||
"hash": "2b4ec96",
|
||
"short": "docs(status): α-4 Astro-Web live-getestet markieren",
|
||
"type": "docs",
|
||
"scope": "status",
|
||
"additions": 4,
|
||
"deletions": 1,
|
||
"timestamp": "2026-05-15T15:55:59+02:00"
|
||
},
|
||
{
|
||
"hash": "1106d72",
|
||
"short": "α-4.5: SEO + per-Venue-API + Policy + Region-Pages",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 378,
|
||
"deletions": 5,
|
||
"timestamp": "2026-05-15T16:04:37+02:00"
|
||
},
|
||
{
|
||
"hash": "273594b",
|
||
"short": "docs(status): Forgejo-Repo + DNS/Tunnel als bereitet markieren",
|
||
"type": "docs",
|
||
"scope": "status",
|
||
"additions": 10,
|
||
"deletions": 6,
|
||
"timestamp": "2026-05-15T16:17:58+02:00"
|
||
},
|
||
{
|
||
"hash": "aa32db1",
|
||
"short": "α-5a: Production-Deploy-Files (compose + Dockerfiles)",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 196,
|
||
"deletions": 15,
|
||
"timestamp": "2026-05-15T16:21:16+02:00"
|
||
},
|
||
{
|
||
"hash": "9fb0323",
|
||
"short": "α-5 ✅: seepuls LIVE auf seepuls.mana.how + seepuls-api.mana.how",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 13,
|
||
"deletions": 8,
|
||
"timestamp": "2026-05-15T16:35:44+02:00"
|
||
},
|
||
{
|
||
"hash": "9d48815",
|
||
"short": "α-5b: Code-Cleanup + auth.apps-Registrierung",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 21,
|
||
"deletions": 15,
|
||
"timestamp": "2026-05-15T16:47:46+02:00"
|
||
},
|
||
{
|
||
"hash": "6125df9",
|
||
"short": "α-6: Curator-Pipeline für Venues (YAML-as-SOT)",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 1149,
|
||
"deletions": 11,
|
||
"timestamp": "2026-05-15T17:07:17+02:00"
|
||
},
|
||
{
|
||
"hash": "b262f55",
|
||
"short": "content: +3 Kreuzlinger Venues (Kult-X, Apollo Kulturhaus, Kunstraum)",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 71,
|
||
"deletions": 0,
|
||
"timestamp": "2026-05-15T17:13:59+02:00"
|
||
},
|
||
{
|
||
"hash": "4b93c02",
|
||
"short": "content: +5 Konstanz/Kreuzlingen Bars (Blue, NewFax, 107, Einstein, Destille)",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 118,
|
||
"deletions": 1,
|
||
"timestamp": "2026-05-15T17:20:17+02:00"
|
||
},
|
||
{
|
||
"hash": "845ff08",
|
||
"short": "content: +4 Konstanzer Clubs (Kantine, Grey, Poly Areal, Steg 4)",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 95,
|
||
"deletions": 0,
|
||
"timestamp": "2026-05-15T17:24:12+02:00"
|
||
},
|
||
{
|
||
"hash": "d247883",
|
||
"short": "content: +5 Konstanzer Kulturorte (KULA, K9, Contrast, Zebra Kino, Kula Bar)",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 121,
|
||
"deletions": 0,
|
||
"timestamp": "2026-05-15T17:35:44+02:00"
|
||
},
|
||
{
|
||
"hash": "eb96652",
|
||
"short": "content: +13 Venues — Theater, Kinos, Museen, Bars (Tier 1+2+3)",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 290,
|
||
"deletions": 0,
|
||
"timestamp": "2026-05-15T17:59:07+02:00"
|
||
},
|
||
{
|
||
"hash": "93d5e7f",
|
||
"short": "ui: dark theme (Memoro-Style) + Kategorien + Land-Text",
|
||
"type": null,
|
||
"scope": null,
|
||
"additions": 854,
|
||
"deletions": 286,
|
||
"timestamp": "2026-05-15T18:16:57+02:00"
|
||
}
|
||
],
|
||
"review_state": "auto",
|
||
"llm": {
|
||
"model": null,
|
||
"generated_at": null
|
||
}
|
||
}
|