Capture symptom reasons; switch startup warmup to lifespan

- Reason extraction missed symptom-style reasons: a caller said "I'm actually
  blind" and the lead logged reason=None (it caught "disintegrated eyes" before
  but not this). Broadened the extractor's reason rule to capture the eye
  problem/symptom as the reason, not just visit types. Verified 3/3 -> "vision
  loss / blindness".
- server.py: move the LLM warmup/pin (keep_alive=-1) from the deprecated
  on_event("startup") to a lifespan handler — silences the FastAPI deprecation
  warning; model still shows ollama ps UNTIL=Forever.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
tocmo0nlord
2026-06-27 04:37:45 +00:00
parent ba36ae6891
commit 550550975f
2 changed files with 14 additions and 11 deletions

View File

@@ -25,7 +25,10 @@ _EXTRACT_INSTRUCTIONS = (
"best one, false if they said to use a different number, null if it never came up\n"
' "alternate_number": string or null — a different callback number the caller gave, digits only\n'
' "location": string or null (which office/city)\n'
' "reason": string or null (e.g. eye exam, broken glasses)\n'
' "reason": string or null — WHY they want to be seen: the visit type OR the eye '
"problem/symptom they describe. Capture symptoms too (e.g. \"annual eye exam\", \"blurry "
'vision", "vision loss / blindness", "eye pain", "broken glasses", "red eye"). If they '
"describe any eye or vision problem, that IS the reason.\n"
' "insurance": string or null — the insurance plan the caller named, exactly as they said it\n'
' "preferred_time": string or null — the day/time in the caller\'s own words\n'
' "resolved_date": string or null — the actual calendar date the caller means as YYYY-MM-DD, '