#!/usr/bin/env python3
from pathlib import Path
import json,re
root=Path(__file__).resolve().parents[1];text=(root/'script/script_photic_sneeze.txt').read_text();low=text.lower()
def any_of(*xs):return any(x.lower() in low for x in xs)
def ctx(names,claims,r=900):
 ps=[]
 for n in names:
  st=0
  while True:
   i=low.find(n.lower(),st)
   if i<0:break
   ps.append(i);st=i+1
 return any(any(c.lower() in low[max(0,p-r):p+r] for c in claims) for p in ps)
g={
'psr':any_of('photic sneeze reflex','phản xạ hắt hơi do ánh sáng') and any_of('achoo') and any_of('biệt danh','lối chơi chữ'),
'ordinary':any_of('dây sinh ba','trigeminal') and any_of('niêm mạc mũi','kích thích trong mũi','bụi','phấn hoa') and any_of('thân não') and any_of('hít vào','cơ hô hấp','tống khí'),
'light_path':any_of('võng mạc','thần kinh thị giác','optic') and any_of('phản xạ đồng tử','co đồng tử','pupillary'),
'uncertain':any_of('chưa được chứng minh','chưa xác nhận','chưa được xác nhận','chưa được chốt','không biết chính xác','cơ chế chính xác vẫn chưa') and any_of('không có một dây','không có một sợi dây','chưa có một sợi dây','không có một mối nối','không phải một đường duy nhất','không có một đường nối duy nhất','hiện chưa có một đường nối duy nhất','không có một cơ chế duy nhất'),
'hypotheses':any_of('lan tín hiệu','spillover','tràn tín hiệu') and any_of('phó giao cảm','parasympathetic') and any_of('nhạy','sensitivity') and any_of('giả thuyết','có thể'),
'heredity':any_of('trội trên nhiễm sắc thể thường','autosomal') and any_of('độ thấm','penetrance','không phải ai mang') and any_of('gia đình','di truyền'),
'not_gene_test':any_of('không phải','không biến') and any_of('một gene','một gen','gene duy nhất') and any_of('chẩn đoán','xét nghiệm'),
'prevalence':any_of('tỷ lệ','prevalence') and any_of('quần thể','dân số') and any_of('phương pháp','cách hỏi','khảo sát') and any_of('không có một con số','không phổ quát','khác nhau'),
'distinction':any_of('không phải dị ứng','không đồng nghĩa với dị ứng','dễ bị nhầm với dị ứng','ánh sáng không phải chất gây dị ứng') and any_of('nhiễm trùng','cảm lạnh') and any_of('dị ứng ánh nắng','dị ứng mặt trời','sun allergy') and any_of('co giật','động kinh','seizure'),
'light_not_nose':any_of('ánh sáng','mặt trời') and any_of('không chui vào mũi','không đi vào mũi','không mang chất kích thích nào vào mũi','không phải chất kích thích trong mũi','không kích thích trực tiếp niêm mạc mũi'),
'practical':any_of('kính râm') and any_of('mũ','vành') and any_of('đường hầm','gara') and any_of('dừng','giảm tốc','chuẩn bị') and any_of('vô lăng','tay lái'),
'no_stare':any_of('không nhìn thẳng','đừng nhìn thẳng','không nhìn trực tiếp') and any_of('mặt trời'),
'hygiene':any_of('khăn giấy') and any_of('khuỷu tay') and any_of('không bịt mũi','không chặn mũi','không bịt cả mũi','không bịt chặt mũi','không bịt chặt mũi và miệng'),
'not_self_test':any_of('không dùng','không biến') and any_of('bài kiểm tra','tự kiểm tra','xét nghiệm tại nhà') and any_of('gene','di truyền','tính cách','thần kinh'),
'safety':any_of('đau mắt') and any_of('mất thị lực','giảm thị lực') and any_of('đau đầu dữ dội') and any_of('yếu') and any_of('lú lẫn','confusion') and any_of('ngất') and any_of('co giật') and any_of('khó thở') and any_of('không có ánh sáng','không liên quan ánh sáng') and any_of('đánh giá','khám'),
'closing':any_of('không chui vào mũi','không đi vào mũi','không kích thích trực tiếp niêm mạc mũi') and any_of('hai khu phố','hai vùng','hai phản xạ') and any_of('bảo vệ')
}
s={'Everett':ctx(('everett','1964'),('photic sneeze','thuật ngữ','tổng quan','ánh sáng')),'Peroutka':ctx(('peroutka'),('1984','khảo sát','tỷ lệ','di truyền')),'Familial':ctx(('beckman','nordenson','tổng quan nhãn khoa','tổng quan thần kinh'),('gia đình','di truyền','cơ chế','tỷ lệ'))};f={x:bool(re.search(rf'(?<![\wÀ-ỹ]){x}(?![\wÀ-ỹ])',low)) for x in ['tôi','chúng ta','chúng tôi']};ok=all(g.values()) and all(s.values()) and not any(f.values());print(json.dumps({'groups':g,'sources':s,'forbidden':f,'status':'PASS' if ok else 'FAIL'},ensure_ascii=False));raise SystemExit(0 if ok else 1)
