32 lines
1.8 KiB
Python
32 lines
1.8 KiB
Python
"""信号模型"""
|
|
from .base import Base
|
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
from sqlalchemy import BigInteger, Integer, VARCHAR, Text, Float, Boolean, ForeignKey
|
|
from typing import Optional
|
|
|
|
|
|
class Signal(Base):
|
|
__tablename__ = "signals"
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
|
source: Mapped[Optional[str]] = mapped_column(VARCHAR(50), nullable=True)
|
|
content: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
impact_score: Mapped[Optional[float]] = mapped_column(Float, nullable=True)
|
|
priority: Mapped[str] = mapped_column(VARCHAR(20), nullable=False, default="low")
|
|
processed: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)
|
|
strategic_analysis: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
tasks_generated: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
feishu_item_id: Mapped[Optional[int]] = mapped_column(
|
|
BigInteger, ForeignKey("feishu_items.id"), nullable=True, index=True
|
|
)
|
|
matched_project_id: Mapped[Optional[int]] = mapped_column(BigInteger, nullable=True, index=True)
|
|
title: Mapped[Optional[str]] = mapped_column(VARCHAR(200), nullable=True)
|
|
signal_type: Mapped[Optional[str]] = mapped_column(VARCHAR(50), nullable=True, index=True)
|
|
summary: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
reasoning: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
confidence: Mapped[Optional[float]] = mapped_column(Float, nullable=True)
|
|
recommended_action: Mapped[Optional[str]] = mapped_column(VARCHAR(50), nullable=True)
|
|
status: Mapped[str] = mapped_column(VARCHAR(50), nullable=False, default="待处理", index=True)
|
|
|
|
feedbacks = relationship("SignalFeedback", back_populates="signal", cascade="all, delete-orphan")
|