import psycopg2

conn = psycopg2.connect('postgresql://admin:DC1qaz2wsx@10.1.0.20:5433/hr_portal')
cur = conn.cursor()

print('=' * 80)
print('租戶內序號測試結果')
print('=' * 80)

# 查看員工序號
print('\n【員工序號分佈】')
cur.execute('''
    SELECT tenant_id, seq_no, employee_id, legal_name
    FROM tenant_employees
    ORDER BY tenant_id, seq_no
    LIMIT 20
''')

current_tenant = None
for row in cur.fetchall():
    if row[0] != current_tenant:
        current_tenant = row[0]
        print(f'\n租戶 {row[0]}:')
    print(f'  seq_no={row[1]:3d} | employee_id={row[2]:8s} | {row[3]}')

# 統計
print('\n' + '=' * 80)
print('【租戶序號統計】')
print('=' * 80)
cur.execute('''
    SELECT
        tenant_id,
        COUNT(*) as total,
        MIN(seq_no) as min_seq,
        MAX(seq_no) as max_seq
    FROM tenant_employees
    GROUP BY tenant_id
    ORDER BY tenant_id
''')

print('\n租戶ID | 員工數 | 最小序號 | 最大序號')
print('-' * 50)
for row in cur.fetchall():
    print(f'{row[0]:7d} | {row[1]:6d} | {row[2]:8d} | {row[3]:8d}')

# 查看觸發器
print('\n' + '=' * 80)
print('【資料庫觸發器】')
print('=' * 80)
cur.execute('''
    SELECT trigger_name, event_object_table
    FROM information_schema.triggers
    WHERE trigger_schema = 'public'
      AND trigger_name LIKE '%seq_no%'
    ORDER BY event_object_table
''')

print('\n觸發器名稱                                目標表')
print('-' * 60)
for row in cur.fetchall():
    print(f'{row[0]:40s} {row[1]}')

conn.close()
