# -*- coding: utf-8 -*-
import json, urllib.request, urllib.error
full = json.load(open(__import__('os').path.join(__import__('os').path.dirname(__file__),'catalog_full.json')))
narrow = {tb: {'三年级': full[tb]['三年级']} for tb in ('胡小群课程','举一反三','动脑筋')}
CASES = [("三年级奥数，植树问题和加减巧算各 4 道", narrow)]*3 + \
        [("六年级分数应用题 12 道，中等难度", full)]*3 + [
 ("初二，一次函数 10 道，由易到难", full),
 ("一课一练四年级上，大数的认识 6 道填空", full),
 ("五年级，牛吃草问题 5 道，难一点", full),
 ("2023年上海中考卷选 10 道", full),
 ("上海二模的计算题 8 道", full),
 ("出 10 道鸡兔同笼，不要带图的", full),
 ("跨教材来 8 道相遇问题，四年级", full),      # kp 轴：理解句须含「知识点·」
 ("不限教材按知识点：牛吃草 6 道", full),      # kp 轴
 # 全国中考真题（2026-09-05 并库后新增）：gg 是省份、cd 是「年份·城市」。
 # ⚠ 只说「中考」仍应给上海批；必须出现省名/全国才切到全国批 —— 两条都要测。
 ("江苏中考真题里选 10 道", full),
 ("全国各省 2024 年的中考卷选 8 道", full),   # 全国批按年份轴（cd_like="2024"）
 # AMC8（2026-09-05 并库）：gg 是年代段、cd 是「2023年 AMC8」，难度可用
 ("AMC8 近几年的压轴题 10 道", full),
 ("2023年 AMC8 选 12 道", full),
 # 上海三模（2026-09-07 补录 76 卷后新增卷种 mock_3）：理解句须含「三模」
 ("2025 年上海三模填空题 6 道", full),
 # 九上·新教材（2026-09-07 并入）：只说「九上」默认新教材；说「旧教材」才落老册
 ("九上二次函数 8 道", full, "九上·新教材"),
 ("旧教材九上二次函数 5 道", full, "九上 ·"),
 # 八年级汇编两册（2026-09-07）：期中/期末/真题字样 → 汇编册；只说讲义内容 → 老册
 ("八上期末真题 二次根式 6 道", full, "八上·期末汇编"),
 ("八下期中必刷压轴题 5 道", full, "八下·期中汇编"),
 ("八上 勾股定理 8 道", full, "初中培优讲义 · 八上 ·"),
 # 上海校本卷（2026-09-07）：学校名/整卷/月考 → 校本卷；八上期末不提专题 → 校本卷；提专题 → 汇编册
 ("南洋模范八上期中卷选 10 道", full, "上海校本卷"),
 ("八上期末 10 道", full, "上海校本卷"),
 ("八上月考的填空题 8 道", full, "上海校本卷"),
 # 中考·分类汇编（2026-09-07）：说「分类汇编」→ 培优该册；只说中考 → 上海中考真题（第 10 句已覆盖）
 ("中考分类汇编 二次函数 6 道", full, "中考·分类汇编"),
 # preNarrow 修复：全国批在老师说年份时不再被上海批挤掉
 ("全国 2024 年中考卷选 8 道", full, "2024"),
 # 新思路（2026-09-08）
 ("新思路六年级上 有理数 8 道", full, "新思路 · 六年级上·第三版"),
 # 校本卷第二批（2026-09-09，六上~八下）+ preNarrow 年级写法互认
 ("七下期中卷选 10 道", full, "上海校本卷 · 七下"),
 ("新思路六上 有理数 6 道", full, "新思路 · 六年级上·第三版"),
 # 袋鼠真题（2026-09-10 并库）：gg 年份、cd「2024年 Level B」，难度按分档推
 ("袋鼠 2024 Level B 选 8 道", full, "袋鼠真题"),
 ("袋鼠 A 卷压轴题 6 道", full, "袋鼠真题")]
bad=0
for i,case in enumerate(CASES,1):
    text,cat=case[0],case[1]; want=case[2] if len(case)>2 else None
    req = urllib.request.Request('http://127.0.0.1:8848/api/compose',
        data=json.dumps({'text':text,'catalog':cat,
            'kps':['鸡兔同笼问题','和差问题','牛吃草问题','相遇问题','追及问题','量率问题']}).encode(),
        headers={'Content-Type':'application/json'})
    try:
        with urllib.request.urlopen(req,timeout=180) as r: out=json.load(r)
        print('%d. %s'%(i,out['understood']))
        if out.get('unresolved'): print('   找不到:',out['unresolved']); bad+=1
        elif want and want not in out['understood']: print('   ✗ 理解句应含「%s」'%want); bad+=1
    except urllib.error.HTTPError as e:
        print('%d ✗ HTTP %s %s'%(i,e.code,e.read().decode()[:200])); bad+=1
print('\n有问题:',bad,'/',len(CASES))
