"""Teaching coverage of buyer constraints; no query generation or model calls."""
import json
weights={'deployment':.30,'permissions':.25,'budget':.20,'migration':.15,'maintenance':.10}
pages={'overview':{'deployment'},'pricing':{'budget'},'deployment-guide':{'deployment','permissions'},'migration-guide':{'migration'}}
def coverage(selected):return sum(weights[x] for x in set().union(*(pages[p] for p in selected)))
selected=[]
for _ in range(3):
 remaining=sorted(set(pages)-set(selected))
 best=max(remaining,key=lambda x:coverage(selected+[x])-coverage(selected))
 selected.append(best)
result={'label':'人工设定权重与覆盖标签的教学计算','baseline_pages':['overview','pricing'],'baseline_coverage':coverage(['overview','pricing']),'greedy_pages':selected,'greedy_coverage':coverage(selected),'uncovered':['maintenance']}
assert abs(result['baseline_coverage']-.5)<1e-9
assert abs(result['greedy_coverage']-.9)<1e-9
print(json.dumps(result,ensure_ascii=False,indent=2))
