#!/usr/bin/env python3
"""Template 1: 原始版本 - 較完整但較亂的格式"""
import sys
sys.stdout.reconfigure(encoding='utf-8')

import sqlite3
import requests
import subprocess
import re
from datetime import datetime

# 讀取環境變數
result = subprocess.run(['powershell', '-Command', "[Environment]::GetEnvironmentVariable('TELEGRAM_BOT_TOKEN', 'User')"], capture_output=True, text=True)
TELEGRAM_BOT_TOKEN = result.stdout.strip()
result = subprocess.run(['powershell', '-Command', "[Environment]::GetEnvironmentVariable('TELEGRAM_CHAT_ID', 'User')"], capture_output=True, text=True)
TELEGRAM_CHAT_ID = result.stdout.strip()


def extract_appraiser_info(content: str):
    """從公告內容中提取估價師資訊（原始版本，不過濾）"""
    results = []

    # 模式1: 事務所
    pattern1 = r'(?:專業估價者事務所|專業估價師事務所|不動產估價師事務所)[^:：]*[:：]\s*([^\n]+?)(?=\s*(?:\d+\.|$))'
    # 模式2: 估價師姓名
    pattern2 = r'(?:專業估價師姓名|不動產估價師姓名)[^:：]*[:：]\s*([^\n]+?)(?=\s*(?:\d+\.|$))'
    # 模式3: 估價金額
    pattern3 = r'估價金額[^0-9]*?(?:新台幣|新臺幣|NT\$?)?\s*([0-9,]+)\s*元'

    firms = re.findall(pattern1, content, re.MULTILINE)
    names = re.findall(pattern2, content, re.MULTILINE)
    amounts = re.findall(pattern3, content)

    if firms or names or amounts:
        results.append({
            'appraiser_firm': '; '.join([f.strip()[:60] for f in firms]) if firms else None,
            'appraiser_names': '; '.join([n.strip()[:40] for n in names]) if names else None,
            'appraisal_amount': int(amounts[0].replace(',', '')) if amounts else None,
        })

    return results


# 連接資料庫
conn = sqlite3.connect('data/mops_announcements.db')
cursor = conn.cursor()

# 取得最新一批資料
cursor.execute('SELECT MAX(announce_date) FROM announcements')
latest_date = cursor.fetchone()[0]

# 取得該日期的公告
cursor.execute('''
    SELECT stock_code, company_name, subject, content, has_appraiser_info, is_real_estate_related
    FROM announcements
    WHERE announce_date = ?
''', (latest_date,))
rows = [{'stock_code': r[0], 'company_name': r[1], 'subject': r[2], 'content': r[3],
         'has_appraiser_info': r[4], 'is_real_estate_related': r[5]} for r in cursor.fetchall()]

total_appraiser = sum(1 for r in rows if r['has_appraiser_info'])
real_estate_only = [r for r in rows if r.get('is_real_estate_related') and not r['has_appraiser_info']]

# 建構訊息
today_str = datetime.now().strftime('%Y-%m-%d')

tg_message = f"📋 *Template 1* - 原始完整版\n"
tg_message += f"{'─' * 25}\n"
tg_message += f"✅ *MOPS 收集器完成*\n\n"
tg_message += f"📅 日期：{today_str}\n"
tg_message += f"📊 總公告：{len(rows)} 筆\n"
tg_message += f"🏢 估價相關：{total_appraiser} 筆\n"

if total_appraiser > 0:
    # 第一部分：公司摘要清單
    tg_message += f"\n*📋 公司清單：*\n"
    seen_companies = set()
    for row in rows:
        if row['has_appraiser_info']:
            key = f"{row['stock_code']}_{row['company_name']}"
            if key not in seen_companies:
                seen_companies.add(key)
                tg_message += f"• [{row['stock_code']}] {row['company_name']}\n"

    # 第二部分：詳細內容
    tg_message += f"\n{'─' * 20}\n"
    tg_message += f"*📝 詳細內容：*\n"

    for row in rows:
        if row['has_appraiser_info']:
            stock_code = row['stock_code']
            company_name = row['company_name']
            subject = row['subject'][:80] + "..." if len(row['subject']) > 80 else row['subject']

            # 提取估價師事務所資訊
            appraiser_info = extract_appraiser_info(row['content'])

            tg_message += f"\n*[{stock_code}] {company_name}*\n"
            tg_message += f"{subject}\n"

            if appraiser_info:
                info = appraiser_info[0]
                if info.get('appraiser_firm'):
                    tg_message += f"🏛 事務所：{info['appraiser_firm'][:60]}\n"
                if info.get('appraiser_names'):
                    tg_message += f"👤 估價師：{info['appraiser_names'][:40]}\n"
                if info.get('appraisal_amount'):
                    amount = info['appraisal_amount']
                    if amount >= 100000000:
                        tg_message += f"💰 金額：{amount/100000000:.2f} 億\n"
                    elif amount >= 10000:
                        tg_message += f"💰 金額：{amount/10000:.0f} 萬\n"
                    else:
                        tg_message += f"💰 金額：{amount:,} 元\n"

            tg_message += f"🔗 [Yahoo](https://tw.stock.yahoo.com/quote/{stock_code})\n"

# 底部
tg_message += f"\n{'─' * 20}\n"
tg_message += f"📁 資料庫：`mops_announcements.db`"

# 發送
print('發送 Template 1...')
url = f'https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage'
payload = {
    'chat_id': TELEGRAM_CHAT_ID,
    'text': tg_message,
    'parse_mode': 'Markdown'
}
response = requests.post(url, json=payload, timeout=10)
print(f'Response: {response.status_code}')
if response.status_code != 200:
    print(response.text)
else:
    print('發送成功！')

conn.close()
