neuer Viewport für Admin-Seiten
This commit is contained in:
parent
3541c416f9
commit
28b6fb28d5
11
.claude/docs/working/Test_status_Wkf.md
Normal file
11
.claude/docs/working/Test_status_Wkf.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
Folgende Ergebnisse des Tests:
|
||||
- Valididierung gibt immer noch keine Aufschlüsse was für Fehler und Warning es sind, Es zeigt immer nur noch die Anzahl der entsprechenden Fehler/Warnungen
|
||||
- Speichern als kurzes PopUp -- gut
|
||||
- In der Node selbst wird nun eine Fehlermeldung ausgegeben. Das ist gut. In größen Workflows aber schwierig den Fehler zu lokalisieren.
|
||||
- In der automatischen Zusammenfassung in der Endnode kommt als Überschrift, z.B. Node 10, anstatt den Node-Name auszugeben.
|
||||
- Alle Änderungen an Nodes scheinen automatisch in den Gesamtflow übernommen zu werden. Diese werden dann nach dem Speichern aktiv. Da muss man sehr vorsichtig sein, bei kurzen Änderungen und dem Ausprobieren.
|
||||
- Der Testlauf "Execute" sollte auf dem aktuellen Workflowstand ausgeführt werden, auch wenn dieser vom gespeicherten Abweicht. Ich würde natürlich vor dem Speichern den Workflow testen können. Prüfe und bewerte diesen Punkt, setze ihn aber noch nicht um.
|
||||
- Die Workflows werden aktuell nicht in Analyse und den verfügbaren KI-Asuwertungen angezeigt. ggf. weil wir sie aktuell noch keinem Bereich zuordnen können. Diesen könnten wir ggf. über die Start-Node im Workflow konfigurieren.
|
||||
- Das löschen von Knoten und Kanten funktioniert aktuell nur über Backspace nicht über entfernen
|
||||
- Wir sollten auch dafür sorgen, dass jeweils nur eine Start-Node, End-Node in einem Workflow existiert, Prüfe ob mehrere End-Nodes sinnvoll sind, da wir ja auch Logik-Pfade abbilden und ggf. auch eine route beschreiten, die ein anderes Ende hat. (Prüfe, ob das heute schon möglich wäre!)
|
||||
- Als zukünftige Ausbaustufe sollten wir überlegen, ob wir auch Trigger implementieren, z.B. um Kurzstatements zu generieren, wenn neue Daten hereinkommen und wir diese Bewertungen aktualisieren wollen
|
||||
|
|
@ -18,6 +18,8 @@
|
|||
--header-h: 52px;
|
||||
--font: system-ui, -apple-system, 'Segoe UI', sans-serif;
|
||||
--capture-content-max: 800px;
|
||||
/* Admin: nutzt volle Hauptspalte bis zu dieser Obergrenze (siehe .app-main:has(.admin-shell)) */
|
||||
--admin-main-max: min(1560px, calc(100vw - 220px));
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
|
|
@ -619,13 +621,16 @@ a.analysis-split__nav-item {
|
|||
|
||||
.admin-page {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
/* Desktop: volle Breite der Admin-Spalte (nicht wie Erfassung 800px); Lesegröße leicht skaliert */
|
||||
@media (min-width: 1024px) {
|
||||
.admin-page {
|
||||
max-width: var(--capture-content-max);
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: 100%;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
font-size: clamp(15px, 0.88rem + 0.25vw, 18px);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -841,6 +846,11 @@ a.analysis-split__nav-item {
|
|||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* Admin: mehr horizontaler Raum für Tabellen auf großen Screens (:has ~2022+, sonst bleibt 1200px) */
|
||||
.app-main:has(.admin-shell) {
|
||||
max-width: var(--admin-main-max);
|
||||
}
|
||||
|
||||
/* Dashboard (P3): Begrüßung + Kennzahlen-Zeile */
|
||||
.dashboard-greeting {
|
||||
display: flex;
|
||||
|
|
|
|||
85
test_placeholder_resolution.py
Normal file
85
test_placeholder_resolution.py
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test placeholder resolution in inline templates
|
||||
|
||||
This script simulates what happens in workflow_executor.load_prompt_template()
|
||||
"""
|
||||
import sys
|
||||
sys.path.insert(0, 'backend')
|
||||
|
||||
from placeholder_resolver import get_placeholder_example_values, get_placeholder_catalog
|
||||
from prompt_executor import resolve_placeholders
|
||||
|
||||
# Test profile_id (use first profile in dev DB)
|
||||
PROFILE_ID = "019601b5-d65a-738f-a1e7-b3f69bb97f69" # Lars profile from dev
|
||||
|
||||
def test_placeholder_resolution():
|
||||
"""Test the exact same logic as in workflow_executor.load_prompt_template()"""
|
||||
|
||||
# Test template with spaces in placeholders (as user showed)
|
||||
template = "Hallo {{ name }}, du bist {{ age }} Jahre alt und {{ geschlecht }}."
|
||||
|
||||
print("=" * 80)
|
||||
print("PLACEHOLDER RESOLUTION TEST")
|
||||
print("=" * 80)
|
||||
print(f"\nTemplate:\n{template}\n")
|
||||
|
||||
# Step 1: Load placeholders (same as workflow_executor)
|
||||
print("Step 1: Loading placeholders...")
|
||||
processed_placeholders = get_placeholder_example_values(PROFILE_ID)
|
||||
print(f" Loaded {len(processed_placeholders)} placeholders")
|
||||
print(f" Sample keys (first 5): {list(processed_placeholders.keys())[:5]}")
|
||||
|
||||
# Step 2: Clean keys (same as workflow_executor)
|
||||
print("\nStep 2: Cleaning keys...")
|
||||
cleaned_placeholders = {
|
||||
key.replace('{{', '').replace('}}', '').strip(): value
|
||||
for key, value in processed_placeholders.items()
|
||||
}
|
||||
print(f" Cleaned keys (first 5): {list(cleaned_placeholders.keys())[:5]}")
|
||||
print(f" Sample values:")
|
||||
print(f" name = {cleaned_placeholders.get('name')}")
|
||||
print(f" age = {cleaned_placeholders.get('age')}")
|
||||
print(f" geschlecht = {cleaned_placeholders.get('geschlecht')}")
|
||||
|
||||
variables = cleaned_placeholders
|
||||
|
||||
# Step 3: Load catalog
|
||||
print("\nStep 3: Loading catalog...")
|
||||
try:
|
||||
catalog = get_placeholder_catalog(PROFILE_ID)
|
||||
print(f" Catalog loaded with {len(catalog)} categories")
|
||||
except Exception as e:
|
||||
catalog = None
|
||||
print(f" Catalog failed: {e}")
|
||||
|
||||
# Step 4: Resolve placeholders
|
||||
print("\nStep 4: Resolving placeholders...")
|
||||
debug_info = {}
|
||||
resolved = resolve_placeholders(
|
||||
template=template,
|
||||
variables=variables,
|
||||
debug_info=debug_info,
|
||||
catalog=catalog
|
||||
)
|
||||
|
||||
print(f" Resolved placeholders: {debug_info.get('resolved_placeholders', {})}")
|
||||
print(f" Unresolved placeholders: {debug_info.get('unresolved_placeholders', [])}")
|
||||
|
||||
# Result
|
||||
print("\n" + "=" * 80)
|
||||
print("RESULT")
|
||||
print("=" * 80)
|
||||
print(f"\nResolved template:\n{resolved}\n")
|
||||
|
||||
# Check if placeholders were resolved
|
||||
if '{{' in resolved:
|
||||
print("❌ FAILED: Some placeholders were not resolved!")
|
||||
return False
|
||||
else:
|
||||
print("✅ SUCCESS: All placeholders resolved!")
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = test_placeholder_resolution()
|
||||
sys.exit(0 if success else 1)
|
||||
Loading…
Reference in New Issue
Block a user