#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 内容生成相关接口定义 采用依赖倒置原则,API层依赖接口而非具体实现 """ from abc import ABC, abstractmethod from typing import Dict, List, Any, Optional, Tuple from dataclasses import dataclass @dataclass class TopicRequest: """主题生成请求""" user_requirements: str count: int = 5 style: str = "default" @dataclass class ContentRequest: """内容生成请求""" topic: Dict[str, Any] style: str = "default" length: str = "medium" @dataclass class ContentResult: """内容生成结果""" content: str metadata: Dict[str, Any] success: bool error_message: Optional[str] = None class ITopicGenerator(ABC): """主题生成器接口""" @abstractmethod async def generate_topics(self, request: TopicRequest) -> List[Dict[str, Any]]: """生成主题列表""" pass class IContentGenerator(ABC): """内容生成器接口""" @abstractmethod async def generate_content(self, request: ContentRequest) -> ContentResult: """生成内容""" pass class IContentJudger(ABC): """内容审核器接口""" @abstractmethod async def judge_content(self, content: str) -> Tuple[bool, str, float]: """审核内容质量""" pass class IContentService(ABC): """内容服务接口 - 应用服务层""" @abstractmethod async def create_complete_content( self, user_requirements: str, count: int = 5, style: str = "default" ) -> Dict[str, Any]: """完整的内容创作流程""" pass @abstractmethod async def generate_topics_only(self, request: TopicRequest) -> List[Dict[str, Any]]: """仅生成主题""" pass @abstractmethod async def generate_content_from_topic( self, topic: Dict[str, Any], style: str = "default" ) -> ContentResult: """根据主题生成内容""" pass