77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
"""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,
|
|
}
|