- 04 May, 2026 10 commits
-
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
fix(agent): make Stylist proactive — stop asking questions, auto-build combos from suggest_items + ai_matches
-
Vũ Hoàng Anh authored
feat(agent): add COMBO rules + examples to Stylist prompt — use suggest_items and ai_matches to build full outfits
-
Vũ Hoàng Anh authored
feat(agent): add 6 few-shot examples to Classifier prompt for combo, correction, recall, and early exit scenarios
-
Vũ Hoàng Anh authored
fix(agent): prevent classifier from inheriting narrow product_line (like underwear) when user asks for a combo/set
-
Vũ Hoàng Anh authored
fix(agent): update RECALL rules to correctly route queries with gender/product corrections to search tool
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Hoanganhvu123 authored
-
- 29 Apr, 2026 6 commits
-
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
- config.py += FREE_LLM_API_KEY, LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY - sqlite_db.py: use SQLITE_DB_PATH from constants - n8n_desc.py: import FREE_LLM_API_KEY from config - faq_route.py: import FREE_LLM_API_KEY from config - live_monitor_route.py: import Langfuse keys from config - prompt_optimizer_route.py: update docstrings (remove hardcoded IPs) - NEW: tests/conftest.py with centralized BASE_URL
-
Vũ Hoàng Anh authored
- NEW: backend/common/constants.py (SQLITE_DB_PATH, SQLITE_GENDER_MAP, KID_SAFE_KEYWORDS, normalize_gender) - NEW: config.py += CHATBOT_API_BASE, LANGFUSE_SELF_HOSTED_URL, N8N_BASE_URL, LITELLM_BASE_URL, STARROCKS_INGEST_HOST - REFACTORED: stylist_engine.py (removed duplicate maps, inline imports, dead _get_fallback_mappings) - REFACTORED: lead_search_tool.py, outfit_matcher_worker.py, sqlite_mock.py, outfit_db.py (use SQLITE_DB_PATH) - REFACTORED: live_monitor_route, prompt_optimizer, user_simulator, simulation_runner (use CHATBOT_API_BASE) - REFACTORED: faq_route.py, n8n_desc.py (use LITELLM_BASE_URL) - ARCHIVED: seed_rules.py, migrate_outfit_matches.py, check_*, inspect_db.py, recover_links.py to _archive/ - ZERO hardcoded IPs remaining in runtime code
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
- 28 Apr, 2026 4 commits
-
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
- 24 Apr, 2026 3 commits
-
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
- experiment_log_route: self-contained _get_pool/_now (remove notes_route dep) - roadmap_flow_route: self-contained _get_pool/_now (remove notes_route dep) - check_history_route: query langgraph_chat_histories via async pool (was incorrectly querying dashboard_canifa.chat_history with wrong columns) - real_user_history/check_history_route: same fix - Verified: identity 468707 returns full chat history with products
-
- 23 Apr, 2026 1 commit
-
-
Vũ Hoàng Anh authored
-
- 22 Apr, 2026 6 commits
-
-
Hoanganhvu123 authored
-
Hoanganhvu123 authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
- 21 Apr, 2026 2 commits
-
-
Vũ Hoàng Anh authored
-
Hoanganhvu123 authored
-
- 20 Apr, 2026 5 commits
-
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
feat(gender-rules): add gender_target to fashion_rules, seed 114 rules, /rules/view HTML endpoint, UI button
-
Vũ Hoàng Anh authored
feat(outfit-db): add ai_outfit_set + ai_outfit_items tables with dual-backend support (Postgres/SQLite)
-
- 19 Apr, 2026 1 commit
-
-
Hoanganhvu123 authored
EPIC 8 - INBOUND WEBHOOKS & CRM INBOX
✅ ======================================== Backend: - Add is_read field to memos table with auto-migration - Inbound webhook endpoint: POST /inbound_webhooks/{workspace_id} - Inbox endpoints: GET /users/{id}/inbox/unread_count, GET /users/{id}/inbox/memos - Webhook payload formatting (title+body → markdown, arbitrary → bullet list) - Optional secret verification via X-Webhook-Secret header - Database indexes: idx_memos_is_read, idx_memos_workspace Frontend: - Inboxes.tsx: Two tabs (Notifications + Unread Memos) - useInboxUnreadCount hook with 60s refetch - useMarkMemoAsRead mutation - Navigation badge: notifications + unread memos count - i18n: inbox.* keys (en/vi) DOCUMENT MANAGEMENT (DOCX/PDF)🆕 ================================== Backend: - New table: cuccu_documents with full schema - DocumentService: upload, list, get, update, delete, process, import_to_memo - AI enhancement via OpenAI (tag extraction + summarization) - python-docx integration for text extraction - Status workflow: PENDING → PROCESSING → COMPLETED/FAILED - API routes: /documents/upload, /documents, /documents/{id}, /documents/{id}/process, /documents/{id}/import Frontend: - New page: DocumentsPage (route: /app/documents) - Components: UploadArea, DocumentList, DocumentCard, PreviewPanel - Hooks: useDocuments, useDocumentUpload, useDocumentProcess, useDocumentImport - AI enhancement panel with toggles (extract tags, generate summary) - Drag-and-drop file upload with validation - Status badges, tag display, content preview - Workspace isolation support - Full i18n support (en/vi) Files changed: - Backend: 15+ files (new: api/documents/, common/sqlite_client.py updates, schemas, services, config) - Frontend: 20+ files (new: components/Documents/, hooks/useDocuments.ts, docxService.ts, pages/DocumentsPage.tsx) - Tests: test_inbox.py (5 tests passing) - Plan docs: epic-8-inbound-webhooks-crm-inbox-done.md, docx-frontend-detailed-plan.md🤖 Generated with Claude Code
-
- 18 Apr, 2026 2 commits
-
-
Vũ Hoàng Anh authored
-
Vũ Hoàng Anh authored
feat(ai-stylist): refactor engine to DB rules, add SQLite mock, seed 51 fashion rules, add tests + plan docs
-