| 123456789101112131415161718192021222324252627282930 |
- 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);
- }
|