import fs from 'node:fs'; const spec = fs.readFileSync('specs/024-flash-delivery/spec.md', 'utf8'); const design = fs.readFileSync('specs/024-flash-delivery/design.md', 'utf8'); const count = (value, pattern) => (value.match(pattern) ?? []).length; const result = { stories: count(spec, /^### 用户故事/gm), requirements: count(spec, /\*\*FR-\d{3}\*\*/g), successCriteria: count(spec, /\*\*SC-\d{3}\*\*/g), endpoints: count(design, /^- `(GET|POST|PUT|DELETE) /gm), hasPaymentExclusion: spec.includes('不接入支付网关'), hasAtomicAccept: spec.includes('原子条件更新'), hasAddressOwnership: spec.includes('地址所有权校验'), hasImageRequirement: spec.includes('至少提供一张取件图片') && spec.includes('至少提供一张送达图片') }; console.log(JSON.stringify(result)); if ( result.stories !== 5 || result.requirements !== 39 || result.successCriteria !== 9 || result.endpoints !== 24 || Object.values(result).some((value) => value === false) ) { process.exit(1); }