@@ -4547,18 +4547,58 @@ async def chat_with_rag(request: Request, chat_request: ChatRequest):
45474547 from backend.core.stillme_detector import (
45484548 detect_stillme_query,
45494549 get_foundational_query_variants,
4550- detect_origin_query
4550+ detect_origin_query,
4551+ detect_revenue_query
45514552 )
45524553 # CRITICAL: Detect origin queries FIRST, before any other processing
45534554 # This ensures Identity Truth Override works even when RAG is disabled
45544555 is_origin_query, origin_keywords = detect_origin_query(chat_request.message)
45554556 if is_origin_query:
45564557 logger.debug(f"Origin query detected! Matched keywords: {origin_keywords}")
4558+ # Detect revenue/monetization questions to avoid origin template misuse
4559+ is_revenue_query = False
4560+ revenue_keywords = []
4561+ is_revenue_query, revenue_keywords = detect_revenue_query(chat_request.message)
4562+ if is_revenue_query:
4563+ logger.info(f"💰 Revenue query detected - will avoid origin template (matched: {revenue_keywords})")
45574564 except ImportError:
45584565 logger.warning("StillMe detector not available, skipping origin detection")
45594566 except Exception as detector_error:
45604567 logger.warning(f"StillMe detector error: {detector_error}")
45614568
4569+ # CRITICAL: Revenue query guard - return verified "no source" response (no origin template)
4570+ if 'is_revenue_query' in locals() and is_revenue_query:
4571+ try:
4572+ detected_lang = detected_lang or detect_language(chat_request.message)
4573+ except Exception as lang_error:
4574+ logger.warning(f"Language detection failed: {lang_error}, defaulting to 'vi'")
4575+ detected_lang = "vi"
4576+
4577+ if detected_lang == "vi":
4578+ revenue_response = (
4579+ "Mình không có thông tin đã được xác minh về doanh thu hoặc kế hoạch doanh thu của StillMe "
4580+ "trong Knowledge Base hiện tại, nên mình không thể khẳng định điều này.\n\n"
4581+ "Nếu bạn có nguồn cụ thể, bạn có thể chia sẻ để mình kiểm tra hoặc cập nhật.\n\n"
4582+ "Bạn có muốn chia sẻ nguồn hoặc mình trả lời theo giả định phổ biến không? (Có/Không)"
4583+ )
4584+ else:
4585+ revenue_response = (
4586+ "I don't have verified information about StillMe's revenue or revenue plans in the current "
4587+ "Knowledge Base, so I can't confirm this.\n\n"
4588+ "If you have a specific source, you can share it and I'll verify or update it.\n\n"
4589+ "Do you want to share a source or have me answer using common assumptions? (Yes/No)"
4590+ )
4591+
4592+ from backend.core.epistemic_state import EpistemicState
4593+ return ChatResponse(
4594+ response=revenue_response,
4595+ confidence_score=0.2,
4596+ processing_steps=["💰 Revenue query - no verified sources in KB"],
4597+ validation_info={},
4598+ timing={},
4599+ epistemic_state=EpistemicState.UNKNOWN.value
4600+ )
4601+
45624602 # CRITICAL: Identity Truth Override - If origin query, return SYSTEM_ORIGIN answer directly
45634603 # This MUST happen BEFORE any other early returns (honesty, AI_SELF_MODEL, philosophy, FPS)
45644604 if is_origin_query:
0 commit comments