""" BharatGraph -- Seed Data Loads sample nodes AND relationships into Neo4j for demonstration. Real data comes from POST /admin/pipeline which runs all 21 scrapers. """ import os, sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from dotenv import load_dotenv from loguru import logger from graph.loader import GraphLoader load_dotenv() # -- Politicians (ECI / MyNeta) ------------------------------------------------- SAMPLE_POLITICIANS = [ {"id":"pol_001","name":"Narendra Modi","state":"Gujarat","party":"BJP", "constituency":"Varanasi","criminal_cases":0,"criminal_case_count":"0", "total_assets":2.85,"education":"BA Political Science","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_002","name":"Rahul Gandhi","state":"Kerala","party":"INC", "constituency":"Wayanad","criminal_cases":0,"criminal_case_count":"0", "total_assets":15.89,"education":"MPhil Development Studies","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_003","name":"Amit Shah","state":"Gujarat","party":"BJP", "constituency":"Gandhinagar","criminal_cases":0,"criminal_case_count":"0", "total_assets":42.33,"education":"BSc Biochemistry","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_004","name":"Smriti Irani","state":"Uttar Pradesh","party":"BJP", "constituency":"Amethi","criminal_cases":0,"criminal_case_count":"0", "total_assets":9.12,"education":"BA (Incomplete)","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_005","name":"Arvind Kejriwal","state":"Delhi","party":"AAP", "constituency":"New Delhi","criminal_cases":3,"criminal_case_count":"3", "total_assets":3.40,"education":"BTech IIT Kharagpur","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_006","name":"Mamata Banerjee","state":"West Bengal","party":"AITC", "constituency":"Bhowanipore","criminal_cases":0,"criminal_case_count":"0", "total_assets":1.25,"education":"BA History","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_007","name":"Nitish Kumar","state":"Bihar","party":"JDU", "constituency":"Nalanda","criminal_cases":0,"criminal_case_count":"0", "total_assets":1.65,"education":"BE Electrical","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_008","name":"Yogi Adityanath","state":"Uttar Pradesh","party":"BJP", "constituency":"Gorakhpur","criminal_cases":0,"criminal_case_count":"0", "total_assets":1.08,"education":"BSc Mathematics","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_009","name":"Shashi Tharoor","state":"Kerala","party":"INC", "constituency":"Thiruvananthapuram","criminal_cases":1,"criminal_case_count":"1", "total_assets":27.44,"education":"PhD Tufts University","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"pol_010","name":"Anurag Thakur","state":"Himachal Pradesh","party":"BJP", "constituency":"Hamirpur","criminal_cases":0,"criminal_case_count":"0", "total_assets":33.87,"education":"BA History","year":2024,"source":"myneta","scraped_at":"2026-05-04T05:45:50Z"}, ] # -- Companies (MCA21) ---------------------------------------------------------- SAMPLE_COMPANIES = [ {"id":"co_001","name":"Adani Enterprises Limited","state":"Gujarat", "cin":"L51100GJ1993PLC019067","status":"Active","paid_up_capital_crore":112.0,"source":"mca","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"co_002","name":"Reliance Industries Limited","state":"Maharashtra", "cin":"L17110MH1973PLC019786","status":"Active","paid_up_capital_crore":673.0,"source":"mca","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"co_003","name":"Tata Consultancy Services","state":"Maharashtra", "cin":"L22210MH1995PLC084781","status":"Active","paid_up_capital_crore":366.0,"source":"mca","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"co_004","name":"Infosys Limited","state":"Karnataka", "cin":"L85110KA1981PLC013115","status":"Active","paid_up_capital_crore":207.0,"source":"mca","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"co_005","name":"Bharti Airtel Limited","state":"Delhi", "cin":"L74899DL1995PLC070609","status":"Active","paid_up_capital_crore":282.0,"source":"mca","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"co_006","name":"NTPC Limited","state":"Delhi", "cin":"L40101DL1975GOI007966","status":"Active","paid_up_capital_crore":965.0,"source":"mca","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"co_007","name":"ONGC Limited","state":"Delhi", "cin":"L74899DL1993GOI054155","status":"Active","paid_up_capital_crore":1258.0,"source":"mca","scraped_at":"2026-05-04T05:45:50Z"}, ] # -- Contracts (GeM) ------------------------------------------------------------ SAMPLE_CONTRACTS = [ {"id":"ct_001","order_id":"GEM/2024/B/001","item_desc":"Road Construction Supplies", "amount_crore":45.5,"buyer_org":"Ministry of Road Transport", "order_date":"2024-03-15","company_id":"co_001", "seller_name":"Adani Enterprises Limited","seller_name_raw":"Adani Enterprises Limited","source":"gem","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"ct_002","order_id":"GEM/2024/B/002","item_desc":"IT Infrastructure Services", "amount_crore":128.0,"buyer_org":"Ministry of Electronics and IT", "order_date":"2024-02-10","company_id":"co_003", "seller_name":"Tata Consultancy Services","seller_name_raw":"Tata Consultancy Services","source":"gem","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"ct_003","order_id":"GEM/2024/B/003","item_desc":"Telecom Equipment", "amount_crore":67.3,"buyer_org":"Ministry of Communications", "order_date":"2024-01-20","company_id":"co_005", "seller_name":"Bharti Airtel Limited","seller_name_raw":"Bharti Airtel Limited","source":"gem","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"ct_004","order_id":"GEM/2024/B/004","item_desc":"Power Grid Infrastructure", "amount_crore":312.0,"buyer_org":"Ministry of Power", "order_date":"2024-04-01","company_id":"co_006", "seller_name":"NTPC Limited","seller_name_raw":"NTPC Limited","source":"gem","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"ct_005","order_id":"GEM/2024/B/005","item_desc":"Solar Panel Supply and Installation", "amount_crore":89.7,"buyer_org":"Ministry of New and Renewable Energy", "order_date":"2024-03-28","company_id":"co_001", "seller_name":"Adani Enterprises Limited","seller_name_raw":"Adani Enterprises Limited","source":"gem","scraped_at":"2026-05-04T05:45:50Z"}, ] # -- Audit Reports (CAG) -------------------------------------------------------- SAMPLE_AUDIT_REPORTS = [ {"id":"ar_001","title":"Performance Audit of Pradhan Mantri Gram Sadak Yojana 2023", "year":2023,"ministry":"Ministry of Rural Development","state":"National", "amount_crore":234.5,"url":"https://cag.gov.in/reports/2023","source":"cag","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"ar_002","title":"Compliance Audit of Smart Cities Mission 2022", "year":2022,"ministry":"Ministry of Housing and Urban Affairs","state":"National", "amount_crore":189.2,"url":"https://cag.gov.in/reports/2022","source":"cag","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"ar_003","title":"Revenue Audit of GST Collections Maharashtra 2023", "year":2023,"ministry":"Ministry of Finance","state":"Maharashtra", "amount_crore":456.8,"url":"https://cag.gov.in/reports/2023","source":"cag","scraped_at":"2026-05-04T05:45:50Z"}, {"id":"ar_004","title":"Audit of Defence Procurement Irregularities 2022", "year":2022,"ministry":"Ministry of Defence","state":"National", "amount_crore":892.0,"url":"https://cag.gov.in/reports/2022","source":"cag","scraped_at":"2026-05-04T05:45:50Z"}, ] # -- Politician-Company Director links (entity resolution) ---------------------- SAMPLE_DIRECTOR_LINKS = [ # Keys must be name_a / name_b -- these match graph/loader.py load_politician_company_links() {"name_a": "Amit Shah", "name_b": "Adani Enterprises Limited", "score": 0.92}, {"name_a": "Narendra Modi", "name_b": "ONGC Limited", "score": 0.88}, {"name_a": "Anurag Thakur", "name_b": "Tata Consultancy Services", "score": 0.81}, {"name_a": "Amit Shah", "name_b": "Reliance Industries Limited","score": 0.78}, {"name_a": "Arvind Kejriwal","name_b": "Bharti Airtel Limited", "score": 0.72}, ] def seed(): loader = GraphLoader() logger.info("[Seed] Loading politicians...") n = loader.load_politicians(SAMPLE_POLITICIANS) logger.success(f"[Seed] Politicians: {n}") logger.info("[Seed] Loading companies...") n = loader.load_companies(SAMPLE_COMPANIES) logger.success(f"[Seed] Companies: {n}") logger.info("[Seed] Loading contracts...") n = loader.load_contracts(SAMPLE_CONTRACTS) logger.success(f"[Seed] Contracts: {n}") logger.info("[Seed] Loading audit reports...") n = loader.load_audit_reports(SAMPLE_AUDIT_REPORTS) logger.success(f"[Seed] Audit reports: {n}") logger.info("[Seed] Creating DIRECTOR_OF relationships...") n = loader.load_politician_company_links(SAMPLE_DIRECTOR_LINKS) logger.success(f"[Seed] Director links: {n}") logger.success( "[Seed] Database seeded with nodes AND relationships. " "Search: 'Modi', 'Adani', 'Tata', 'Amit Shah', 'Anurag Thakur'" ) if __name__ == "__main__": seed()