Instead of regex patterns to detect user intent, use a lightweight AI
call (classifyIntent) that categorizes messages into troubleshoot,
onboarding, billing, asset, or general. This catches ambiguous
expressions like "example.com 좀 봐주세요" that patterns would miss.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
routeToActiveAgent now returns {response, agentName} so the message
handler can reliably determine which agent handled the request. Feedback
is only prompted for troubleshoot and onboarding agents, not billing
or asset single-shot agents.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Billing and asset agents (single-shot) no longer trigger the star rating
feedback prompt after every response. Feedback is now only requested
after troubleshoot/onboarding sessions or when the conversation had 3+
exchanges in the last hour.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement hybrid knowledge search using Cloudflare Vectorize + Workers AI
embeddings (bge-base-en-v1.5, 768d) merged with existing D1 LIKE queries,
with graceful degradation when Vectorize is unavailable. Add admin API
endpoints for batch/single article indexing.
Add 4 proactive notification cron jobs: server status changes, deposit
confirmation/rejection alerts, pending payment reminders (1h+), and bank
deposit matching notifications — all with DB-column-based deduplication.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>