verify-flash-spec.mjs 1.0 KB

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