{"queue_id": 36, "relative_path": "Solutions/SMA_PILOT_MONITORING.md", "title": "SMA_PILOT_MONITORING", "import_key": "71fbbb943c2c955de27e7542e5364e39d7b4519a5c38bf5e80bd346dc289622b", "chunk_count": 14, "created_nodes": 15, "created_relationships": 27, "body": null, "chunks": [{"chunk_key": "6e79997f7965f9dbf1f388c5c727a6379a5860a200e7968dd2e80bed1539d140", "chunk_index": 0, "heading": "SMA_PILOT_MONITORING", "text": "# SMA_PILOT_MONITORING\nPilot Monitoring System — Referenzdokument\nDatum: 2026-05-28\n\n---", "text_hash": "72704fd2ca925a015c7b9852b4e7907ea8b9913a4b60234da92788d3fe66ccfe"}, {"chunk_key": "d53417997bfed2d8787540144fdab60291ec0e4015f5083a5f1e6c05978d1e7b", "chunk_index": 1, "heading": "Uebersicht", "text": "# SMA_PILOT_MONITORING\nPilot Monitoring System — Referenzdokument\nDatum: 2026-05-28\n\n---\n## Uebersicht\n\nDas Pilot Monitoring System erfasst automatisch alle relevanten Kennzahlen\ndes SMA-Betriebs. Kein manuelles Tracking noetig ausser Plattform-Metriken\nnach dem echten Posten.\n\n---", "text_hash": "87fc20e128e592689040bf55e91c5bc76f9d1ec59d098adbb39e2f4a3260b921"}, {"chunk_key": "1f59647b3a5cef75557783fa0f48485d55ccce984fa6b62206bf48121ade3c2c", "chunk_index": 2, "heading": "Dashboards", "text": "erfasst automatisch alle relevanten Kennzahlen\ndes SMA-Betriebs. Kein manuelles Tracking noetig ausser Plattform-Metriken\nnach dem echten Posten.\n\n---\n## Dashboards\n\n| URL | Zweck |\n|-----|-------|\n| https://sma.agentsolutions-mallorca.com/monitoring | Live KPI-Dashboard |\n| https://sma.agentsolutions-mallorca.com/cockpit | Operator-Cockpit |\n\n---", "text_hash": "fdc5d09fec18111c40386ee05ad5cd9a233890690312ed4c8c4439b9bb0b68c3"}, {"chunk_key": "aa487b656d69138451a98c0ba2f48b9096d90d07a4462ab7b010bd1e88d010c4", "chunk_index": 3, "heading": "Daten-Architektur", "text": " https://sma.agentsolutions-mallorca.com/monitoring | Live KPI-Dashboard |\n| https://sma.agentsolutions-mallorca.com/cockpit | Operator-Cockpit |\n\n---\n## Daten-Architektur", "text_hash": "3910fc708d0e170c8cf4f81b0c07e0376cf000e6e66f5692bfdd791f390e5f54"}, {"chunk_key": "0bca067f3c11eec4934d772bea97fee6999aef500e146c743e685ceedcdeda53", "chunk_index": 4, "heading": "Tabellen (signals.db)", "text": "## Daten-Architektur\n### Tabellen (signals.db)\n\n**operator_events**\nAutomatisch befuellt durch Cockpit-JS bei jedem Operator-Event.\n```\nid, ts, event_type, signal_id, session_id, extra\n```\n\nEvent-Typen:\n- `pkg_started` — Operator oeffnet Package-Modal\n- `pkg_completed` — Paket erfolgreich generiert (mit Score + Freigabe)\n- `signal_verworfen` — Operator verwirft Signal\n- `freigabe_clicked` — Operator klickt \"Bereit zum Posten\"\n- (zukuenftig: `pkg_aborted` wenn Modal ohne Paket geschlossen)\n\n**platform_metrics**\nManuell befuellt via /monitoring Dashboard.\n```\nid, signal_id, platform, posted_date, reach, likes, comments,\nreactions, clicks, shares, notes, created_at, updated_at\n```\n\nUpsert-Logik: ein Eintrag pro Signal+Platform. Mehrfach-Eintrag = Update.\n\n**signals.publish_status** (bestehend)\n```\nneu → geprueft → paket_generiert → bereit_zum_posten → gepostet / verworfen\n```\n\n**posting_log** (bestehend)\nBefuellt durch doMarkPosted(), enthaelt caption_used + operator_note.\n\n---", "text_hash": "58bea078097057ac82c829a724fa6b539b9e80e869f20d32f77a492e2433b11d"}, {"chunk_key": "f908a43714f30a41a55506321868faf2c25afafdd6bce369866fc2fd22c6e9ac", "chunk_index": 5, "heading": "Monitoring-Endpunkte", "text": "→ bereit_zum_posten → gepostet / verworfen\n```\n\n**posting_log** (bestehend)\nBefuellt durch doMarkPosted(), enthaelt caption_used + operator_note.\n\n---\n## Monitoring-Endpunkte", "text_hash": "128d97e05177cf3e68808c37e71cdd7fd8a38719740f7fdb5a09b660f8c08248"}, {"chunk_key": "edc983bb53244ff0b0a6e4c0b62dc9e1cf45273bc87f0b9811c072bb14c0a09e", "chunk_index": 6, "heading": "GET /api/monitoring/stats?days=N", "text": "## Monitoring-Endpunkte\n### GET /api/monitoring/stats?days=N\nLiefert JSON mit 4 Metrik-Bloecken:\n```json\n{\n \"days\": 14,\n \"posting_metriken\": {\n \"pakete\": 0,\n \"freigegeben\": 4,\n \"gepostet\": 2,\n \"verworfen\": 9,\n \"avg_bearbeitungszeit_h\": null,\n \"kategorien_gepostet\": [...]\n },\n \"operator_metriken\": {\n \"events\": {\"pkg_started\": 5, ...},\n \"pkg_abbruchrate\": 1,\n \"verworfene_kategorien\": [...],\n \"blockierungsgruende\": [...]\n },\n \"qualitaets_metriken\": {\n \"postings_gesamt\": 3,\n \"beste_captions\": [...],\n \"schlechteste_captions\": [...],\n \"mit_operator_note\": [...]\n },\n \"plattform_metriken\": [...]\n}\n```", "text_hash": "f79777164d19f9a1819dc367948ecaeddf449015be859962a170006b57fbc1db"}, {"chunk_key": "92dabaded3d7834e4d53caea9d6e2413f5a3571aa7f3e95fb219c32b1a803601", "chunk_index": 7, "heading": "POST /api/monitoring/event", "text": "s_gesamt\": 3,\n \"beste_captions\": [...],\n \"schlechteste_captions\": [...],\n \"mit_operator_note\": [...]\n },\n \"plattform_metriken\": [...]\n}\n```\n### POST /api/monitoring/event\nInterner Endpunkt. Wird automatisch vom Cockpit-JS aufgerufen.\nBody: `{event_type, signal_id, session_id, extra}`", "text_hash": "f6f93390730eeffba9e30546a502a3adf805852dc59f94e1b5d64a40b655aa6d"}, {"chunk_key": "b741e2e1a0e55ac36f907d0c6376a6b1801ce9c1ecb4125452323ceb0c61fae8", "chunk_index": 8, "heading": "POST /api/platform-metrics/<signal_id>", "text": "### POST /api/monitoring/event\nInterner Endpunkt. Wird automatisch vom Cockpit-JS aufgerufen.\nBody: `{event_type, signal_id, session_id, extra}`\n### POST /api/platform-metrics/<signal_id>\nManuelle Plattform-Metriken speichern.\nBody: `{platform, posted_date, reach, likes, comments, reactions, clicks, shares, notes}`", "text_hash": "445eed14acb47c23bd80761f8da07143928c1a82ef1cc62e647380d87cad5f34"}, {"chunk_key": "6590e04720470109e764e0f1d231eae6673c94cf2c9a70b3632483edd166000b", "chunk_index": 9, "heading": "GET /api/platform-metrics/<signal_id>", "text": "m-metrics/<signal_id>\nManuelle Plattform-Metriken speichern.\nBody: `{platform, posted_date, reach, likes, comments, reactions, clicks, shares, notes}`\n### GET /api/platform-metrics/<signal_id>\nGespeicherte Metriken fuer ein Signal abrufen.\n\n---", "text_hash": "76cf4c537c99adb26bcda82a7f3908ea3655e8598005d34c4b1bd329bd41cd1b"}, {"chunk_key": "cd8a2c80e8e861bbf0ccc211bc135c219b3fe027e1ec362400e2d3889ec89ca1", "chunk_index": 10, "heading": "Taeglicher KPI-Report", "text": "### GET /api/platform-metrics/<signal_id>\nGespeicherte Metriken fuer ein Signal abrufen.\n\n---\n## Taeglicher KPI-Report\n\nSkript auf VPS: `/opt/struktur/social-media-agent/sma_daily_kpi.py`\n\nAusfuehren:\n```bash\npython3 /opt/struktur/social-media-agent/sma_daily_kpi.py --days 1\npython3 /opt/struktur/social-media-agent/sma_daily_kpi.py --days 7\n```\n\nCron (taeglich 07:00 UTC):\n```\n0 7 * * * python3 /opt/struktur/social-media-agent/sma_daily_kpi.py >> /var/log/sma_kpi.log 2>&1\n```\n\nLog-Datei aktivieren:\n```bash\ntouch /var/log/sma_kpi.log\n```\n\n---", "text_hash": "7f422245df08aa41b65044bfedea714a89c7772558ce623491b195fb158d29fa"}, {"chunk_key": "3c9e487b0f727e6cfed45c06e83caaa825eab1764b2096fb92cf7c666343c58a", "chunk_index": 11, "heading": "Was wird NICHT automatisch erfasst", "text": " /opt/struktur/social-media-agent/sma_daily_kpi.py >> /var/log/sma_kpi.log 2>&1\n```\n\nLog-Datei aktivieren:\n```bash\ntouch /var/log/sma_kpi.log\n```\n\n---\n## Was wird NICHT automatisch erfasst\n\n| Metrik | Erfassung | Weg |\n|--------|-----------|-----|\n| Reichweite Facebook | Manuell | /monitoring Formular |\n| Likes / Reaktionen | Manuell | /monitoring Formular |\n| Kommentare | Manuell | /monitoring Formular |\n| Klicks auf Links | Manuell | /monitoring Formular |\n| Caption-Korrekturen | Nicht erfasst | Operator-Notiz in posting_log nutzen |\n| Visual-Probleme | Nicht erfasst | SMA_PILOT_ISSUES.md nutzen |\n\n---", "text_hash": "47738418734b5ad078ca89ae79678a9d0be507677a512fbc306fc1897cba9433"}, {"chunk_key": "b39c66b9adcfab68bdb4d50c11fc99eaf6e5e82a45816dc90086d630e43f2913", "chunk_index": 12, "heading": "Qualitaetsbewertung von Captions", "text": "|\n| Caption-Korrekturen | Nicht erfasst | Operator-Notiz in posting_log nutzen |\n| Visual-Probleme | Nicht erfasst | SMA_PILOT_ISSUES.md nutzen |\n\n---\n## Qualitaetsbewertung von Captions\n\nDa keine KI-Bewertung eingebaut ist, gilt:\n- **Score-Proxy:** radar_score des Signals ist die naechste Annaeherung\n- **Operator-Notizen:** beim Posten via doMarkPosted() kann eine Notiz eingegeben werden\n- **Muster erkennen:** posting_log.caption_used zeigt alle verwendeten Captions\n\nEmpfehlung fuer den Operator: Nach echtem Posten die Notiz nutzen:\n- \"gut\" / \"sehr gut\" — Caption wurde ohne Aenderung verwendet\n- \"geaendert\" — Caption wurde manuell angepasst\n- \"problem: ...\" — spezifisches Problem dokumentieren\n\n---", "text_hash": "3eccb81839c7f47f51e2cf260669b6f9541eb54c192299393b53bba2a11d2efb"}, {"chunk_key": "e672134523582890037cf818c107d8864646358422b61fd17e2ffe80048bc03a", "chunk_index": 13, "heading": "Bekannte Limitierungen", "text": "t\" — Caption wurde ohne Aenderung verwendet\n- \"geaendert\" — Caption wurde manuell angepasst\n- \"problem: ...\" — spezifisches Problem dokumentieren\n\n---\n## Bekannte Limitierungen\n\n1. `avg_bearbeitungszeit_h` misst Signalreife bis Freigabe, nicht reine Operator-Zeit\n2. `pkg_abbruchrate` = Signale mit pkg_started aber OHNE pkg_completed — kann auch normale\n Session-Unterbrechungen enthalten\n3. Plattform-Metriken muessen manuell eingetragen werden (kein Facebook/Meta API)\n4. Caption-Qualitaet ist subjektiv — kein automatischer Score\n\n---\n\n*Erstellt: 2026-05-28*\n*Status: AKTIV — Pilot-Phase*", "text_hash": "07f6737f6d2f671e8478ca9990a232f5ef27757f02e2a371288ca0fbdde92c40"}], "elapsed_s": 0.053}