""" 显示模块 - 负责将转写结果显示给用户 """ from rich.console import Console from rich.text import Text from typing import Literal import logging # 配置日志 def setup_logger(name, level=logging.INFO): """设置日志记录器""" logger = logging.getLogger(name) # 清除所有已有的handler,避免重复 if logger.handlers: logger.handlers.clear() # 添加新的handler handler = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(level) # 禁止传播到父logger,避免重复日志 logger.propagate = False return logger # 创建日志记录器 logger = setup_logger("display") # 创建控制台对象 console = Console() class OutputRenderer: """ 输出渲染器,负责将转写结果显示给用户 支持原始文本和优化后文本的不同样式显示 """ def __init__(self): """初始化输出渲染器""" self.history = {} # 用于更新同一条句子的优化内容 logger.debug("输出渲染器初始化完成") def display(self, sentence_id: str, text: str, state: Literal["raw", "optimized"]): """ 显示转写结果 :param sentence_id: 句子ID :param text: 文本内容 :param state: 状态,raw表示原始文本,optimized表示优化后文本 """ if state == "raw": styled_text = Text(text, style="dim") # 灰色表示原始输出 logger.debug(f"显示原始文本: {sentence_id}") elif state == "optimized": styled_text = Text(text, style="bold black") # 深黑色加粗 logger.debug(f"显示优化文本: {sentence_id}") else: logger.error(f"未知的输出状态: {state}") raise ValueError(f"未知的输出状态: {state}") # 打印新内容(或替换历史) if sentence_id in self.history: console.print(f"[更新] 句子 {sentence_id}:", styled_text) logger.info(f"更新句子: {sentence_id}") else: console.print(f"[输出] 句子 {sentence_id}:", styled_text) logger.info(f"输出句子: {sentence_id}") # 记录历史 self.history[sentence_id] = text logger.debug(f"句子内容: {text}") if __name__ == "__main__": # 设置日志级别为DEBUG以查看详细信息 logger.setLevel(logging.DEBUG) # 测试代码 renderer = OutputRenderer() # 显示原始文本 renderer.display("s1", "I think we should start the meeting now.", "raw") # 模拟优化回填 renderer.display("s1", "I believe it's time to begin the meeting.", "optimized")