import sqlite3,json,os,urllib.parse
ROOT=os.path.dirname(__file__); BASE='https://ciba.res.in/laksyashrimp'
manifest={'dashboard':{},'vannamei_2025_lineage':{}}
for sp in ['vannamei','monodon','indicus','vannamei_2025']:
    db=os.path.join(ROOT,f'blockchain_p_{sp}.db')
    rows=sqlite3.connect(db).execute('select index_,stage,data_id from blocks where index_>0 order by index_').fetchall()
    arr=[]
    for idx,stage,data_id in rows:
        # Dashboard display index is sequential over displayed non-genesis blocks.
        if sp!='vannamei_2025' and False: pass
        arr.append((stage or '',data_id or ''))
    manifest['dashboard'][sp]={}
    display_idx=0
    for stage,data_id in arr:
        if ('shrimp on a plate' in stage.lower() or 'customer view' in stage.lower()) and any(x in stage.lower() for x in ['-1','-2','-3']):
            continue
        display_idx+=1
        feedback=BASE+'/localhost_feedback?'+urllib.parse.urlencode({'product_id':sp,'batch_id':data_id,'stage':stage})
        block=BASE+f'/lineage_block/{sp}/{display_idx}'
        manifest['dashboard'][sp][str(display_idx)]={'block_url':block,'feedback_url':feedback,'block_qr':f'/static/qr/blockdata_{sp}_{display_idx}.png','feedback_qr':f'/static/qr/feedback_{sp}_{display_idx}.png','data_id':data_id,'stage':stage}
# Fixed 2025 lineage map copied from app structure
labels={
'a':[('1a','3011231150A7010125',1,'Broodstock Facility'),('2a',None,None,'Hatchery-Nursery'),('3a','TNII1598115001A726',7,'Grow-out System'),('4a','B101-4a',12,'Production of feed & inputs')],
'b':[('1b','3011231015A2010125',2,'Broodstock Facility'),('2b',None,None,'Hatchery-Nursery'),('3b','TNII1598101501A226',8,'Grow-out System'),('4b','B101-4b',13,'Production of feed & inputs')],
'c':[('1c','3011231150A5010125',3,'Broodstock Facility'),('2c',None,None,'Hatchery-Nursery'),('3c','TNII1598115001A526',9,'Grow-out System'),('4c','B101-4c',14,'Production of feed & inputs')],
'd':[('1d','3011231150A4010125',4,'Broodstock Facility'),('2d',None,None,'Hatchery-Nursery'),('3d','TNII1598115001A426',10,'Grow-out System'),('4d','B101-4d',15,'Production of feed & inputs')],
'e':[('1e','301123100720010225',5,'Broodstock Facility'),('2e','TNII15981720010126',6,'Hatchery-Nursery'),('3e','TNII15981720010126_grow',11,'Grow-out System (RGCA)'),('4e','B102-4e',16,'Production of feed & inputs')]
}
for lid,steps in labels.items():
    manifest['vannamei_2025_lineage'][lid]={}
    for label,uid,idx,stage in steps:
        if idx is None: continue
        manifest['vannamei_2025_lineage'][lid][label]={
          'block_url':BASE+f'/lineage_block/vannamei_2025/{idx}',
          'feedback_url':BASE+'/localhost_feedback?'+urllib.parse.urlencode({'product_id':'vannamei_2025','batch_id':uid,'stage':stage}),
          'block_qr':f'/static/qr/lineage_vannamei_2025_{idx}.png',
          'feedback_qr':f'/static/qr/feedback_vannamei_2025_{idx}.png'}
path=os.path.join(ROOT,'static/json/static_links.json'); os.makedirs(os.path.dirname(path),exist_ok=True)
json.dump(manifest,open(path,'w'),indent=2,ensure_ascii=False)
print(path)
