intra_max_bot/app/models.py
2026-03-19 16:47:49 +03:00

82 lines
1.6 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from datetime import datetime, timezone
from enum import StrEnum
from typing import Any
class ApplicationStatus(StrEnum):
NEW = "new"
IN_PROGRESS = "in_progress"
NEED_INFO = "need_info"
DONE = "done"
REJECTED = "rejected"
class ExternalSyncStatus(StrEnum):
NOT_SENT = "not_sent"
SENT = "sent"
FAILED = "failed"
DISABLED = "disabled"
@dataclass(slots=True)
class ApplicationCreate:
customer_id: int | None
customer_name: str
chat_id: int | None
category: str
description: str
attachments_json: str = "[]"
source: str = "bot"
@dataclass(slots=True)
class ApplicationRecord:
id: int
customer_id: int | None
customer_name: str
chat_id: int | None
category: str
description: str
attachments_json: str
status: str
external_sync_status: str
external_id: str | None
external_error: str | None
source: str
created_at: str
updated_at: str
@dataclass(slots=True)
class ApplicationEventRecord:
id: int
application_id: int
event_type: str
actor: str
details_json: str
created_at: str
@dataclass(slots=True)
class ChatRecord:
chat_id: int
chat_type: str
title: str | None
username: str | None
last_seen_at: str
is_active: int
@dataclass(slots=True)
class ExternalCreateResult:
ok: bool
external_id: str | None = None
error: str | None = None
raw_response: dict[str, Any] | None = None
def utc_now_iso() -> str:
return datetime.now(timezone.utc).replace(microsecond=0).isoformat().replace("+00:00", "Z")