原文链接
https://novusai-saas.github.io/en/en/docs/business-services/business-services.md业务服务层
本文引用的源码与文档
本文引用的文件
- backend/app/core/base_service.py
- backend/app/services/ai/agent_service.py
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/tenant_quota_service.py
- backend/app/services/common/auth_service.py
- backend/app/ai/internal_ai_service.py
- backend/app/ai/retry_service.py
- backend/app/core/deps.py
- backend/app/core/database.py
- backend/app/core/redis.py
- backend/app/repositories/ai/agent_repository.py
- backend/app/repositories/ai/conversation_repository.py
- backend/app/models/ai/agent.py
- backend/app/models/ai/conversation.py
- backend/app/schemas/ai/agent.py
- backend/app/schemas/ai/conversation.py
- backend/app/enums/ai.py
- backend/app/enums/cache.py
- backend/app/exceptions/base.py
- backend/app/middleware/trace.py
- backend/app/middleware/prometheus_metrics.py
- backend/tests/services/ai/test_agent_service.py
- backend/tests/services/ai/test_conversation_service.py
- backend/tests/services/common/test_auth_service.py
目录
引言
本文件面向业务服务层,系统性阐述服务层架构、事务管理、服务间组合模式、依赖注入与生命周期管理、业务规则与数据校验、异常处理、性能优化与并发控制、服务与仓储层交互模式及数据传输对象(DTO)设计,并提供测试策略与最佳实践案例。目标是帮助开发者在不深入源码的前提下,快速理解并高效扩展业务服务。
项目结构
后端采用“按领域分层+按功能分包”的组织方式:services 存放业务服务;repositories 提供仓储实现;models/schemas 定义实体与传输模型;core 提供基础设施(依赖注入、数据库、Redis 等)。AI 领域服务以 ai 命名空间聚合,tenant/system/common 等命名空间分别覆盖租户、系统与通用能力。
图表来源
- backend/app/services/ai/agent_service.py
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/tenant_quota_service.py
- backend/app/services/common/auth_service.py
- backend/app/core/deps.py
- backend/app/core/database.py
- backend/app/core/redis.py
- backend/app/repositories/ai/agent_repository.py
- backend/app/repositories/ai/conversation_repository.py
- backend/app/models/ai/agent.py
- backend/app/models/ai/conversation.py
- backend/app/schemas/ai/agent.py
- backend/app/schemas/ai/conversation.py
章节来源
- backend/app/services/ai/agent_service.py
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/tenant_quota_service.py
- backend/app/services/common/auth_service.py
- backend/app/core/deps.py
- backend/app/core/database.py
- backend/app/core/redis.py
核心组件
- 基础设施与依赖注入
- 依赖注入容器与工厂:通过依赖注入模块集中管理服务实例与外部资源(数据库连接、Redis 连接等),确保服务解耦与可替换性。
- 数据库 与事务:数据库会话管理与事务边界由基础设施统一提供,服务层在方法粒度声明事务语义。
- 缓存:Redis 统一接入,支持读写分离与失效策略。
- 业务服务
- AI 领域服务:Agent、对话、配额、租户限额、运行时诊断等服务,负责编排仓储与跨域协作。
- 通用服务:认证服务等横切能力。
- 仓储层
- 聚合查询与持久化:面向模型的仓储封装,屏蔽 SQL 细节,暴露领域语义操作。
- 模型与 DTO
- 模型:映射数据库表结构,承载状态与约束。
- DTO:用于接口层与服务层之间的数据传输,保证契约稳定与序列化安全。
章节来源
- backend/app/core/base_service.py
- backend/app/core/deps.py
- backend/app/core/database.py
- backend/app/core/redis.py
架构总览
服务层遵循“职责单一、组合编排、事务边界清晰”的原则。服务之间通过依赖注入进行装 配,避免硬编码耦合;对外通过 DTO 传递数据,对内通过仓储访问模型;异常与监控贯穿全链路。
图表来源
- backend/app/services/ai/agent_service.py
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/tenant_quota_service.py
- backend/app/services/common/auth_service.py
- backend/app/core/deps.py
- backend/app/core/database.py
- backend/app/core/redis.py
详细组件分析
Agent 服务(AI 领域)
- 角色与职责
- 负责智能体的创建、查询、版本化、可见性与访问控制等业务编排。
- 协调知识库绑定、路由策略、内存与信任策略等子服务。
- 事务与并发
- 关键写入操作在单事务中完成,失败回滚;并发冲突通过唯一约束与重试策略处理。
- 依赖注入与生命周期
- 通过依赖注入容器注入仓储、缓存、内部 AI 服务与重试器;服务实例按请求/会话生命周期管理。
- 与仓储交互
- 使用 Agent 仓储执行 CRUD 与复杂查询;返回模型或投影 DTO。
- 业务规则与校验
- 输入参数校验、可见性范围校验、访问授权校验、版本一致性校验。
- 异常处理
- 包装领域异常为统一错误码与消息;记录追踪 ID 便于定位。
图表来源
- backend/app/services/ai/agent_service.py
- backend/app/repositories/ai/agent_repository.py
- backend/app/ai/internal_ai_service.py
- backend/app/ai/retry_service.py
章节来源
- backend/app/services/ai/agent_service.py
- backend/app/repositories/ai/agent_repository.py
- backend/app/ai/internal_ai_service.py
- backend/app/ai/retry_service.py
对话服务(AI 领域)
- 角色与职责
- 负责对话回合的生成、持久化、流式输出与统计分析。
- 协调内存、上下文、输出解析与持久化编排。
- 事务与并发
- 回合写入与计费在事务中完成;并发写入通过乐观锁与幂等键保障。
- 依赖注入与生命周期
- 注入对话仓储、内存服务、持久化编排器、指标中间件等。
- 与仓储交互
- 使用对话仓储与消息仓储进行读写;返回投影 DTO 与只读视图。
- 业务规则与校验
- 输入负载清洗、交互模式校验、配额与速率限制检查、输出格式校验。
- 异常处理
- 将底层异常归一化,携带追踪 ID 与建议重试策略。
图表来源
- backend/app/services/ai/conversation_service.py
- backend/app/services/ai/session_memory_service.py
- backend/app/services/ai/conversation_message_persistence_service.py
- backend/app/repositories/ai/conversation_repository.py
章节来源
- backend/app/services/ai/conversation_service.py
- backend/app/repositories/ai/conversation_repository.py