Merge branch 'refactor/backend-architecture' into development

This commit is contained in:
yangshilin
2026-03-18 17:18:23 +08:00
parent 2070a03d35
commit 48b70e1350
266 changed files with 12386 additions and 9690 deletions

View File

@@ -24,7 +24,6 @@
"""
import argparse
import json
import logging
import os
import sys
import uuid
@@ -36,9 +35,7 @@ from dataclasses import dataclass, field, asdict
# 确保 api/ 目录在 sys.path 中
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from dotenv import load_dotenv
load_dotenv()
# 配置由 app.core.config.settings 统一加载
import socket
import subprocess
@@ -47,23 +44,24 @@ import signal
from sqlalchemy import create_engine, select
from sqlalchemy.orm import sessionmaker, Session
from database.models import Base, User, Conversation, Segment, Chapter, ChapterSection, Book, MemoirState
from services.llm_service import LLMService
from agents.state_schema import MemoirStateSchema, SlotData, default_state
from agents.prompts.memory_prompts import (
from app.core.db import Base
from app.features.conversation.models import Conversation, Segment
from app.features.memoir.models import Book, Chapter, ChapterSection, MemoirState
from app.features.user.models import User
from app.core.dependencies import get_llm_provider
from app.agents.state_schema import MemoirStateSchema, SlotData, default_state
from app.agents.prompts.memory_prompts import (
get_creative_title_prompt,
get_narrative_prompt,
get_state_extraction_prompt,
inject_image_placeholder_template,
STAGE_TO_ORDER,
)
from services.memoir_images.parser import split_narrative_to_sections
from app.features.memoir.memoir_images.parser import split_narrative_to_sections
from app.core.logging import get_logger, setup_logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
)
logger = logging.getLogger(__name__)
setup_logging()
logger = get_logger(__name__)
# ── SSH / DB 配置 ──────────────────────────────────────────────
@@ -163,7 +161,7 @@ def open_ssh_tunnel() -> SshTunnel:
def make_session(tunnel: SshTunnel) -> Session:
url = (
f"postgresql+psycopg://{PG_USER}:{PG_PASSWORD}"
f"postgresql://{PG_USER}:{PG_PASSWORD}"
f"@127.0.0.1:{tunnel.local_bind_port}/{PG_DATABASE}"
)
engine = create_engine(url, pool_size=2, max_overflow=2)
@@ -332,7 +330,7 @@ def generate_chapters_in_memory(
def cmd_preview(phone: str, batch_size: int, skip_llm_slots: bool):
# LLM
llm = LLMService().get_llm()
llm = getattr(get_llm_provider(), "langchain_llm", None)
if not llm:
logger.error("LLM 未配置,请检查 .env 中的 DEEPSEEK_API_KEY")
sys.exit(1)