Commit d20b1e77 authored by Vũ Hoàng Anh's avatar Vũ Hoàng Anh

Update project state

parent d21e9eec
...@@ -15,7 +15,7 @@ from langchain_core.messages import AIMessage, HumanMessage, ToolMessage ...@@ -15,7 +15,7 @@ from langchain_core.messages import AIMessage, HumanMessage, ToolMessage
from langchain_core.runnables import RunnableConfig from langchain_core.runnables import RunnableConfig
from common.conversation_manager import ConversationManager, get_conversation_manager from common.conversation_manager import ConversationManager, get_conversation_manager
from common.langfuse_client import get_callback_handler, langfuse_trace_context from common.langfuse_client import get_callback_handler
from common.llm_factory import create_llm from common.llm_factory import create_llm
from config import DEFAULT_MODEL from config import DEFAULT_MODEL
...@@ -73,8 +73,6 @@ async def chat_controller( ...@@ -73,8 +73,6 @@ async def chat_controller(
) )
try: try:
# 🔥 Wrap graph execution với langfuse_trace_context để set user_id cho tất cả observations
with langfuse_trace_context(user_id=user_id, session_id=user_id):
# TỐI ƯU: Chạy Graph # TỐI ƯU: Chạy Graph
result = await graph.ainvoke(initial_state, config=exec_config) result = await graph.ainvoke(initial_state, config=exec_config)
...@@ -106,7 +104,6 @@ async def chat_controller( ...@@ -106,7 +104,6 @@ async def chat_controller(
except (json.JSONDecodeError, Exception) as e: except (json.JSONDecodeError, Exception) as e:
# Nếu AI trả về text thường (hiếm khi xảy ra trong JSON mode) thì ignore # Nếu AI trả về text thường (hiếm khi xảy ra trong JSON mode) thì ignore
logger.warning(f"Could not parse AI response as JSON: {e}") logger.warning(f"Could not parse AI response as JSON: {e}")
pass
# BACKGROUND TASK: Lưu history nhanh gọn # BACKGROUND TASK: Lưu history nhanh gọn
background_tasks.add_task( background_tasks.add_task(
...@@ -266,7 +263,6 @@ async def mock_chat_controller( ...@@ -266,7 +263,6 @@ async def mock_chat_controller(
) )
try: try:
with langfuse_trace_context(user_id=user_id, session_id=user_id):
# Chạy Graph với tools THẬT # Chạy Graph với tools THẬT
result = await graph.ainvoke(initial_state, config=exec_config) result = await graph.ainvoke(initial_state, config=exec_config)
......
...@@ -10,10 +10,8 @@ import httpx ...@@ -10,10 +10,8 @@ import httpx
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# URL API Canifa
CANIFA_CUSTOMER_API = "https://vsf2.canifa.com/v1/magento/customer" CANIFA_CUSTOMER_API = "https://vsf2.canifa.com/v1/magento/customer"
# GraphQL Query Body giả lập (để lấy User Info)
CANIFA_QUERY_BODY = [ CANIFA_QUERY_BODY = [
{ {
"customer": "customer-custom-query", "customer": "customer-custom-query",
...@@ -24,7 +22,6 @@ CANIFA_QUERY_BODY = [ ...@@ -24,7 +22,6 @@ CANIFA_QUERY_BODY = [
{}, {},
] ]
async def verify_canifa_token(token: str) -> dict[str, Any] | None: async def verify_canifa_token(token: str) -> dict[str, Any] | None:
""" """
Verify token với API Canifa (Magento). Verify token với API Canifa (Magento).
...@@ -42,7 +39,7 @@ async def verify_canifa_token(token: str) -> dict[str, Any] | None: ...@@ -42,7 +39,7 @@ async def verify_canifa_token(token: str) -> dict[str, Any] | None:
headers = { headers = {
"accept": "application/json, text/plain, */*", "accept": "application/json, text/plain, */*",
"content-type": "application/json", "content-type": "application/json",
"Cookie": f"vsf-customer={token}", # Quan trọng: Gửi token dưới dạng Cookie "Cookie": f"vsf-customer={token}",
} }
try: try:
......
import asyncio
import json import json
import logging import logging
import asyncio from datetime import datetime
from datetime import datetime, date
from typing import Any from typing import Any
import psycopg import psycopg
...@@ -147,8 +147,7 @@ class ConversationManager: ...@@ -147,8 +147,7 @@ class ConversationManager:
final_query = sql.SQL(" ").join(query_parts) final_query = sql.SQL(" ").join(query_parts)
pool = await self._get_pool() pool = await self._get_pool()
async with pool.connection() as conn: async with pool.connection() as conn, conn.cursor() as cursor:
async with conn.cursor() as cursor:
await cursor.execute(final_query, tuple(params)) await cursor.execute(final_query, tuple(params))
results = await cursor.fetchall() results = await cursor.fetchall()
......
...@@ -12,6 +12,6 @@ docker restart chatbot-backend && docker logs -f chatbot-backend ...@@ -12,6 +12,6 @@ docker restart chatbot-backend && docker logs -f chatbot-backend
docker logs -f chatbot-backend docker logs -f chatbot-backend
docker restart chatbot-backend docker restart canifa_backend
sudo docker compose -f docker-compose.prod.yml up -d --build sudo docker compose -f docker-compose.prod.yml up -d --build
...@@ -20,7 +20,7 @@ from common.langfuse_client import get_langfuse_client ...@@ -20,7 +20,7 @@ from common.langfuse_client import get_langfuse_client
from common.middleware import middleware_manager from common.middleware import middleware_manager
from config import PORT from config import PORT
# Configure Logging # Configure LoggingP
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
...@@ -67,12 +67,16 @@ app.include_router(conservation_router) ...@@ -67,12 +67,16 @@ app.include_router(conservation_router)
app.include_router(chatbot_router) app.include_router(chatbot_router)
app.include_router(prompt_router) app.include_router(prompt_router)
from api.mock_api_route import router as mock_router
app.include_router(mock_router)
print("✅ Mock API Router mounted at /api/mock")
# --- MOCK API FOR LOAD TESTING --- # --- MOCK API FOR LOAD TESTING ---
try: try:
from api.mock_api_route import router as mock_router from api.mock_api_route import router as mock_router
app.include_router(mock_router) app.include_router(mock_router, prefix="/api")
print("✅ Mock API Router mounted at /api/mock") print("✅ Mock API Router mounted at /api/mock")
except ImportError: except ImportError:
print("⚠️ Mock Router not found, skipping...") print("⚠️ Mock Router not found, skipping...")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment