# -*- coding: utf-8 -*-
# 只读本目录合成输入，不联网、不修改设备。
import csv
from pathlib import Path
base=Path(__file__).parent
tables={}
for name in ['points','diagram','bom','quote']:
    rows=list(csv.DictReader((base/(name+'.csv')).open(encoding='utf-8-sig')))
    result={}
    for r in rows:
        key=(r['point_id'],r['role'])
        assert key not in result,('重复键',name,key)
        result[key]=int(r['qty'])
    tables[name]=result
issues=[]
for key,expected in tables['points'].items():
    for name in ['diagram','bom','quote']:
        actual=tables[name].get(key,0)
        if actual!=expected: issues.append((name,key[0],expected,actual))
for name,table in tables.items():
    assert set(table)<=set(tables['points']),('无归属行',name)
assert issues==[('bom','P02',1,2),('quote','P03',1,0)],issues
print('合成四表勾稽通过，预置差异：',issues)
