from pathlib import Path
from datetime import date
import sqlite3, shutil, re
APP=Path('/opt/struktur/projects-dashboard/app.py')
VAULT=Path('/opt/obsidian-vault/Agent-Solutions/Kundenprojekte')
TODAY='2026-09-08'
projects={
'inventory-replenishment-agent':('Bestands- & Nachbestell-Agent','Bestands-Nachbestell-Agent.md','Lagerbestand, Verbrauch und Bedarf überwachen und rechtzeitig Nachbestellungen zur Freigabe vorbereiten.','Handwerk · Hotels · Gastronomie · Werkstätten · Gebäudetechnik · Einzelhandel','35–70 h','mittel · gute Standardisierung','8,8/10','hoch','Setup + 250–900 €/Monat'),
'rfq-offer-comparison-agent':('RFQ- & Angebotsvergleich-Agent','RFQ-Angebotsvergleich-Agent.md','Lieferantenanfragen vorbereiten, Angebote strukturiert vergleichen und eine nachvollziehbare Entscheidungsvorlage erzeugen.','Handwerk · Bau · Gebäudetechnik · Hotels · Gastronomie · produzierende KMU','30–60 h','mittel','8,7/10','mittel-hoch','Setup + 200–700 €/Monat'),
'spend-cost-analysis-agent':('Spend- & Kostenanalyse-Agent','Spend-Kostenanalyse-Agent.md','Einkaufs- und Rechnungsdaten auswerten, Preisabweichungen und Einsparpotenziale sichtbar machen.','KMU · Handwerk · Hotels · Gastronomie · Immobilienverwaltung · Filialbetriebe','25–50 h','schnell–mittel','8,7/10','mittel-hoch','Analyse + 150–600 €/Monat'),
'supplier-risk-monitoring-agent':('Lieferanten-Risiko-Agent','Lieferanten-Risiko-Agent.md','Lieferanten kontinuierlich auf Ausfall-, Preis-, Leistungs- und externe Risikosignale überwachen.','Produktion · Bau · Gebäudetechnik · Hotels · Handel · importabhängige KMU','40–80 h','mittel','8,7/10','hoch','Setup + 300–1.000 €/Monat'),
}
common_sources='''## Quellen & Marktvalidierung\nStand: 08.09.2026. YouTube dient als Trendsignal; die Potenzialbewertung wird durch unabhängige externe Quellen validiert.\n- BCG (21.07.2026): Agentic AI in Procurement mit Vendor Discovery, RFP Generation, Contract Analysis, Spend Analysis, Risk Monitoring und Supplier Performance Management.\n- McKinsey (05.02.2026): Procurement entwickelt sich mit Agentic AI von Transaktionsarbeit zu strategischer Wertschöpfung, Resilienz und schnellerer Reaktion.\n- Deloitte/Ivalua (06.08.2026): AI-basierte Source-to-Pay-Transformation soll Effizienz, Supplier Management und Resilienz verbessern.\n\nQuellen:\n- https://www.bcg.com/publications/2026/scaling-agentic-ai-in-tech-procurement\n- https://www.mckinsey.com/capabilities/operations/our-insights/redefining-procurement-performance-in-the-era-of-agentic-ai\n- https://www.deloitte.com/us/en/about/press-room/deloitte-and-ivalua-form-alliance.html\n'''
specific={
'inventory-replenishment-agent':'''- Oracle (29.06.2026) führt neue agentische SCM-Anwendungen und Inventory-Optimization-Funktionen ein.\n- Microsoft beschreibt einen Inventory Replenishment Planning Agent mit Forecasting, Bestandsoptimierung und freizugebenden Nachbestellorders.\n- IBM nennt automatisierte Nachbestellung, Forecasting und Supplier Management als Kernanwendungen von AI Inventory Management.\n\nZusatzquellen:\n- https://www.oracle.com/uk/news/announcement/oracle-adds-new-fusion-agentic-applications-to-help-customers-improve-supply-chain-performance-2026-06-29/\n- https://adoption.microsoft.com/en-us/scenario-library/retail/inventory-replenishment-planning-agent/\n- https://www.ibm.com/think/topics/ai-inventory-management\n''',
'rfq-offer-comparison-agent':'''- Der aktuelle YouTube-Bestand enthält einen direkten Beschaffungs-/Sourcing-Treffer vom 28.07.2026: „Ich ließ KI mein nächstes Produkt auf Alibaba.com sourcen – das ist passiert“.\n- BCG nennt Vendor Discovery und RFP Generation ausdrücklich als untersuchte Agentic-AI-Use-Cases.\n- Gartner beschreibt 2026 autonome Sourcing- und Procurement-Intake-Anwendungen als Teil künftiger Procurement-AI-Ökosysteme.\n\nZusatzquelle:\n- https://www.gartner.com/en/documents/7648561\n''',
'spend-cost-analysis-agent':'''- BCG untersucht Spend Analysis ausdrücklich als Agentic-AI-Use-Case und berichtet, dass interne operative Vorteile häufig zuerst sichtbar werden.\n- SAP beschreibt 2026 AI-gestützte Spend-, Vertrags- und Supplier-Analysen als Mittel zur Kostensenkung und schnelleren Entscheidungsfindung.\n- Für diesen Kandidaten gibt es im aktuellen 90-Tage-YouTube-Bestand keinen ausreichend direkten Treffer; die Evidenz stammt daher überwiegend aus externen Quellen.\n\nZusatzquelle:\n- https://news.sap.com/2026/08/ai-dual-role-procurement-transformation/\n''',
'supplier-risk-monitoring-agent':'''- Gartner (06.07.2026) fordert CPOs auf, Supplier Risk auf dieselbe Prioritätsstufe wie Kosteneinsparungen zu heben.\n- Gartner Supplier Risk Management 2026 betont AI Analytics, Predictive Insights, Multitier Visibility und kontinuierliches Monitoring.\n- Für diesen Kandidaten gibt es im aktuellen 90-Tage-YouTube-Bestand keinen ausreichend direkten Treffer; externe Evidenz ist dafür sehr stark.\n\nZusatzquellen:\n- https://www.gartner.com/en/documents/8099597\n- https://www.gartner.com/en/documents/7803017\n'''
}
scores={
'inventory-replenishment-agent':('9,3','9,0','8,3','8,7','8,5','8,8/10','hoch'),
'rfq-offer-comparison-agent':('9,0','8,7','8,8','8,0','8,6','8,7/10','mittel-hoch'),
'spend-cost-analysis-agent':('8,9','8,8','9,0','7,8','8,8','8,7/10','mittel-hoch'),
'supplier-risk-monitoring-agent':('9,1','9,3','7,8','9,0','8,2','8,7/10','hoch'),
}
for pid,(name,fn,desc,segments,aufbau,umsetzung,pot,conf,rev) in projects.items():
md=f'''---\ntype: kundenprojekt\nproject_id: {pid}\ntitle: "{name}"\nstatus: plan\nsearch_direction: einkauf-bestand\nknowledge_source: canonical\nupdated: {TODAY}\n---\n\n# {name}\n\n## Projektbeschreibung\n{desc}\n\n## Zielkunde\nUnternehmen mit wiederkehrender Beschaffung, mehreren Lieferanten oder relevantem Lager-/Kostenrisiko.\n\n## Interessant für / Zielbranchen\n{segments}\n\n## Kundenproblem\nManuelle Einkaufs- und Bestandsarbeit bindet Zeit, verteilt Informationen über E-Mail, Tabellen und ERP und erschwert rechtzeitige Entscheidungen.\n\n## Anforderungsprofil\nStrukturierte Einkaufs-, Bestands- oder Lieferantendaten; definierte Freigaben; zunächst read-only bzw. Human-in-the-loop.\n\n## Technischer Aufbau\nDatenquellen → Normalisierung → Analyse/Agent → Regel-/Plausibilitätsprüfung → Entscheidungsvorlage → Human-Freigabe → optionale Folgeaktion.\n\n## Entwicklungsaufwand\nInterner Planwert: {aufbau}. Integrationsaufwand hängt stark von ERP, Tabellen, E-Mail und Datenqualität ab.\n\n## Laufender Aufwand\nMonitoring, Datenpflege, Regelanpassungen und Review auffälliger Fälle.\n\n## Vertragsmodelle\nAudit/Analyse als Einstieg, Setup-Projekt und laufender Managed-Service.\n\n## Ertragspotenzial\nInterner Planrahmen: {rev}. Keine extern verifizierten Marktpreise als Ist-Werte.\n\n## Mögliche Kundenzahl / Marktpotenzial\nBreiter Bedarf in beschaffungs- oder bestandsintensiven KMU; konkrete Segmentgröße wird später über reale Lead-/Vertriebsdaten nachgeschärft.\n\n## Kundengewinnung / Akquisewege\nEinstieg über Einkaufs-/Bestands-Audit und konkrete Zeit-, Kosten- oder Risikoverluste statt abstrakter KI-Beratung.\n\n## Risiken und Folgen\nDatenqualität, falsche Stammdaten, ERP-Schnittstellen und unkontrollierte Bestellaktionen sind Kernrisiken. Produktive Bestellungen bleiben zunächst hinter Human-Gates.\n\n## Cross-Selling-Möglichkeiten\nSOP→Agent, Prozessautomatisierung/HITL, Wissenssystem und später Lead Engine.\n\n## Aktueller Status\nNeuer Kandidat aus Suchrichtung „Einkauf & Bestand“ vom 08.09.2026. Noch kein eigenständiger Kundenpilot verifiziert.\n\n## Nächste Schritte\nSynthetisches Demo-Dataset und einen klar abgegrenzten read-only Pilotfall aufbauen; danach Aufwand und ROI mit realen Daten testen.\n\n## Vorhandene Demos / Referenzen / Agenten / Tools\nHermes-, n8n-, Obsidian-/Graphiti- und bestehende Human-Gate-Bausteine sind technische Vorarbeit; keine projektspezifische Kundenreferenz verifiziert.\n\n{common_sources}\n{specific[pid]}\n'''
a,b,c,d,e,total,confidence=scores[pid]
md+=f'''\n## Bewertungsmodell / Evidenzstärke\nGewichtung: Marktnachfrage 30 % · Evidenzstärke 20 % · Umsetzbarkeit 20 % · wiederkehrender Umsatz 15 % · technischer Vorsprung 15 %.\n- Marktnachfrage: {a}/10\n- Evidenzstärke: {b}/10\n- Umsetzbarkeit: {c}/10\n- wiederkehrender Umsatz: {d}/10\n- technischer Vorsprung Agent Solutions: {e}/10\n- Gesamtpotenzial: **{total}**\n- Konfidenz: **{confidence}**\n\nYouTube ist ein Trendsignal. Fehlende unabhängige Evidenz senkt Potenzial und Konfidenz, gilt aber nicht automatisch als Gegenbeweis.\n'''
(VAULT/fn).write_text(md,encoding='utf-8')
print('DOSSIER',fn)
text=APP.read_text(encoding='utf-8')
backup=APP.with_name('app.py.bak-einkauf-bestand-20260908')
if not backup.exists(): shutil.copy2(APP,backup)
insert="""
{
'id': 'inventory-replenishment-agent', 'name': 'Bestands- & Nachbestell-Agent', 'icon': '▣',
'desc': 'Bestand und Verbrauch überwachen und Nachbestellungen kontrolliert vorbereiten.',
'metrics': {'Aufbau': '35–70 h', 'Umsetzung': 'mittel · gute Standardisierung', 'Potenzial': '8,8/10', 'Konfidenz': 'hoch', 'Erlös': 'Setup + 250–900 €/Monat'}, 'fields': {}
},
{
'id': 'supplier-risk-monitoring-agent', 'name': 'Lieferanten-Risiko-Agent', 'icon': '⚠',
'desc': 'Lieferanten auf Ausfall-, Preis-, Leistungs- und externe Risikosignale überwachen.',
'metrics': {'Aufbau': '40–80 h', 'Umsetzung': 'mittel', 'Potenzial': '8,7/10', 'Konfidenz': 'hoch', 'Erlös': 'Setup + 300–1.000 €/Monat'}, 'fields': {}
},
{
'id': 'spend-cost-analysis-agent', 'name': 'Spend- & Kostenanalyse-Agent', 'icon': 'Σ',
'desc': 'Einkaufsdaten analysieren und Preisabweichungen sowie Einsparpotenziale sichtbar machen.',
'metrics': {'Aufbau': '25–50 h', 'Umsetzung': 'schnell–mittel', 'Potenzial': '8,7/10', 'Konfidenz': 'mittel-hoch', 'Erlös': 'Analyse + 150–600 €/Monat'}, 'fields': {}
},
{
'id': 'rfq-offer-comparison-agent', 'name': 'RFQ- & Angebotsvergleich-Agent', 'icon': '≋',
'desc': 'Lieferantenanfragen und Angebote strukturiert vergleichen und Entscheidungsvorlagen erzeugen.',
'metrics': {'Aufbau': '30–60 h', 'Umsetzung': 'mittel', 'Potenzial': '8,7/10', 'Konfidenz': 'mittel-hoch', 'Erlös': 'Setup + 200–700 €/Monat'}, 'fields': {}
},
"""
marker="\n]\n\n\nPRIORITY_ORDER ="
if 'inventory-replenishment-agent' not in text:
text=text.replace(marker,insert+marker,1)
text=text.replace(" 'ki-wissens-onboarding': 'KI-Wissens-Onboarding-System.md',\n}"," 'ki-wissens-onboarding': 'KI-Wissens-Onboarding-System.md',\n 'inventory-replenishment-agent': 'Bestands-Nachbestell-Agent.md',\n 'supplier-risk-monitoring-agent': 'Lieferanten-Risiko-Agent.md',\n 'spend-cost-analysis-agent': 'Spend-Kostenanalyse-Agent.md',\n 'rfq-offer-comparison-agent': 'RFQ-Angebotsvergleich-Agent.md',\n}")
old=""" 'project_ids': [project['id'] for project in CUSTOMER_PROJECTS],
},
]"""
new=""" 'project_ids': ['ki-wissens-onboarding','sop-agent-system','prozess-human-loop','ai-rezeptionist-lead-agent','skill-library-orchestration','content-landingpage-service'],
},
{
'id': 'einkauf-bestand',
'title': 'Suchrichtung: Einkauf & Bestand',
'keywords': 'Einkauf · Beschaffung · Bestand · Lieferanten · Sourcing',
'purpose': 'Recherche nach klar abgrenzbaren KI- und Automatisierungsleistungen rund um Einkauf, Lieferanten, Kostenanalyse und Bestandssteuerung. Überschneidungen mit den allgemeinen Business-Projekten werden vermieden.',
'sort': 'Neueste Veröffentlichung zuerst',
'evaluated': '1 direkter YouTube-Treffer im aktuellen Bestand',
'usable': '1 verwertbar · externe Validierung stark',
'missing': 'YouTube-Abdeckung derzeit gering',
'batch': '1 Batch · 2026-09-08',
'recency': 'YouTube: max. 90 Tage · externe Quellen: Schwerpunkt 2026',
'project_ids': ['inventory-replenishment-agent','supplier-risk-monitoring-agent','spend-cost-analysis-agent','rfq-offer-comparison-agent'],
},
]"""
if old not in text: raise SystemExit('SEARCH_DIRECTION_MARKER_NOT_FOUND')
text=text.replace(old,new,1)
APP.write_text(text,encoding='utf-8')
print('APP_PATCHED',backup)
# Persist research batch and the one direct YouTube source without pretending there were ten.
db=sqlite3.connect('/opt/struktur/content-extraction/data/content_extraction.db')
db.execute("""INSERT OR REPLACE INTO ce_analysis_batches(batch_id,analysis_type,search_terms,sort_mode,requested_count,recency_policy,purpose,started_at,completed_at,selected_count,usable_count,missing_count,result_summary) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)""",(
'einkauf-bestand-2026-09-08','customer_projects_procurement_inventory','Einkauf; Beschaffung; Bestand; Lieferanten; Sourcing','published_at_desc',10,'KI: max. 90 Tage; externe Validierung bei zu geringer YouTube-Abdeckung','Eigenständige Kundenprojekte für Einkauf, Bestand und Lieferanten ableiten','2026-09-08T12:00:00Z','2026-09-08T12:00:00Z',1,1,0,'4 Projekte: Bestands-/Nachbestell-Agent; Lieferanten-Risiko-Agent; Spend-/Kostenanalyse-Agent; RFQ-/Angebotsvergleich-Agent. YouTube-Bestand enthält nur einen direkten aktuellen Treffer; externe Evidenz wurde deshalb höher gewichtet.'))
row=db.execute("SELECT id FROM ce_sources WHERE source_video_id=1123").fetchone()
if row:
db.execute("""INSERT OR REPLACE INTO ce_analysis_marks(source_id,analysis_type,status,batch_id,analyzed_at,output_refs,note,updated_at) VALUES(?,?,?,?,?,?,?,CURRENT_TIMESTAMP)""",(row[0],'customer_projects_procurement_inventory','processed','einkauf-bestand-2026-09-08','2026-09-08T12:00:00Z','RFQ-Angebotsvergleich-Agent.md','Direkter Sourcing-Treffer; als Trendsignal verwendet.'))
db.commit(); db.close()
print('BATCH_REGISTERED')