From 655cf9857943b39d9400f6d29d3dd10a8007a68c Mon Sep 17 00:00:00 2001 From: Ravi Gulhane <> Date: Mon, 27 Jul 2026 11:53:49 +0530 Subject: [PATCH] Static website changes --- .env.example | 38 +- bedrock-iam-policy.example.json | 6 +- .../crest-novel/assets/css/main.css | 4 +- .../event-up/assets/css/main.css | 4 +- public/embed-demo.html | 8 +- public/embed/concierge-widget.css | 67 +- public/embed/concierge-widget.js | 342 +++++++-- scripts/show-food-places.js | 47 +- src/controllers/publicConcierge.controller.js | 142 ++-- src/controllers/staticMicrosite.controller.js | 44 ++ src/models/Event.js | 10 + src/models/WebChatSession.js | 70 ++ src/routes/publicConcierge.routes.js | 15 +- src/routes/staticMicrosite.routes.js | 17 + src/services/accommodationDb.service.js | 9 + .../accommodationRecommendationService.js | 275 ++++++++ src/services/conciergeCall2.service.js | 192 +++++ src/services/conciergeCall2.service.test.js | 116 ++++ .../checkIn.handler.js | 39 ++ .../eventKnowledge.handler.js | 16 + .../conciergeIntentHandlers/food.handler.js | 30 + .../greeting.handler.js | 12 + src/services/conciergeIntentHandlers/index.js | 84 +++ .../logistics.handler.js | 134 ++++ .../personal.handler.js | 35 + .../phase3Handlers.test.js | 160 +++++ .../phase5Handlers.test.js | 120 ++++ .../phase6Handlers.test.js | 125 ++++ .../registration.handler.js | 41 ++ .../conciergeIntentHandlers/registry.test.js | 19 + .../simpleReplies.handler.js | 37 + .../simpleReplies.handler.test.js | 54 ++ .../ticketing.handler.js | 50 ++ .../touristPlaces.handler.js | 30 + .../virtualJoin.handler.js | 43 ++ .../virtualSessionJoin.handler.js | 68 ++ .../virtualTroubleshooting.handler.js | 19 + .../conciergePipeline.foodMode.test.js | 184 +++++ .../conciergePipeline.placesMode.test.js | 229 ++++++ src/services/conciergePipeline.service.js | 657 ++++++++++++------ src/services/conciergeRag.service.js | 90 ++- src/services/conciergeResponse.service.js | 79 +++ .../conciergeResponse.service.test.js | 167 +++++ src/services/conciergeRouter.service.js | 597 ++++++++++++++++ src/services/conciergeRouter.service.test.js | 335 +++++++++ src/services/foodDb.service.js | 58 +- src/services/foodRecommendationService.js | 117 +--- src/services/personalInformation.service.js | 63 +- .../personalInformation.service.test.js | 11 +- src/services/placesDb.service.js | 60 +- src/services/placesRecommendationService.js | 348 ++++++---- .../placesRecommendationService.test.js | 44 ++ src/utils/bedrockClient.js | 61 +- src/utils/bedrockComplete.js | 91 +++ src/utils/bedrockConverse.js | 100 ++- src/utils/conciergeEventKnowledge.js | 28 +- src/utils/conciergeEventKnowledge.test.js | 15 + src/utils/conciergeIntent.js | 211 ------ src/utils/conciergeIntent.test.js | 18 - src/utils/conciergePipelineLog.js | 232 +++++++ src/utils/conciergePipelineLog.test.js | 55 ++ src/utils/conciergeRecommendationDb.js | 159 +++++ src/utils/localMicrositeV2Templates.js | 110 +++ src/utils/micrositeBuild.js | 15 +- src/utils/organizerContact.js | 44 ++ src/utils/publishStaticMicrosite.js | 8 +- 66 files changed, 5735 insertions(+), 973 deletions(-) create mode 100644 src/services/accommodationDb.service.js create mode 100644 src/services/accommodationRecommendationService.js create mode 100644 src/services/conciergeCall2.service.js create mode 100644 src/services/conciergeCall2.service.test.js create mode 100644 src/services/conciergeIntentHandlers/checkIn.handler.js create mode 100644 src/services/conciergeIntentHandlers/eventKnowledge.handler.js create mode 100644 src/services/conciergeIntentHandlers/food.handler.js create mode 100644 src/services/conciergeIntentHandlers/greeting.handler.js create mode 100644 src/services/conciergeIntentHandlers/index.js create mode 100644 src/services/conciergeIntentHandlers/logistics.handler.js create mode 100644 src/services/conciergeIntentHandlers/personal.handler.js create mode 100644 src/services/conciergeIntentHandlers/phase3Handlers.test.js create mode 100644 src/services/conciergeIntentHandlers/phase5Handlers.test.js create mode 100644 src/services/conciergeIntentHandlers/phase6Handlers.test.js create mode 100644 src/services/conciergeIntentHandlers/registration.handler.js create mode 100644 src/services/conciergeIntentHandlers/registry.test.js create mode 100644 src/services/conciergeIntentHandlers/simpleReplies.handler.js create mode 100644 src/services/conciergeIntentHandlers/simpleReplies.handler.test.js create mode 100644 src/services/conciergeIntentHandlers/ticketing.handler.js create mode 100644 src/services/conciergeIntentHandlers/touristPlaces.handler.js create mode 100644 src/services/conciergeIntentHandlers/virtualJoin.handler.js create mode 100644 src/services/conciergeIntentHandlers/virtualSessionJoin.handler.js create mode 100644 src/services/conciergeIntentHandlers/virtualTroubleshooting.handler.js create mode 100644 src/services/conciergePipeline.foodMode.test.js create mode 100644 src/services/conciergePipeline.placesMode.test.js create mode 100644 src/services/conciergeResponse.service.js create mode 100644 src/services/conciergeResponse.service.test.js create mode 100644 src/services/conciergeRouter.service.js create mode 100644 src/services/conciergeRouter.service.test.js create mode 100644 src/services/placesRecommendationService.test.js create mode 100644 src/utils/bedrockComplete.js delete mode 100644 src/utils/conciergeIntent.js delete mode 100644 src/utils/conciergeIntent.test.js create mode 100644 src/utils/conciergePipelineLog.js create mode 100644 src/utils/conciergePipelineLog.test.js create mode 100644 src/utils/conciergeRecommendationDb.js create mode 100644 src/utils/organizerContact.js diff --git a/.env.example b/.env.example index c6c9b79..482f5bc 100644 --- a/.env.example +++ b/.env.example @@ -48,12 +48,24 @@ AWS_SECRET_ACCESS_KEY=ZpIxby1vbCLGB7CPWZsAltZBEqkhwzgBpFOKDGj8 AWS_DEFAULT_REGION=ap-south-1 AWS_BUCKET=rapportapp AWS_URL=https://did94hhhcgq1d.cloudfront.net -# Amazon Bedrock (AI event quick-create). Uses Converse API. -# 1) Bedrock console → Model access (ap-south-1): enable Meta Llama 3 8B / 70B. +# Amazon Bedrock (AI event quick-create, concierge food/places summaries). Uses Converse API. +# 1) Bedrock console → Model access (ap-south-1): enable Amazon Nova Micro/Lite and Titan Embeddings. # 2) IAM user/role needs bedrock:InvokeModel + bedrock:Converse on those foundation models. # See bedrock-iam-policy.example.json — attach to the same user as AWS_ACCESS_KEY_ID (e.g. rapport_upload). -# ap-south-1 model IDs: meta.llama3-8b-instruct-v1:0, meta.llama3-70b-instruct-v1:0 -BEDROCK_MODEL_ID=meta.llama3-8b-instruct-v1:0 +# Default chat/extract / Call 2 model (code fallback: meta.llama3-8b-instruct-v1:0): +# BEDROCK_MODEL_ID=meta.llama3-8b-instruct-v1:0 +# Call 1 intent router (Nova Micro → auto-resolved to apac.amazon.nova-micro-v1:0 in ap-south-1) +# BEDROCK_ROUTER_MODEL_ID=amazon.nova-micro-v1:0 +# BEDROCK_ROUTER_MODEL_FALLBACKS=amazon.nova-lite-v1:0 +# Food/places summaries use amazon.nova-micro-v1:0 → auto-resolved to apac.amazon.nova-micro-v1:0 in ap-south-1 +# BEDROCK_RECOMMENDATION_MODEL_ID=amazon.nova-micro-v1:0 +# BEDROCK_RECOMMENDATION_MODEL_FALLBACKS=amazon.nova-lite-v1:0,meta.llama3-8b-instruct-v1:0 +# Nova in APAC requires inference profiles — IAM must allow arn:...:inference-profile/apac.amazon.nova-* +# and foundation-model ARNs in the regions the profile routes to (see bedrock-iam-policy.example.json). +# Attach that policy to the same IAM user as AWS_ACCESS_KEY_ID (e.g. rapport_upload). +# BEDROCK_USE_INFERENCE_PROFILES=auto +# Log full LLM request/response payloads (also enabled when CONCIERGE_DEBUG=true). Call1/Call2 always log truncated payloads. +# BEDROCK_LOG_LLM=true # Use only AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY here, OR AWS_PROFILE in your shell — not both (SDK warning). # Optional: region override (defaults to AWS_DEFAULT_REGION). For Llama 3.1: BEDROCK_REGION=us-east-1 # BEDROCK_REGION=ap-south-1 @@ -71,6 +83,11 @@ BEDROCK_MODEL_ID=meta.llama3-8b-instruct-v1:0 # REDIS_URL=redis://127.0.0.1:6379 # REDIS_TLS=true # CONCIERGE_QUEUE_PREFIX=eventbuzz:concierge: +# The embedded concierge always uses the two-stage pipeline (Call 1 router + intent +# handlers + optional Call 2 RAG). The legacy single-stage pipeline was removed. +# Verbose per-turn pipeline logging to the console, and returns a `debug` turn log in the chat +# response payload. Keep off in production. +# CONCIERGE_DEBUG=false # Concierge URL crawl (multi-page ingest for knowledge sources) # CONCIERGE_CRAWL_MAX_PAGES=50 # CONCIERGE_CRAWL_MAX_ASSETS=20 @@ -79,6 +96,15 @@ BEDROCK_MODEL_ID=meta.llama3-8b-instruct-v1:0 # CONCIERGE_CRAWL_DELAY_MS=200 # CONCIERGE_CRAWL_MAX_ASSET_BYTES=15728640 +# Concierge food/places knowledge sync — Google Places + Bedrock summarization +# GOOGLE_PLACES_API_KEY= +# Stored in the default MONGODB_URI database (collections concierge_food, concierge_places) +# CONCIERGE_FOOD_COLLECTION=concierge_food +# CONCIERGE_PLACES_COLLECTION=concierge_places +# CONCIERGE_ACCOMMODATION_COLLECTION=concierge_accommodation +# Optional DB override (default: database name from MONGODB_URI) +# CONCIERGE_RECOMMENDATION_DB= + # HMAC secret for public form captcha tokens (falls back to JWT_SECRET if unset) # FORM_CAPTCHA_SECRET= @@ -101,9 +127,13 @@ MICROSITE_API_BASE_URL=http://localhost:3001/api # Seed bundled microsite templates: npm run seed:global-microsite-v2-templates # Or one template: npm run seed:eventify-template / npm run seed:eventre-template # Dev: read template.json + template.html from disk instead of MongoDB/S3 (by template slug). +# Also serves CSS/JS/images from local assets for Preview via +# /api/public/microsite-v2-local/{slug}/assets/... # MICROSITE_V2_READ_FROM_LOCAL=true # Optional override for the templates folder (default: backend/microsite-v2-templates) # MICROSITE_V2_TEMPLATES_DIR=/path/to/microsite-v2-templates +# Absolute API origin used in Preview asset URLs (defaults to request host, e.g. http://localhost:3001) +# API_PUBLIC_ORIGIN=http://localhost:3001 # # Published-site target: s3 (default) | ec2. When ec2, rendered index.html + # config.json are uploaded via SFTP to {REMOTE_ROOT}/{subdomain}/ on the EC2 box. diff --git a/bedrock-iam-policy.example.json b/bedrock-iam-policy.example.json index 5b7d259..d1f298b 100644 --- a/bedrock-iam-policy.example.json +++ b/bedrock-iam-policy.example.json @@ -2,7 +2,7 @@ "Version": "2012-10-17", "Statement": [ { - "Sid": "BedrockInvokeLlamaForEventBuzz", + "Sid": "BedrockInvokeForEventBuzz", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", @@ -11,6 +11,10 @@ "bedrock:ConverseStream" ], "Resource": [ + "arn:aws:bedrock:ap-south-1:*:inference-profile/apac.amazon.nova-micro-v1:0", + "arn:aws:bedrock:ap-south-1:*:inference-profile/apac.amazon.nova-lite-v1:0", + "arn:aws:bedrock:*::foundation-model/amazon.nova-micro-v1:0", + "arn:aws:bedrock:*::foundation-model/amazon.nova-lite-v1:0", "arn:aws:bedrock:ap-south-1::foundation-model/meta.llama3-8b-instruct-v1:0", "arn:aws:bedrock:ap-south-1::foundation-model/meta.llama3-70b-instruct-v1:0", "arn:aws:bedrock:ap-south-1::foundation-model/amazon.titan-embed-text-v2:0", diff --git a/microsite-v2-templates/crest-novel/assets/css/main.css b/microsite-v2-templates/crest-novel/assets/css/main.css index 425e004..6f6b6cf 100644 --- a/microsite-v2-templates/crest-novel/assets/css/main.css +++ b/microsite-v2-templates/crest-novel/assets/css/main.css @@ -324,7 +324,7 @@ a.back-to-top:hover, a.back-to-top:focus { left: 0; width: 100%; height: 100%; - z-index: 9999999999; + z-index: 9998; } .sk-circle { @@ -3429,7 +3429,7 @@ body.eventup-marketing-popup-open { .eventup-marketing-popup { position: fixed; inset: 0; - z-index: 10000000001; + z-index: 10000; display: none; align-items: center; justify-content: center; diff --git a/microsite-v2-templates/event-up/assets/css/main.css b/microsite-v2-templates/event-up/assets/css/main.css index 414c976..6a235b7 100644 --- a/microsite-v2-templates/event-up/assets/css/main.css +++ b/microsite-v2-templates/event-up/assets/css/main.css @@ -313,7 +313,7 @@ a.back-to-top:hover, a.back-to-top:focus { left: 0; width: 100%; height: 100%; - z-index: 9999999999; + z-index: 9998; } .sk-circle { @@ -3235,7 +3235,7 @@ body.eventup-marketing-popup-open { .eventup-marketing-popup { position: fixed; inset: 0; - z-index: 10000000001; + z-index: 10000; display: none; align-items: center; justify-content: center; diff --git a/public/embed-demo.html b/public/embed-demo.html index 2272db3..90d291e 100644 --- a/public/embed-demo.html +++ b/public/embed-demo.html @@ -8,14 +8,18 @@
Set a real bot id below.
+
+ To reopen a prior chat, append the WebChatSessions document id:
+ ?session=<mongoObjectId>
+ (the public sessionId string also works).
+