# -*- coding: utf-8 -*-
"""简单的任务结果汇总与格式化工具。"""
from __future__ import annotations

from typing import Iterable


def summarize_counts(task_results: Iterable[dict]) -> dict:
    """
    汇总多个任务的 counts，返回总计与逐任务明细。
    task_results: 形如 {"task_code": str, "counts": {...}} 的字典序列。
    """
    totals = {"fetched": 0, "inserted": 0, "updated": 0, "skipped": 0, "errors": 0}
    details = []

    for res in task_results:
        code = res.get("task_code") or res.get("code") or "UNKNOWN"
        counts = res.get("counts") or {}
        row = {"task_code": code}
        for key in totals.keys():
            val = int(counts.get(key, 0) or 0)
            row[key] = val
            totals[key] += val
        details.append(row)

    return {"total": totals, "details": details}


def format_report(summary: dict) -> str:
    """将 summarize_counts 的输出格式化为可读文案。"""
    lines = []
    totals = summary.get("total", {})
    lines.append(
        "TOTAL fetched={fetched} inserted={inserted} updated={updated} skipped={skipped} errors={errors}".format(
            fetched=totals.get("fetched", 0),
            inserted=totals.get("inserted", 0),
            updated=totals.get("updated", 0),
            skipped=totals.get("skipped", 0),
            errors=totals.get("errors", 0),
        )
    )
    for row in summary.get("details", []):
        lines.append(
            "{task_code}: fetched={fetched} inserted={inserted} updated={updated} skipped={skipped} errors={errors}".format(
                task_code=row.get("task_code", "UNKNOWN"),
                fetched=row.get("fetched", 0),
                inserted=row.get("inserted", 0),
                updated=row.get("updated", 0),
                skipped=row.get("skipped", 0),
                errors=row.get("errors", 0),
            )
        )
    return "\n".join(lines)
