File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3838生成/重构任何代码必须同时满足:
3939
40401 . ** 模块化** :单文件 ≤300 行(>600 行必须硬拆;300-600 行登记豁免清单);纯逻辑与副作用物理分离;显式依赖注入。
41+ ** 行数口径(唯一有效)** :文件** 全部行数** (含空行),以 ` [System.IO.File]::ReadAllLines(path, UTF8).Count ` 为准 —— 即 ` scripts/line-limits.mjs ` 的 ` countLines() ` 。
42+ ⚠️ ** 不要用** :` Get-Content ` (本机 PowerShell 5.1 + 码页 ` gb2312 ` 会按 GBK 解码、吞换行、** 少算最多 45 行** )· ` Measure-Object -Line ` (** 只数非空行** )· ** 字节 ` 0x0A ` 计数** (对** 末尾不带换行** 的文件会少算 1;本仓实测有 8 个这样的源文件,含 ` NotesPage.tsx ` )。
43+ 判定一律以 ` node scripts/line-limits.mjs ` 为准。
41442 . ** 强类型契约** :业务术语贯穿全栈;禁止 ` any ` /无类型;入参出参必须定义类型(TS interface / Rust struct)。
42453 . ** 上下文注释** :注释解释 Why 不解释 What;公共函数/模块必须含 ` @ai-context ` 业务背景注释;标注副作用与边界条件;Magic Number/Hack 必须说明原因。
43464 . ** 防御性编程** :网络/DB/AI/系统调用必须有超时、重试、降级(Fallback);本地优先架构下所有云端能力必须有本地兜底路径。
@@ -118,6 +121,6 @@ npm run build # 前端构建
118121
119122- 提交信息遵循 Conventional Commits;版本号由第一阶段起手动维护 SemVer
120123- AI 功能必须支持离线降级(本地优先原则)
121- - 单文件 ≤300 行;源码文件含 ` @ai-context ` 业务背景注释
124+ - 单文件 ≤300 行(口径同上,以 ` node scripts/line-limits.mjs ` 为准) ;源码文件含 ` @ai-context ` 业务背景注释
122125- 重构/拆分遵循自底向上(原子→业务→系统),公共 API 保持兼容
123126- 任何技术栈/架构级变更先写 ADR(` docs/adr/ ` )再动手
Original file line number Diff line number Diff line change 159159
160160本文档的通用重构手法在本项目受以下硬性约束(详见 [ ai-coding.md] ( ./ai-coding.md ) 第二部分):
161161
162- - ** §1 单文件 ≤300 行** :"过大类/文件"坏味道在本项目有明确阈值——>600 行必须硬拆;300-600 行登记豁免清单待专项重构
162+ - ** §1 单文件 ≤300 行** :"过大类/文件"坏味道在本项目有明确阈值——>600 行必须硬拆;300-600 行登记豁免清单。行数口径见 AGENTS.md §3.1(全部行数,以 ` node scripts/line-limits.mjs ` 为准)
163163- ** §6 自底向上重构顺序** :拆分遵循 原子层(纯函数/类型)→ 业务层(hook/service)→ 系统层(页面/装配);公共 API 保持零改动(兼容 re-export)
164164- ** 已验证拆分模式** :React 页面 → 纯展示组件 + 域 hook + 组合层;Python 巨型模块 → 包化 + Mixin + schemas 提取;Go 巨型 handler → 同包多文件职责拆分
You can’t perform that action at this time.
0 commit comments