Fetching metadata from the HF Docker repository...
May 19 17:01 docs(chatbot): add ML evaluation notebook with Wave 4 results and weight sensitivity analysis Kiriten892 +1: Claude Sonnet 4.6 - Add wanderlust_ml_evaluation.ipynb: full ML workflow (EDA, training, evaluation, weight analysis)
- Add sensitivity_analysis.py: Monte Carlo ±30% perturbation showing budget tier invariance
- Update evaluation_report.md: Wave 4 results (intent acc 93.05%, macro F1 94.00% on 13 classes, NER 0.920)
- Document 4 intents with 0 test samples and their impact on 17-class macro F1 (0.76)
- Include +Tour academic reference (Esper et al., Computer Networks 2025) for itinerary optimization
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> May 4 14:14 feat: add populate_ja_ko.js script to seed Japanese/Korean fields in MongoDB 12:08 feat(audit): full project audit — ESLint, tests, i18n, transactions, docs BE:
- fix(mongo): add MongoTransactionManager bean + @EnableTransactionManagement (was silently no-op)
- refactor(money): replace hardcoded ADMIN_USER_ID/WALLET_ID/commissionRate with @Value fields
- test(money): add 12 unit tests for MoneyTransferService (wallet/card/completion/refund flows)
- test(infra): add AbstractIntegrationTest base class with Testcontainers MongoDB replica set
- build(deps): add Testcontainers BOM-managed deps (testcontainers, mongodb, junit-jupiter)
- fix(test): setId() instead of setBookingId() + mock vendorWallet for admin refund test
FE:
- feat(lint): add ESLint v9 flat config with typescript-eslint, react-hooks, react-refresh
- fix(lint): 0 ESLint errors — fixed duplicate imports, catch vars, conditional hook, unused vars
- test(utils): add 34 unit tests for formatters, roleMapper, translateAmenity
- fix(i18n): add 4 missing keys to ko.json, 3 missing keys to ja.json
- fix(test): correct air-conditioning translation and vercel.json import path
- chore(dep… 07:21 chore(deploy): remove orphan root files and move JS scripts to chatbot-ml-service Kiriten892 +1: Claude Sonnet 4.6 Remove orphaned configuration files, analysis scripts, and hf_space mirror directory that are no longer needed. Move populate_vi.js and populate_vi_remaining.js from root scripts/ to chatbot-ml-service/scripts/ for better organization.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Apr 23 15:08 Step 3: Upgrade Java to 25 - Compile: SUCCESS - java.version: 21 → 25
- lombok.version: 1.18.36 → 1.18.46 (required for JDK25 annotation processing support)
- Both main (266 files) and test (14 files) compile successfully with Java 25 Apr 18 15:02 feat: real-data dataset enrichment + nearby_attractions + travel_tips intents - Nav: remove Bot import, add travelGuide to mobile More section
- Dataset: 5222 -> 7369 samples from real public sources (no synthetic text)
* CLINC-OOS (HuggingFace parquet): 1841 samples
* ATIS (HuggingFace parquet): 505 samples
* SNIPS Built-in Intents: 175 samples
* Reddit r/travel, r/solotravel, r/Vietnam etc: 1585 samples
- New intents from scraped data:
* nearby_attractions (176 samples from Reddit)
* travel_tips (164 samples from Reddit)
- Retrained intent classifier: macro F1=0.81
- Added handlers in routes.py for nearby_attractions + travel_tips
- Added response templates (VI + EN) for both new intents
- Added quickReplies for both new intents
- Added scrapers: huggingface_dataset_scraper.py, reddit_scraper.py,
tripadvisor_qa_scraper.py, collect_real_intent_data.py
- Updated ALLOWED_INTENTS in validate_dataset.py 11:42 feat(ML): add show_map intent + context-aware map routing - Added 80 training samples for show_map intent (VI + EN, including
'from saved plan' phrasings like 'dựa vào kế hoạch đã lưu thì bật map')
- Added show_map handler in routes.py: falls back to context destination_id
when NER finds no location (covers 'from saved plan' use case)
- Added show_map to additional_rc map trigger list so map card is rendered
- Added show_map response templates to responses_vi.json + responses_en.json
- Added show_map quick replies to ResponseGenerator
- Retrained classifier: overall accuracy 94.2%, show_map P/R/F1=1.00 09:37 Wave 3: expand NER fixture 85->102, time_preference F1 0.40->0.98, people/duration fixes - NER fixture: 85 -> 102 samples (+12 time_preference + 5 people edge cases)
- time_preference F1: 0.40 -> 0.98 (was 0.00 in Wave 1)
* Add 'buoi sang som' -> early_morning keyword (highest priority)
* VI compound scrubbing: 'an sang' (breakfast), 'cho dem' (night market VI)
* EN compound scrubbing: night market/tour/life/show/club/bus
* Fix 4 gold annotation gaps (buoi toi, hoang hon, buoi chieu samples)
- duration: add EN natural-language week patterns (a week, one/two/three weeks)
- people: add VI vo chong, co N tre em; EN group of N, N of us, solo word boundary
- location: extend FP blocklist (temple, shrine, sunrise, batu, anh, market, beach)
* Location FP: 24 -> 7 (also fixed dual location+destination annotation in fixture)
- NER micro F1: 0.912 (85 samples) -> 0.920 (102 samples)
- evaluation_report.md: add Wave 3 section with full metrics table 09:06 Wave 2: compare_destinations data + NER fixes + evaluation update Intent:
- Add 120 compare_destinations samples (80 VI + 40 EN) to intent_train_enhanced.json
- Re-split: train=5102, val=1094, test=1094 (seed=42)
- Retrain: macro F1 0.8661 -> 0.9412 on 1094 held-out samples
- compare_destinations: F1 0.00 -> 0.92
NER model.py:
- origin: HIGH_CONF end-of-sentence 'tu X' pattern + LOW_CONF gate when 'tu' present
- hotel_type: suppress 'accommodation' in budget-allocation context (tiet kiem, chi nhieu)
- hotel_type: suppress EN 'budget' when monetary amount present
- budget: add 'ruoi' (3 trieu ruoi = 3.5M VND) pattern
- budget_priority: broaden VI patterns (tiet kiem tien an, chi nhieu hon cho, uu tien)
- cuisine: skip cuisine keyword when dietary negation phrase overlaps
- transport: add 'mrt'/'gan mrt' to VI keywords
- time_preference: suppress short-keyword matches in duration context (2 dem, 2 nights)
- _match_keyword_dict: consumed-text approach prevents substring double-match
- FALSE_POSITIVE_BLOCKLIST: add 'massa'/'massage'
evaluate.py:
- Add … Mar 29 12:53 feat: security audit fixes, performance improvements & global data pipeline Backend:
- Add RateLimitingFilter (Bucket4j): login 5req/60s, forgot-password 3req/60s
- Add WebSocketAuthInterceptor: validate JWT on HTTP upgrade handshake
- Add BookingExpiryScheduler: auto-cancel PENDING bookings after 30 min
- Fix race condition in FlightSeatService using atomic findAndModify
- Fix race condition in WalletServiceImpl using atomic $inc with balance check
- Fix idempotency in PaymentService: check existing payment before creating Stripe session
- Fix N+1 query in ActivityStatusScheduler using bulkOps
- Fix FlightService: push filters (isDirect, price range) down to MongoDB query
- Fix RoomService: sync Hotel.lowestPrice after every room create/update/delete
- Add pagination support (Page<T>) to FlightRepository, ActivityRepository
- Add @TextIndexed on Hotel.name/address for full-text search
- Add HTTP security headers (HSTS, CSP, X-Frame-Options) to SecurityConfig
- Remove Stripe debug endpoint from StripeWebhookController
- Strengthen JWT secret: require JWT_SECRE… Mar 7 09:11 feat(chatbot): expand KB to 9474 destinations & upgrade all components (v4.0.0) Wanderlust Dev
- Knowledge Base: 38 → 9,474 real destinations from GeoNames cities15000 (CC 4.0)
- 148 countries, 5 continents, 8.1MB compact JSON
- scripts/expand_knowledge_base.py: download, parse, filter, map pipeline
- NER: dynamic KB loading (13,374 entries), replaces hardcoded dicts
- Recommender: O(1) lookups, TF-IDF 2000 features, international filter
- Vector Store: selective indexing (detailed vs compact destinations)
- Context Builder: international travel support, compact dest handling
- Training Pipeline: smart sampling (300 diverse destinations from 9K+)
- Update.md Section 15: full documentation with data source links
- .gitignore: Python cache, scripts/cache, saved_models