需统一收口重复校验逻辑:识别分散的手机号、身份证号等校验代码,提取共性规则,创建 src/lib/validators/index.ts 导出纯函数,替换原有调用,并补充单元测试确保覆盖。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Codex项目中,当多个接口或模块使用相同的数据校验逻辑(如手机号格式、身份证号合法性、密码强度等),重复编写校验代码会导致维护困难、修改不一致、测试覆盖遗漏。你需要把分散在校验点的冗余逻辑统一收口,让后续新增字段或调整规则时只需改一处。
识别并提取重复校验逻辑
打开项目中所有含 validate、check、isXXXValid 字样的函数或方法,逐个比对正则表达式、错误提示文案、条件分支结构。重点关注 src/utils/validate.js、src/middlewares/checker.ts、src/schemas/xxx.zod.ts 这几类路径下的文件。
把完全一致或仅参数名不同但逻辑相同的校验块复制到临时文档,例如三处都出现:/^1[3-9]\d{9}$/ + “手机号格式不正确” → 这就是待合并的候选。
【必须确认所有调用点当前返回值类型一致(布尔值/抛错/返回对象)】,否则强行合并会引发运行时异常。
创建统一校验函数模块
在 src/lib/validators/ 下新建 index.ts 文件。
按校验类型导出命名函数:export const validatePhone = (v: string) => /^1[3-9]\d{9}$/.test(v); export const validateIdCard = (v: string) => {...}; 每个函数只做一件事,不耦合业务状态或上下文。
禁止在函数内部调用 console.warn 或 throw Error —— 错误处理交由上层决定,这里只返回布尔值或基础结果对象(如 { valid: true, reason?: string })。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
替换原有分散调用
第一步:全局搜索 /validatePhone\(|checkPhone\(|isPhoneValid\(/g,定位全部调用位置。
第二步:逐个替换为 import { validatePhone } from '@/lib/validators'; → 调用 validatePhone(inputValue)。
第三步:删掉原文件里被迁移走的校验函数定义,保留其所在文件的其他逻辑。
注意:若某处原校验函数带默认空值处理(如 validatePhone(v || '')),替换后需同步补上,因为新函数不处理 undefined/null。
补充单元测试并验证覆盖
在 src/lib/validators/__tests__/index.test.ts 中为每个导出函数添加测试用例:有效值、无效值、边界值(空字符串、null、超长数字串)。
运行 npm run test:unit -- -t "validatePhone" 确认通过。
这一步操作起来很简单,直接把文件拖进去就行。










