luojunhui 1 týždeň pred
rodič
commit
263cc96a38
42 zmenil súbory, kde vykonal 94 pridanie a 94 odobranie
  1. 1 1
      app.py
  2. 9 9
      src/__init__.py
  3. 4 4
      src/config/__init__.py
  4. 0 0
      src/config/aliyun.py
  5. 1 1
      src/config/database.py
  6. 4 4
      src/config/global_config.py
  7. 1 1
      src/config/xxljob.py
  8. 5 5
      src/core/__init__.py
  9. 4 4
      src/core/agent/__init__.py
  10. 2 2
      src/core/agent/base.py
  11. 0 0
      src/core/agent/memory.py
  12. 1 1
      src/core/agent/orchestrator.py
  13. 0 0
      src/core/agent/tool.py
  14. 0 0
      src/core/bootstrap.py
  15. 2 2
      src/handlers/__init__.py
  16. 3 3
      src/handlers/_discovery.py
  17. 1 1
      src/handlers/test_hello_world.py
  18. 4 4
      src/infra/__init__.py
  19. 6 6
      src/infra/database/__init__.py
  20. 5 5
      src/infra/database/manager.py
  21. 1 1
      src/infra/database/milvus.py
  22. 1 1
      src/infra/database/mysql.py
  23. 0 0
      src/infra/database/ports.py
  24. 1 1
      src/infra/database/postgresql.py
  25. 1 1
      src/infra/database/redis.py
  26. 2 2
      src/infra/observability/__init__.py
  27. 0 0
      src/infra/observability/log_schema.py
  28. 3 3
      src/infra/observability/logging.py
  29. 0 0
      src/infra/shared/__init__.py
  30. 0 0
      src/infra/shared/async_tasks.py
  31. 0 0
      src/infra/shared/http_client.py
  32. 0 0
      src/infra/shared/tools.py
  33. 10 0
      src/infra/xxl_jobs/__init__.py
  34. 1 1
      src/infra/xxl_jobs/xxl_decorator.py
  35. 2 2
      src/infra/xxl_jobs/xxl_executor.py
  36. 10 0
      src/server/__init__.py
  37. 7 7
      src/server/app.py
  38. 0 0
      src/server/endpoints.py
  39. 2 2
      src/server/routes.py
  40. 0 0
      src/server/xxl_endpoints.py
  41. 0 10
      supply/infra/xxl_jobs/__init__.py
  42. 0 10
      supply/server/__init__.py

+ 1 - 1
app.py

@@ -4,7 +4,7 @@
     hypercorn app:app --bind 0.0.0.0:8000
 """
 
-from supply.server import create_app, server_routes, xxl_routes
+from src.server import create_app, server_routes, xxl_routes
 
 app = create_app()
 

+ 9 - 9
supply/__init__.py → src/__init__.py

@@ -2,17 +2,17 @@
 
 层次结构(由内到外):
   ┌─────────────────┐
-  │  supply.config  │  配置管理
+  │  src.config  │  配置管理
   ├─────────────────┤
-  │  supply.infra   │  基础设施(DB / HTTP / 日志 / 工具)
+  │  src.infra   │  基础设施(DB / HTTP / 日志 / 工具)
   ├─────────────────┤
-  │  supply.core    │  框架内核(Agent / Tool / Memory / Orchestrator)
+  │  src.core    │  框架内核(Agent / Tool / Memory / Orchestrator)
   ├─────────────────┤
-  │  supply.server  │  应用服务(Quart / XXL)
+  │  src.server  │  应用服务(Quart / XXL)
   └─────────────────┘
 
 快速开始:
-    from supply import (
+    from src import (
         Agent, Tool, ToolRegistry,          # 领域层
         DatabaseManager, LogService,         # 设施层
         create_app,                          # 服务层
@@ -20,7 +20,7 @@
 """
 
 # 配置
-from supply.config import (
+from src.config import (
     GlobalConfig,
     DatabaseConfig,
     AliyunLogConfig,
@@ -31,7 +31,7 @@ from supply.config import (
 )
 
 # 基础设施
-from supply.infra import (
+from src.infra import (
     DatabaseManager,
     create_backend,
     MySQLBackend,
@@ -44,7 +44,7 @@ from supply.infra import (
 )
 
 # 领域
-from supply.core import (
+from src.core import (
     Agent,
     AgentContext,
     AgentResult,
@@ -61,7 +61,7 @@ from supply.core import (
 )
 
 # 服务
-from supply.server import create_app
+from src.server import create_app
 
 __all__ = [
     # Config

+ 4 - 4
supply/config/__init__.py → src/config/__init__.py

@@ -1,6 +1,6 @@
 """配置层 —— 所有 pydantic-settings 配置模型,环境变量驱动"""
 
-from supply.config.database import (
+from src.config.database import (
     DatabaseConfig,
     AigcDatabaseConfig,
     LongVideoDatabaseConfig,
@@ -12,9 +12,9 @@ from supply.config.database import (
     MilvusConfig,
     RedisConfig,
 )
-from supply.config.aliyun import AliyunLogConfig, AliyunOssConfig
-from supply.config.xxljob import XxlJobConfig
-from supply.config.global_config import GlobalConfig
+from src.config.aliyun import AliyunLogConfig, AliyunOssConfig
+from src.config.xxljob import XxlJobConfig
+from src.config.global_config import GlobalConfig
 
 __all__ = [
     "DatabaseConfig",

+ 0 - 0
supply/config/aliyun.py → src/config/aliyun.py


+ 1 - 1
supply/config/database.py → src/config/database.py

@@ -115,7 +115,7 @@ class ContentDeconstructionSupplyConfig(DatabaseConfig):
     host: str = "rm-t4nh1xx6o2a6vj8qu3o.mysql.singapore.rds.aliyuncs.com"
     user: str = "content_rw"
     password: str = "bC1aH4bA1lB0"
-    db: str = "content-deconstruction-supply"
+    db: str = "content-deconstruction-src"
 
     model_config = SettingsConfigDict(
         env_prefix="CONTENT_DECONSREUCTION_DB_",

+ 4 - 4
supply/config/global_config.py → src/config/global_config.py

@@ -3,7 +3,7 @@
 from pydantic import Field
 from pydantic_settings import BaseSettings, SettingsConfigDict
 
-from supply.config.database import (
+from src.config.database import (
     AigcDatabaseConfig,
     LongVideoDatabaseConfig,
     LongArticlesDatabaseConfig,
@@ -11,8 +11,8 @@ from supply.config.database import (
     GrowthDatabaseConfig,
     ContentDeconstructionSupplyConfig,
 )
-from supply.config.aliyun import AliyunLogConfig, AliyunOssConfig
-from supply.config.xxljob import XxlJobConfig
+from src.config.aliyun import AliyunLogConfig, AliyunOssConfig
+from src.config.xxljob import XxlJobConfig
 
 
 class GlobalConfig(BaseSettings):
@@ -29,7 +29,7 @@ class GlobalConfig(BaseSettings):
 
     # ============ 应用基础配置 ============
     app_name: str = Field(
-        default="long-articles-agentic-supply",
+        default="long-articles-agentic-src",
         description="应用名称,用于 XXL-JOB 执行器注册和日志标识",
     )
     environment: str = Field(

+ 1 - 1
supply/config/xxljob.py → src/config/xxljob.py

@@ -37,7 +37,7 @@ class XxlJobConfig(BaseSettings):
 
     # 执行器标识
     app_name: str = Field(
-        default="long-articles-agentic-supply",
+        default="long-articles-agentic-src",
         description="执行器 AppName,Admin 通过此名称识别执行器",
         min_length=1,
     )

+ 5 - 5
supply/core/__init__.py → src/core/__init__.py

@@ -5,7 +5,7 @@ Agent/Tool/Memory/Orchestrator 契约定义在此层。
 """
 
 # 配置
-from supply.config import (
+from src.config import (
     DatabaseConfig,
     AliyunLogConfig,
     AliyunOssConfig,
@@ -21,10 +21,10 @@ from supply.config import (
 )
 
 # 数据库
-from supply.infra.database import DatabaseManager, create_backend
+from src.infra.database import DatabaseManager, create_backend
 
 # 可观测性
-from supply.infra.observability import (
+from src.infra.observability import (
     LogService,
     LogRecord,
     LogLevel,
@@ -33,10 +33,10 @@ from supply.infra.observability import (
 )
 
 # 生命周期
-from supply.core.bootstrap import AppContext
+from src.core.bootstrap import AppContext
 
 # Agent 框架内核
-from supply.core.agent import (
+from src.core.agent import (
     Agent,
     AgentContext,
     AgentResult,

+ 4 - 4
supply/core/agent/__init__.py → src/core/agent/__init__.py

@@ -1,9 +1,9 @@
 """Agent 领域层 —— Agent/Tool/Memory/Orchestrator 核心抽象"""
 
-from supply.core.agent.base import Agent, AgentContext, AgentResult, AgentStatus
-from supply.core.agent.tool import Tool, ToolResult, ToolRegistry
-from supply.core.agent.memory import Memory, Message, ConversationMemory, VectorMemory
-from supply.core.agent.orchestrator import (
+from src.core.agent.base import Agent, AgentContext, AgentResult, AgentStatus
+from src.core.agent.tool import Tool, ToolResult, ToolRegistry
+from src.core.agent.memory import Memory, Message, ConversationMemory, VectorMemory
+from src.core.agent.orchestrator import (
     AgentOrchestrator,
     ChainOrchestrator,
     ParallelOrchestrator,

+ 2 - 2
supply/core/agent/base.py → src/core/agent/base.py

@@ -11,8 +11,8 @@ from dataclasses import dataclass, field
 from enum import Enum
 from typing import Any, Dict, List, Optional
 
-from supply.core.agent.tool import Tool
-from supply.core.agent.memory import Memory
+from src.core.agent.tool import Tool
+from src.core.agent.memory import Memory
 
 
 # ==================== Agent 状态 ====================

+ 0 - 0
supply/core/agent/memory.py → src/core/agent/memory.py


+ 1 - 1
supply/core/agent/orchestrator.py → src/core/agent/orchestrator.py

@@ -12,7 +12,7 @@ import logging
 from abc import ABC, abstractmethod
 from typing import Any, Dict, List, Optional
 
-from supply.core.agent.base import Agent, AgentContext, AgentResult, AgentStatus
+from src.core.agent.base import Agent, AgentContext, AgentResult, AgentStatus
 
 logger = logging.getLogger(__name__)
 

+ 0 - 0
supply/core/agent/tool.py → src/core/agent/tool.py


+ 0 - 0
supply/core/bootstrap.py → src/core/bootstrap.py


+ 2 - 2
supply/handlers/__init__.py → src/handlers/__init__.py

@@ -4,10 +4,10 @@ Handler 通过 discover_and_register() 在应用启动时自动发现。
 每个 handler 模块用 @xxl_job 装饰器自注册,无需手动 import。
 
 用法:
-    from supply.handlers import discover_and_register
+    from src.handlers import discover_and_register
     discover_and_register()
 """
 
-from supply.handlers._discovery import discover_and_register
+from src.handlers._discovery import discover_and_register
 
 __all__ = ["discover_and_register"]

+ 3 - 3
supply/handlers/_discovery.py → src/handlers/_discovery.py

@@ -1,6 +1,6 @@
 """XXL-JOB handler 自动发现 —— pkgutil + importlib 扫描导入
 
-扫描 supply.handlers 包下的所有非私有模块,逐一 import,
+扫描 src.handlers 包下的所有非私有模块,逐一 import,
 触发 @xxl_job 装饰器将 handler 注册到 _XXL_REGISTRY。
 """
 
@@ -11,7 +11,7 @@ import pkgutil
 logger = logging.getLogger(__name__)
 
 
-def discover_and_register(package: str = "supply.handlers") -> None:
+def discover_and_register(package: str = "src.handlers") -> None:
     """自动发现并导入 package 下的所有 handler 模块
 
     跳过 _ 前缀的私有模块和子包。每个模块被 import 时,
@@ -20,7 +20,7 @@ def discover_and_register(package: str = "supply.handlers") -> None:
     幂等调用:importlib 使用 sys.modules 缓存,重复调用是 no-op。
 
     Args:
-        package: 点分隔的 Python 包路径,默认 "supply.handlers"
+        package: 点分隔的 Python 包路径,默认 "src.handlers"
     """
     try:
         pkg = importlib.import_module(package)

+ 1 - 1
supply/handlers/test_hello_world.py → src/handlers/test_hello_world.py

@@ -2,7 +2,7 @@
 
 import logging
 
-from supply.infra.xxl_jobs.xxl_decorator import xxl_job
+from src.infra.xxl_jobs.xxl_decorator import xxl_job
 
 logger = logging.getLogger(__name__)
 

+ 4 - 4
supply/infra/__init__.py → src/infra/__init__.py

@@ -1,6 +1,6 @@
 """基础设施层 —— 数据库后端、HTTP 客户端、日志服务、工具函数等底层能力"""
 
-from supply.infra.database import (
+from src.infra.database import (
     BaseBackend,
     SqlBackend,
     VectorBackend,
@@ -13,7 +13,7 @@ from supply.infra.database import (
     DatabaseManager,
     create_backend,
 )
-from supply.infra.observability import (
+from src.infra.observability import (
     LogCategory,
     LogLevel,
     LogStatus,
@@ -21,7 +21,7 @@ from supply.infra.observability import (
     LogService,
     SLS_INDEX_CONFIG,
 )
-from supply.infra.shared import (
+from src.infra.shared import (
     AsyncHttpClient,
     run_tasks_with_async_worker_group,
     run_tasks_with_asyncio_task_group,
@@ -32,7 +32,7 @@ from supply.infra.shared import (
     timestamp_to_str,
     days_remaining_in_month,
 )
-from supply.infra.xxl_jobs import (
+from src.infra.xxl_jobs import (
     XxlJobConfig,
     xxl_job,
     xxl_registry,

+ 6 - 6
supply/infra/database/__init__.py → src/infra/database/__init__.py

@@ -1,17 +1,17 @@
 """数据库设施层 —— 抽象接口、具体后端、门面管理器"""
 
-from supply.infra.database.ports import (
+from src.infra.database.ports import (
     BackendType,
     BaseBackend,
     SqlBackend,
     VectorBackend,
     KvBackend,
 )
-from supply.infra.database.mysql import MySQLBackend
-from supply.infra.database.postgresql import PgBackend
-from supply.infra.database.milvus import MilvusBackend
-from supply.infra.database.redis import RedisBackend
-from supply.infra.database.manager import DatabaseManager, create_backend
+from src.infra.database.mysql import MySQLBackend
+from src.infra.database.postgresql import PgBackend
+from src.infra.database.milvus import MilvusBackend
+from src.infra.database.redis import RedisBackend
+from src.infra.database.manager import DatabaseManager, create_backend
 
 __all__ = [
     "BackendType",

+ 5 - 5
supply/infra/database/manager.py → src/infra/database/manager.py

@@ -9,15 +9,15 @@
 import logging
 from typing import Any, Dict, List, Optional
 
-from supply.infra.database.ports import (
+from src.infra.database.ports import (
     BackendType,
     BaseBackend,
     SqlBackend,
 )
-from supply.infra.database.mysql import MySQLBackend
-from supply.infra.database.postgresql import PgBackend
-from supply.infra.database.milvus import MilvusBackend
-from supply.infra.database.redis import RedisBackend
+from src.infra.database.mysql import MySQLBackend
+from src.infra.database.postgresql import PgBackend
+from src.infra.database.milvus import MilvusBackend
+from src.infra.database.redis import RedisBackend
 
 logger = logging.getLogger(__name__)
 

+ 1 - 1
supply/infra/database/milvus.py → src/infra/database/milvus.py

@@ -6,7 +6,7 @@
 import logging
 from typing import Any, Optional
 
-from supply.infra.database.ports import VectorBackend
+from src.infra.database.ports import VectorBackend
 
 logger = logging.getLogger(__name__)
 

+ 1 - 1
supply/infra/database/mysql.py → src/infra/database/mysql.py

@@ -5,7 +5,7 @@ from typing import Any, Optional
 
 from aiomysql import create_pool, DictCursor
 
-from supply.infra.database.ports import SqlBackend
+from src.infra.database.ports import SqlBackend
 
 logger = logging.getLogger(__name__)
 

+ 0 - 0
supply/infra/database/ports.py → src/infra/database/ports.py


+ 1 - 1
supply/infra/database/postgresql.py → src/infra/database/postgresql.py

@@ -6,7 +6,7 @@
 import logging
 from typing import Any, Optional
 
-from supply.infra.database.ports import SqlBackend
+from src.infra.database.ports import SqlBackend
 
 logger = logging.getLogger(__name__)
 

+ 1 - 1
supply/infra/database/redis.py → src/infra/database/redis.py

@@ -6,7 +6,7 @@
 import logging
 from typing import Any, Optional
 
-from supply.infra.database.ports import KvBackend
+from src.infra.database.ports import KvBackend
 
 logger = logging.getLogger(__name__)
 

+ 2 - 2
supply/infra/observability/__init__.py → src/infra/observability/__init__.py

@@ -1,13 +1,13 @@
 """可观测性设施层 —— 结构化日志模型、SLS 索引定义、日志服务"""
 
-from supply.infra.observability.log_schema import (
+from src.infra.observability.log_schema import (
     LogCategory,
     LogLevel,
     LogStatus,
     LogRecord,
     SLS_INDEX_CONFIG,
 )
-from supply.infra.observability.logging import LogService
+from src.infra.observability.logging import LogService
 
 __all__ = [
     "LogCategory",

+ 0 - 0
supply/infra/observability/log_schema.py → src/infra/observability/log_schema.py


+ 3 - 3
supply/infra/observability/logging.py → src/infra/observability/logging.py

@@ -17,8 +17,8 @@ from typing import Optional
 
 from aliyun.log import LogClient, LogItem, PutLogsRequest
 
-from supply.config.aliyun import AliyunLogConfig
-from supply.infra.observability.log_schema import LogRecord
+from src.config.aliyun import AliyunLogConfig
+from src.infra.observability.log_schema import LogRecord
 
 logger = logging.getLogger(__name__)
 
@@ -106,7 +106,7 @@ class LogService:
             level_str = str(contents.pop("level", "INFO")).upper()
             category_str = str(contents.pop("category", "system")).lower()
             try:
-                from supply.infra.observability.log_schema import LogLevel, LogCategory
+                from src.infra.observability.log_schema import LogLevel, LogCategory
 
                 level = (
                     LogLevel(level_str)

+ 0 - 0
supply/infra/shared/__init__.py → src/infra/shared/__init__.py


+ 0 - 0
supply/infra/shared/async_tasks.py → src/infra/shared/async_tasks.py


+ 0 - 0
supply/infra/shared/http_client.py → src/infra/shared/http_client.py


+ 0 - 0
supply/infra/shared/tools.py → src/infra/shared/tools.py


+ 10 - 0
src/infra/xxl_jobs/__init__.py

@@ -0,0 +1,10 @@
+from src.config.xxljob import XxlJobConfig
+from src.infra.xxl_jobs.xxl_decorator import xxl_job, xxl_registry
+from src.infra.xxl_jobs.xxl_executor import XxlJobExecutor
+
+__all__ = [
+    "XxlJobConfig",
+    "xxl_job",
+    "xxl_registry",
+    "XxlJobExecutor",
+]

+ 1 - 1
supply/infra/xxl_jobs/xxl_decorator.py → src/infra/xxl_jobs/xxl_decorator.py

@@ -1,7 +1,7 @@
 """XXL-JOB 任务注册装饰器 —— 对标 Java @XxlJob 注解
 
 使用方式:
-    from supply.infra.xxl_jobs.xxl_decorator import xxl_job, xxl_registry
+    from src.infra.xxl_jobs.xxl_decorator import xxl_job, xxl_registry
 
     @xxl_job("myJobHandler")
     async def my_job(param: str) -> dict:

+ 2 - 2
supply/infra/xxl_jobs/xxl_executor.py → src/infra/xxl_jobs/xxl_executor.py

@@ -14,8 +14,8 @@ from typing import Any, Dict, Optional
 
 import aiohttp
 
-from supply.config.xxljob import XxlJobConfig
-from supply.infra.xxl_jobs.xxl_decorator import xxl_registry
+from src.config.xxljob import XxlJobConfig
+from src.infra.xxl_jobs.xxl_decorator import xxl_registry
 
 logger = logging.getLogger(__name__)
 

+ 10 - 0
src/server/__init__.py

@@ -0,0 +1,10 @@
+from src.server.app import create_app
+from src.server.endpoints import create_health_bp
+from src.server.routes import server_routes, xxl_routes
+
+__all__ = [
+    "create_app",
+    "create_health_bp",
+    "server_routes",
+    "xxl_routes",
+]

+ 7 - 7
supply/server/app.py → src/server/app.py

@@ -5,13 +5,13 @@ import logging
 from quart import Quart
 from quart_cors import cors
 
-from supply.core.bootstrap import AppContext
-from supply.config import GlobalConfig
-from supply.infra.database.manager import DatabaseManager, create_backend
-from supply.infra.observability.logging import LogService
-from supply.infra.xxl_jobs import XxlJobExecutor
-from supply.handlers import discover_and_register
-from supply.server.xxl_endpoints import set_xxl_executor
+from src.core.bootstrap import AppContext
+from src.config import GlobalConfig
+from src.infra.database.manager import DatabaseManager, create_backend
+from src.infra.observability.logging import LogService
+from src.infra.xxl_jobs import XxlJobExecutor
+from src.handlers import discover_and_register
+from src.server.xxl_endpoints import set_xxl_executor
 
 logger = logging.getLogger(__name__)
 

+ 0 - 0
supply/server/endpoints.py → src/server/endpoints.py


+ 2 - 2
supply/server/routes.py → src/server/routes.py

@@ -1,8 +1,8 @@
 """路由注册"""
 
 from quart import Blueprint
-from supply.server.endpoints import create_health_bp
-from supply.server.xxl_endpoints import create_xxl_bp
+from src.server.endpoints import create_health_bp
+from src.server.xxl_endpoints import create_xxl_bp
 
 
 def server_routes() -> Blueprint:

+ 0 - 0
supply/server/xxl_endpoints.py → src/server/xxl_endpoints.py


+ 0 - 10
supply/infra/xxl_jobs/__init__.py

@@ -1,10 +0,0 @@
-from supply.config.xxljob import XxlJobConfig
-from supply.infra.xxl_jobs.xxl_decorator import xxl_job, xxl_registry
-from supply.infra.xxl_jobs.xxl_executor import XxlJobExecutor
-
-__all__ = [
-    "XxlJobConfig",
-    "xxl_job",
-    "xxl_registry",
-    "XxlJobExecutor",
-]

+ 0 - 10
supply/server/__init__.py

@@ -1,10 +0,0 @@
-from supply.server.app import create_app
-from supply.server.endpoints import create_health_bp
-from supply.server.routes import server_routes, xxl_routes
-
-__all__ = [
-    "create_app",
-    "create_health_bp",
-    "server_routes",
-    "xxl_routes",
-]