from collections import Counter from .parser import parse_csv from .rules import validate def evaluate(text: str) -> dict: samples, parse_issues = parse_csv(text) issues = parse_issues + validate(samples) if not samples: issues.append({"line": 0, "code": "EMPTY", "detail": "没有可用采样"}) codes = Counter(issue["code"] if isinstance(issue, dict) else issue.code for issue in issues) details = [issue if isinstance(issue, dict) else vars(issue) for issue in issues] return {"sample_count": len(samples), "issue_count": len(issues), "issues_by_code": dict(sorted(codes.items())), "issues": details, "passed": not issues}