Tony Tang TonyT

TonyT запушил(а) master в TonyT/chatbot

  • c52d0b95a8 Fix Excel import: use sheet_to_json to handle multi-line cells correctly sheet_to_csv was splitting on embedded newlines within cells (e.g. Long Description column), causing column misalignment for all subsequent rows. Switch to sheet_to_json with header:1, replace in-cell newlines with spaces, then build a flat CSV our parseCSV can handle correctly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 день назад

TonyT запушил(а) master в TonyT/chatbot

  • 5a9d79cd78 Change knowledge_products string columns from varchar to text Avoids 'value too long for character varying(100)' errors when importing product catalog with long feature descriptions and URLs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

1 день назад

TonyT запушил(а) master в TonyT/chatbot

  • a69c7dab52 Improve product import error reporting and reduce batch size for debugging - Server: wrap importProducts in try-catch, extract actual PG error from Drizzle error chain and throw clean TRPCError with meaningful message - Client: reduce batch size from 500 to 50 rows for finer-grained progress and easier failure isolation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

2 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 8c7ace82e0 Add import progress bar and client-side batching for product catalog upload - Rewrite handleImportProducts as async with 500-row client batching - Add importProgress state with current/total/status/error tracking - Show progress bar UI with percentage and batch counter during import - Disable Cancel/Import buttons while import is running - Column mapping for Homelegance Excel: Model, Description, Collection, Price, Features, Dimensions, URL Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

2 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • a1617eba97 fix: batch product imports in chunks of 500 to prevent DB timeout Single INSERT with 5034 rows caused timeout/param limit errors. Now inserts in batches of 500 rows sequentially. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

2 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • cc531abf78 feat: map Homelegance Excel columns for product catalog import - Model, Description, Long Description, Collection Name - Feature 1-10 joined with " | " separator - Additional Dimension 1-10 + Setup Size joined as dimensions - UNIT PRICE / PROMO PRICE (promo takes priority) - AVAILABILITY, URL fields mapped correctly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

2 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • b36331d3c1 feat: add Excel (.xlsx/.xls) support for product catalog import handleFileUpload now detects Excel files and uses SheetJS to parse them into CSV before processing. CSV files continue to work as before. Product file input now accepts .xlsx, .xls, and .csv formats. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

2 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 80e70c64f3 fix: auto-open chatbot widget when SSO token present in URL When Dealer Portal redirects to /chat/?sso_token=<jwt>, the widget now opens automatically instead of waiting for user to click it. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

4 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 0acd252bd5 feat: SSO integration for Dealer Portal (Java/Tomcat → Chatbot) - startSession accepts optional ssoToken (JWT signed with shared secret) - Verifies JWT using DEALER_PORTAL_SSO_SECRET (HS256, Base64 key) - Extracts customer_id (sub), company, sales_rep, email from payload - Binds customerId + salesRep to conversation on session start - Welcome message personalised: "Welcome back, <company>!" for SSO users - Invalid/expired tokens fall through silently as anonymous visitors - ChatbotWidgetLive reads ?sso_token= URL param and passes to mutation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 26ea965c07 fix: stop click event bubbling in FlowNodeCard to allow node selection Node selection was immediately cleared because onMouseDown set the selectedNodeId but the click event bubbled up to the canvas which reset it to null. Adding onClick stopPropagation fixes node properties panel visibility. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 502de9a3bd fix: track session_start and resolved_by_agent analytics events startSession never emitted a session_start event, causing Analytics to show 0 total sessions despite active conversations. updateStatus now emits resolved_by_agent or escalated events when status changes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 154d2b569a fix: Playground sendMessage onSuccess now renders bot reply The sendMessage mutation's onSuccess only called setIsTyping(false), silently discarding Ellie's reply. Now adds the bot message to the chat list and updates the Execution Path with the response source (flow/knowledge/llm). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 8345da2c53 fix: populate customerId and visitorName from logged-in user in startSession When an authenticated user starts a chat session, save their name, email, and erpContactCid (as customerId) to the conversation so the agent Dashboard shows meaningful data instead of blank columns. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 2637d4d049 fix: hide Dashboard button for User role in home nav Only admin/agent see the Dashboard link. User (dealer) role sees their name only — no access to the agent dashboard. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 3b8165fe8c feat: show user name + Dashboard button in nav when logged in Replace Sign In button with username + Dashboard link for authenticated users. Uses useAuth hook to check session state client-side. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • bddcefc37e fix: Sign In button href uses BASE_URL prefix for /chat/ deployment Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 23e1cb8315 fix: model regex captures *N suffix (5615-96*5, 5615-96*7) Change [*]? to (?:[*]\d*)? so the digit after * is also captured. Covers: 5615-96, 5615-96*, 5615-96*5, 5615-96*7 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 159debf9d5 fix: model regex captures asterisk suffix (e.g. 5615-96*) * is not a \w char so trailing \b was cutting it off. Added [*]? to digit-dash pattern and [-\w*]* to other patterns. Removed trailing \b so * at end of model is included in the match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 0385537803 fix: catalog_images SQL uses exact ILIKE match, not partial wildcard Remove '%' || p_model || '%' — the chatbot passes the exact model number extracted from the user's message, so no wildcard needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад

TonyT запушил(а) master в TonyT/chatbot

  • 09f8ebb0a9 fix: model regex also matches pure-digit models like 5615-96 Add \d{3,}(?:-\d+)+ branch to cover models with no letters (e.g. 5615-96). Applied to both stock lookup and product image intent detection. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

5 дней назад