"""Simple AI analysis helper for fleet companies — a short, plain-language
read of a company's own trucks/drivers/earnings/orders, generated on demand
(not on every page load) via the same call_llm() used by the customer chat
assistant. Cached per company for a few minutes since it's a summary of
slow-moving data, not something that needs to be live."""

from django.core.cache import cache

from .llm_client import call_llm

_CACHE_TTL_SECONDS = 600


def _build_prompt(company, trucks, drivers, earnings_summary, recent_orders, lang):
    truck_count = len(trucks)
    active_trucks = sum(1 for t in trucks if t.get('is_active', True))
    driver_count = len(drivers)
    busy_drivers = sum(1 for d in drivers if d.get('status_reason') == 'in_transit')

    recent_lines = []
    for o in recent_orders[:15]:
        recent_lines.append(f"- Order #{o['id']}: {o['status']}, TSh {o.get('total_amount', 0)}, {o.get('delivery_date', '')}")

    lang_instruction = 'Reply in Swahili.' if lang == 'sw' else 'Reply in English.'

    return (
        "You are a simple business assistant for a small delivery fleet company using the PickkerMarket platform. "
        "Given the numbers below, write a short, plain-language summary a busy small-business owner can read in "
        "under 30 seconds. Use 3-5 short bullet points: one on truck/driver utilization, one on order volume/trend, "
        "one on earnings (pending vs paid), and one practical suggestion if something stands out (e.g. idle trucks, "
        "a lot of pending payouts, low order volume). No headers, no markdown tables, no long paragraphs, just short "
        f"bullet lines starting with '-'. {lang_instruction}\n\n"
        f"Company: {company.get('company_name', '')}\n"
        f"Trucks: {truck_count} total, {active_trucks} active\n"
        f"Drivers: {driver_count} total, {busy_drivers} currently delivering\n"
        f"Earnings: TSh {earnings_summary.get('pending_amount', 0)} pending ({earnings_summary.get('pending_count', 0)} deliveries), "
        f"TSh {earnings_summary.get('paid_amount', 0)} paid out, TSh {earnings_summary.get('lifetime_amount', 0)} lifetime\n"
        f"Recent orders ({len(recent_orders)} total, showing up to 15):\n" + ("\n".join(recent_lines) or "(none yet)")
    )


def get_company_insights(company, trucks, drivers, earnings_summary, recent_orders, lang='en', force_refresh=False):
    """Returns plain text — a short AI-written summary, or a friendly
    fallback string if every LLM provider is unavailable (never raises)."""
    cache_key = f"pickker_fleet_ai_insights_{company['id']}_{lang}"
    if not force_refresh:
        cached = cache.get(cache_key)
        if cached:
            return cached

    if not trucks and not drivers and not recent_orders:
        text = (
            "Add a truck or driver and complete a few deliveries — once there's some activity, "
            "this will show a short summary of how your fleet is doing."
            if lang != 'sw' else
            "Ongeza lori au dereva na kamilisha maagizo machache — mara shughuli ikianza, "
            "hapa utaona muhtasari mfupi wa jinsi meli yako inavyofanya kazi."
        )
        return text

    prompt = _build_prompt(company, trucks, drivers, earnings_summary, recent_orders, lang)
    reply = call_llm([{'role': 'user', 'content': prompt}], temperature=0.3)

    if not reply:
        reply = (
            "AI insights are temporarily unavailable — please check back shortly."
            if lang != 'sw' else
            "Uchambuzi wa AI haupatikani kwa sasa — tafadhali jaribu tena baadaye."
        )
        return reply

    cache.set(cache_key, reply, _CACHE_TTL_SECONDS)
    return reply
