from enum import StrEnum class StatusValue(StrEnum): INITIATED = "立项" TODO = "待办" DRAFT = "草稿" POLICY_DRAFT = "草案" VALID = "有效" APPROVING = "审批中" PENDING_APPROVAL = "待审批" PENDING = "pending" ACCEPTED = "验收" COMPLETED_CN = "已完成" DONE_CN = "完成" REVIEWED = "复盘" ARCHIVED = "归档" CLOSED_CN = "关闭" CLOSED = "closed" RESOLVED = "resolved" DONE = "done" COMPLETED = "completed" GENERATED = "已生成" UNKNOWN = "未知" PAID = "已付款" UNPAID = "未付款" UNDELIVERED = "未到货" INVOICE_NOT_RECEIVED = "未收票" NORMAL = "normal" NORMAL_CN = "正常" LATE = "迟到" LEAVE_EARLY = "早退" MISSING_PUNCH = "缺卡" ABSENT = "旷工" ABNORMAL = "异常" OPEN = "open" RUNNING = "running" DRY_RUN = "dry_run" class RiskLevel(StrEnum): LOW = "low" MEDIUM = "medium" HIGH = "high" class PriorityValue(StrEnum): P2 = "P2" class SourceSystem(StrEnum): INTERNAL = "internal" LEGACY_MYSQL = "legacy_mysql" class AccountType(StrEnum): BANK = "bank" class VersionValue(StrEnum): V1_0 = "v1.0" class BusinessDomain(StrEnum): TASKS = "tasks" PROJECTS = "projects" FUND_ACCOUNTS = "fund-accounts" SUPPLIERS = "suppliers" class RiskEventType(StrEnum): OVERDUE_TASK = "overdue_task" DELAYED_PROJECT = "delayed_project" OVER_BUDGET_PROJECT = "over_budget_project" FUND_SAFETY_LINE = "fund_safety_line" SUPPLIER_RISK = "supplier_risk" DONE_STATUSES = frozenset( { StatusValue.DONE_CN, StatusValue.COMPLETED_CN, StatusValue.CLOSED_CN, StatusValue.DONE, StatusValue.COMPLETED, StatusValue.CLOSED, } ) PENDING_APPROVAL_STATUSES = frozenset( { StatusValue.DRAFT, StatusValue.APPROVING, StatusValue.PENDING_APPROVAL, StatusValue.PENDING, } ) PROJECT_CLOSED_STATUSES = frozenset( { StatusValue.ACCEPTED, StatusValue.COMPLETED_CN, StatusValue.REVIEWED, StatusValue.ARCHIVED, StatusValue.CLOSED_CN, StatusValue.CLOSED, } ) ATTENDANCE_ABNORMAL_STATUSES = frozenset( { StatusValue.LATE, StatusValue.LEAVE_EARLY, StatusValue.MISSING_PUNCH, StatusValue.ABSENT, StatusValue.ABNORMAL, } ) SUPPLIER_RISK_LEVELS = frozenset({RiskLevel.MEDIUM, RiskLevel.HIGH}) CLOSED_RISK_STATUSES = frozenset({StatusValue.CLOSED, StatusValue.RESOLVED})