import json from pathlib import Path plan = json.loads(Path('scripts/sop-qc/inspection-plan.json').read_text(encoding='utf-8')) schemes = plan['schemes'] def scheme(number): return next(s for s in schemes if s['code'].endswith('-'+number)) def item(number, name): return next(i for i in scheme(number)['items'] if i['name']==name) assert len(schemes)==231 assert len({s['code'] for s in schemes})==231 assert all(s['items'] for s in schemes) assert '8.0%' in item('001','水分')['requirement'] assert '99.7' not in item('001','水分')['requirement'] assert '5.0-7.0' in item('071','pH值')['requirement'] assert 'JJG' not in item('071','pH值')['requirement'] assert '10^(4)' in item('217','菌落总数')['requirement'] assert all(item('185',n)['requirement'] for n in ['色泽','滋气味','形态']) assert scheme('219')['status']==1 assert not scheme('219')['remote_material_matches'] assert all(i['result_type']==3 and i['threshold_min'] is None and i['threshold_max'] is None for s in schemes for i in s['items']) assert all(s['status']==1 for s in schemes if any(not i['requirement'] for i in s['items'])) assert all(len(s['name'])<=100 for s in schemes) for s in schemes: for i in s['items']: chunks=[i['requirement'][n:n+255] for n in range(0,len(i['requirement']),255)] assert ''.join(chunks)==i['requirement'] print('PASS: source coverage, unique scheme codes, representative standards, superscripts, uncertain-product isolation, pending-review status, complete continuation text')