feat(core): initialize project structure, postgres schema and docker setup
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Optional, List
|
||||
|
||||
@dataclass
|
||||
class SourceChannel:
|
||||
id: Optional[int]
|
||||
channel_id: int
|
||||
username: Optional[str]
|
||||
title: Optional[str]
|
||||
is_active: bool = True
|
||||
created_at: Optional[str] = None
|
||||
|
||||
@dataclass
|
||||
class TargetChannel:
|
||||
id: Optional[int]
|
||||
channel_id: int
|
||||
title: Optional[str]
|
||||
username: Optional[str]
|
||||
post_interval_min: int = 30
|
||||
last_post_time: Optional[str] = None
|
||||
is_active: bool = True
|
||||
created_at: Optional[str] = None
|
||||
|
||||
@dataclass
|
||||
class Post:
|
||||
id: Optional[int]
|
||||
source_channel_id: int
|
||||
source_message_id: int
|
||||
raw_text: Optional[str]
|
||||
media_path: Optional[str] = None
|
||||
media_type: Optional[str] = None
|
||||
content_hash: Optional[str] = None
|
||||
tags: List[str] = field(default_factory=list)
|
||||
is_duplicate: bool = False
|
||||
duplicate_of_id: Optional[int] = None
|
||||
similarity_reason: Optional[str] = None
|
||||
subject: Optional[str] = None
|
||||
ai_text: Optional[str] = None
|
||||
suggested_target_id: Optional[int] = None
|
||||
target_channel_id: Optional[int] = None
|
||||
status: str = "pending_ai" # pending_ai, pending_review, approved, scheduled, published, rejected
|
||||
review_message_id: Optional[int] = None
|
||||
scheduled_at: Optional[str] = None
|
||||
published_at: Optional[str] = None
|
||||
created_at: Optional[str] = None
|
||||
|
||||
@dataclass
|
||||
class Setting:
|
||||
key: str
|
||||
value: str
|
||||
description: Optional[str] = None
|
||||
Reference in New Issue
Block a user