"""Helper: connect to the user's logged-in Chrome via CDP and return the FFG eCall page."""
from playwright.sync_api import sync_playwright

CDP = "http://127.0.0.1:9223"
ANTRAG = "71545616"; TARGET = "6078747"

def get_ffg_page(p):
    browser = p.chromium.connect_over_cdp(CDP)
    ctx = browser.contexts[0]
    target = None
    for pg in ctx.pages:
        if "ecall.ffg.at" in pg.url:
            target = pg
            break
    if target is None:
        raise RuntimeError("Kein ecall.ffg.at Tab. Tabs: " + ", ".join(pg.url for pg in ctx.pages))
    target.bring_to_front()
    return browser, target

def goto_project(pg):
    pg.goto(f"https://ecall.ffg.at/Cockpit/Cockpit.aspx?target={TARGET}&antrag={ANTRAG}")
    pg.wait_for_load_state("networkidle", timeout=30000); pg.wait_for_timeout(800)

def click_menu(pg, text, exact=True):
    for a in pg.query_selector_all("a"):
        t = (a.inner_text() or "").strip()
        ok = (t == text) if exact else (text.lower() in t.lower())
        if ok and a.is_visible():
            a.click(); pg.wait_for_load_state("networkidle", timeout=30000); pg.wait_for_timeout(1000)
            return True
    return False

def section_status(pg):
    seen = {}
    for a in pg.query_selector_all("a"):
        t = " ".join((a.inner_text() or "").split())
        if not t or len(t) > 160: continue
        rot = "nicht befüllte Pflichtfelder" in t or "Verletzung" in t
        clean = t.replace("Es gibt nicht befüllte Pflichtfelder oder andere Verletzungen von Prüfregeln.", "").strip()
        if a.is_visible() and clean and len(clean) < 60:
            if clean not in seen or rot: seen[clean] = "ROT" if rot else "ok"
    return seen
