v3接口restful风格,规范化接口;添加mcp服务器;新增log模块

This commit is contained in:
2026-01-19 23:54:29 +08:00
parent 389c13a2a7
commit 7c99e67a7f
14 changed files with 780 additions and 376 deletions

View File

@@ -1,5 +1,9 @@
from pydantic_settings import BaseSettings, SettingsConfigDict
import logging
# 获取当前模块的专用 Logger
# __name__ 会自动识别为 "backend.services.crawler_service" 这样的路径
logger = logging.getLogger(__name__)
class Settings(BaseSettings):
"""
系统配置类

View File

@@ -1,7 +1,11 @@
from sqlalchemy import create_engine, MetaData, Table
from pgvector.sqlalchemy import Vector
from .config import settings
import logging
# 获取当前模块的专用 Logger
# __name__ 会自动识别为 "backend.services.crawler_service" 这样的路径
logger = logging.getLogger(__name__)
class Database:
"""
数据库单例类
@@ -30,9 +34,9 @@ class Database:
self.tasks = Table('crawl_tasks', self.metadata, autoload_with=self.engine)
self.queue = Table('crawl_queue', self.metadata, autoload_with=self.engine)
self.chunks = Table('knowledge_chunks', self.metadata, autoload_with=self.engine)
print("[INFO] Database tables reflected successfully.")
logger.info("Database tables reflected successfully.")
except Exception as e:
print(f"[ERROR] Failed to reflect tables: {e}")
logger.error(f"Failed to reflect tables: {e}")
# 全局数据库实例
db = Database()

24
backend/core/logger.py Normal file
View File

@@ -0,0 +1,24 @@
# backend/core/logger.py
import logging
import sys
def setup_logging(level=logging.INFO):
"""
全局日志配置
关键点:强制将日志输出到 sys.stderr防止污染 sys.stdout 导致 MCP 协议崩溃。
"""
# 定义日志格式:时间 - 模块名 - 级别 - 内容
log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
# 配置根记录器
logging.basicConfig(
level=level,
format=log_format,
handlers=[
# 【绝对关键】使用 StreamHandler(sys.stderr)
# 这样日志会走标准错误通道,不会干扰 MCP 的标准输出通信
logging.StreamHandler(sys.stderr)
],
# 强制重新配置,防止被第三方库覆盖
force=True
)