"""底座共享服务容器 ``Services``(依赖注入)。 ``Services`` 是一个数据类,聚合底座向 Skill 注入的全部共享服务句柄。 底座在启动时一次性构建该容器,并把它注入 Skill 的 ``extract`` / ``explain`` 两个阶段;**不注入 ``compute``**——这是需求 2.1 的硬保证:计算阶段从签名上 就拿不到任何服务 / LLM 句柄,从源头阻断「大模型幻觉计算」。 设计对应 design.md「5. Services 容器」。各具体服务(``LLMService`` / ``ReportService`` 等)由后续任务(4–10)实现;在当前阶段,本容器的各字段 默认置为 ``None`` 占位,使注册、路由、流水线等骨架可以独立构建与测试,而无需 等待全部服务就绪。 字段说明: - ``llm``:多模型路由 + Fallback + 限流 + Token 计量(任务 4/5)。 - ``report``:品牌包装 + HTML→PDF + CMC 美学 + 分页(任务 9)。 - ``chart``:通用图表(真实 CI 喇叭带、风险色块)(任务 8)。 - ``file``:Excel/PDF/Word/CSV 统一解析(任务 7)。 - ``auth``:登录、加盐哈希、角色隔离(任务 6)。 - ``audit``:审计日志 + 计算追踪(任务 7)。 - ``usage``:调用 / Token 累计与阈值告警(任务 5)。 - ``prompt_guard``:forbidden_phrases 强过滤 + 格式清理(任务 9)。 - ``i18n``:中英双语目录 ``t(key, lang)`` + 默认回退(任务 10)。 - ``lang``:当前会话语言(``"zh"`` | ``"en"``,默认中文)。 """ from __future__ import annotations from dataclasses import dataclass from typing import Any @dataclass class Services: """底座共享服务容器(依赖注入)。 一次构建,注入 Skill 的 ``extract`` / ``explain`` 阶段(不注入 ``compute``)。 当前阶段各服务字段默认 ``None`` 占位,待后续任务逐步替换为真实实现。 类型标注暂用 ``Any``,以便在具体服务类尚未实现时仍可独立导入本模块。 """ llm: Any = None report: Any = None chart: Any = None file: Any = None auth: Any = None audit: Any = None usage: Any = None prompt_guard: Any = None i18n: Any = None lang: str = "zh" # 当前会话语言("zh" | "en") __all__ = ["Services"]