← [ BACK_TO_NOTES ]

专题归档 · 2026 年 7 月(编辑分组,非实际写作日期)

BodySense:在诊断重构中学习 Python

Python pytest、依赖注入、Pydantic 建模以及诊断重构中的学习问题。

在实际重构中学

决定直接在实际项目的重构中学习。 ai 结合了 pydanticAI,langGraph,langflow 帮我创建了一个重构计划

先固定旧行为(DMR-001)

不是为了证明“新设计正确”,而是为了把旧 Python Diagnosis 边界钉死。

简单讲就是补充一系列测试文件,确保在重构的时候不会意外改动,导致意外的变化。

学习 python 的测试文件(pytest 框架)怎么写: 测试函数 test_ 前缀+三个步骤(AAA模式)

依赖注入(DMR-100)

  1. 在 diagnosis service 的 def init 函数中添加 aiservice 参数
  2. python 的 protocol (类似go中的interface)
  3. 依赖注入和依赖倒置

领域建模(DMR-101)

为什么现在 DiagnosisItem / DiagnosisResponse 这些 Pydantic Model 还不够,它们与真正的 typed domain models 有什么区别

大致就是,目前是使用了一个 base model 来定义 diagnosis item 的一些属性,也就是它长什么样,但并不足以把这个领域对象给清楚建模。

比如说它的 severity(严重程度),当前只是简单的 string(字符串)字段。但真正建模好的话,应该限制它的字段值,一般是作为一个枚举(比如说中、低、高之类的)。现在这个就完全没有清楚建模。

留下的问题(DX-001)

  • AIExecutor(Protocol) 为什么存在?
  • constructor dependency injection 是什么?
  • PydanticAI deps_type 为什么不是 constructor DI 的替代品?(“既然 PydanticAI 已经提供了一套 dependency injection 机制,我们为什么还需要让 DiagnosisService 使用 constructor DI?”)
  • 为什么 output_type=DiagnosisAgentOutput 后,可以删掉手工 JSON parsing?

写了一个 Agent 能力的接口,也就是搜索能力,用于后面给 diagnosis service 实现一个依赖注入。

创建于 2026/7/9 更新于 2026/10/16
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本