docs: add agent code size standards
This commit is contained in:
39
AGENTS.md
Normal file
39
AGENTS.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# X-Financial Agent 协作规范
|
||||||
|
|
||||||
|
## 语言规范
|
||||||
|
|
||||||
|
- 所有分析、解释、计划、提交说明和最终回复默认使用简体中文。
|
||||||
|
- 技术结论要直击重点,必要时给出可验证的文件、命令或测试结果。
|
||||||
|
|
||||||
|
## 通用代码拆分规范
|
||||||
|
|
||||||
|
无论写前端、后端还是算法代码,都必须主动避免“所有方法堆在一个类里 / 一个组件里 / 一个模块里”的写法。遇到类、组件或核心模块持续变大时,优先按职责拆分,而不是继续追加方法和状态。
|
||||||
|
|
||||||
|
### 行数与复杂度目标
|
||||||
|
|
||||||
|
- 单个类、核心组件、核心算法模块硬上限为 800 行。
|
||||||
|
- 普通文件建议控制在 300-600 行。
|
||||||
|
- 复杂业务文件可以接近 800 行,但必须有清晰职责边界。
|
||||||
|
- 文件或类超过 800 行必须视为重构预警,不应继续直接追加功能。
|
||||||
|
- 单个类不应长期承载几十个无关方法,更不应演化成上百个方法的万能类。
|
||||||
|
|
||||||
|
### 拆分原则
|
||||||
|
|
||||||
|
- 对外 API 尽量保持稳定,先把内部实现拆到小模块。
|
||||||
|
- 按职责拆分:编排、状态管理、持久化、权限、文件存储、OCR/票据分析、规则审核、响应构建、序列化、UI 交互、算法策略、数据转换。
|
||||||
|
- 新增能力时先判断归属模块;没有合适归属时新增小模块,不要默认塞回主类、主组件或主 Service。
|
||||||
|
- 拆分必须小步进行,每次提取一个明确职责,并配套运行相关测试。
|
||||||
|
|
||||||
|
### X-Financial 重点关注对象
|
||||||
|
|
||||||
|
- `ExpenseClaimService`:优先拆分申请单、明细项、附件、票据分析、草稿、规则审核、权限、序列化。
|
||||||
|
- `UserAgentService`:优先拆分知识库问答、报销预审 payload、Markdown 回复、差旅政策、表单槽位、票据分类、建议动作。
|
||||||
|
- `OrchestratorService`:优先拆分 agent 路由、工具调用、报销查询、响应构建。
|
||||||
|
- 前端大型 Vue 页面:优先拆分 composable、view model、样式分片、业务工具函数和子组件。
|
||||||
|
- 算法/规则模块:优先拆分输入解析、规则匹配、评分策略、结果解释和异常处理。
|
||||||
|
|
||||||
|
## 验证规范
|
||||||
|
|
||||||
|
- 后端改动优先在 Docker 容器 `x-financial-main` 中运行验证。
|
||||||
|
- 单元测试设置合理超时,避免长时间卡死。
|
||||||
|
- 每次重构后至少运行对应服务的定向测试;涉及公共协议时补充端到端或接口测试。
|
||||||
Reference in New Issue
Block a user