""" Quick script to see distinct FMEA equipment names and equipment_tags so we can plan the matching strategy against PFI equipment names. """ import asyncio import os, sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from sqlalchemy import text from src.database.core import async_session async def main(): session = async_session() try: # Get distinct equipment names result = await session.execute(text( "SELECT DISTINCT equipment FROM fmea_record ORDER BY equipment" )) equipments = [r[0] for r in result.all()] # Get distinct equipment tags result2 = await session.execute(text( "SELECT DISTINCT equipment_tag FROM fmea_record WHERE equipment_tag IS NOT NULL AND equipment_tag != '' ORDER BY equipment_tag" )) tags = [r[0] for r in result2.all()] print("=" * 60) print(f"FMEA Equipment Names ({len(equipments)} distinct):") print("=" * 60) for eq in equipments: print(f" - {eq}") print() print("=" * 60) print(f"FMEA Equipment Tags ({len(tags)} distinct):") print("=" * 60) for t in tags[:30]: print(f" - {t}") if len(tags) > 30: print(f" ... and {len(tags) - 30} more") # Check equipment + tag mapping result3 = await session.execute(text( "SELECT DISTINCT equipment, equipment_tag FROM fmea_record WHERE equipment_tag IS NOT NULL AND equipment_tag != '' ORDER BY equipment, equipment_tag LIMIT 40" )) mappings = result3.all() print() print("=" * 60) print(f"FMEA Equipment -> Tag Mapping (sample):") print("=" * 60) for eq, tag in mappings: print(f" {eq:40s} | {tag}") finally: await session.close() if __name__ == "__main__": asyncio.run(main())