"""Core event models and enums.""" from __future__ import annotations from dataclasses import dataclass, field from enum import Enum from typing import Any, Optional from ..utils.timezone import now_cn_aware class EventType(Enum): """系统事件类型定义""" SIGNAL_INGESTED = "signal.ingested" SIGNAL_ANALYZED = "signal.analyzed" SIGNAL_FEEDBACK = "signal.feedback" SIGNAL_PRIORITY_CHANGED = "signal.priority_changed" TASK_ASSIGNED = "task.assigned" TASK_STARTED = "task.started" TASK_COMPLETED = "task.completed" TASK_FAILED = "task.failed" CODE_COMMIT = "code.commit" CODE_REVIEW_REQUESTED = "code.review_requested" CODE_DRAFT_GENERATED = "code.draft_generated" AUDIT_STARTED = "audit.started" AUDIT_COMPLETED = "audit.completed" AUDIT_FAILED = "audit.failed" AUTO_MERGE_REQUESTED = "auto_merge.requested" AUTO_MERGE_SUCCESS = "auto_merge.success" AUTO_MERGE_FAILED = "auto_merge.failed" AUTO_MERGE_COOLDOWN = "auto_merge.cooldown" PLANE_SYNC_SUCCESS = "integration.plane.success" PLANE_SYNC_FAILED = "integration.plane.failed" LARK_NOTIFY_SUCCESS = "integration.lark.success" LARK_NOTIFY_FAILED = "integration.lark.failed" DOMAIN_CREATED = "domain.created" DOMAIN_UPDATED = "domain.updated" DOMAIN_DELETED = "domain.deleted" DOMAIN_SWITCHED = "domain.switched" DOMAIN_SYNCING = "domain.syncing" DOMAIN_SYNCED = "domain.synced" PROJECT_CREATED = "project.created" PROJECT_UPDATED = "project.updated" PROJECT_DELETED = "project.deleted" SIGNAL_LINKED = "signal.linked" SIGNAL_UNLINKED = "signal.unlinked" @dataclass class Event: """事件数据结构""" type: EventType data: dict[str, Any] timestamp: float = field(default_factory=lambda: now_cn_aware().timestamp()) source: Optional[str] = None correlation_id: Optional[str] = None metadata: dict[str, Any] = field(default_factory=dict) def to_dict(self) -> dict[str, Any]: return { "type": self.type.value, "data": self.data, "timestamp": self.timestamp, "source": self.source, "correlation_id": self.correlation_id, "metadata": self.metadata, }