add autoLoader

This commit is contained in:
PoturaevPetr
2025-12-25 21:46:19 +05:00
parent d4db29f710
commit 8b471c771a
12 changed files with 244 additions and 1 deletions
+22
View File
@@ -0,0 +1,22 @@
from sqlalchemy import Column, UUID, ForeignKey, DateTime, JSON
from sqlalchemy.orm import relationship
from apiApp.database import Base
import uuid
from datetime import datetime
class AiConclusion(Base):
__tablename__ = "ai_conclusion"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
audio_id = Column(UUID(as_uuid=True), ForeignKey("audio.id"), nullable=False)
conclusion = Column(JSON, default=lambda: {
"transcription": [],
"ai_transcription": [],
"conclusion": {}
})
index_date = Column(DateTime, default=datetime.utcnow)
end_date = Column(DateTime)
audio_id = Column(UUID(as_uuid=True), ForeignKey("audio.id"))
version = relationship("ConclusionVersion", back_populates="ai_conclusion")
+28
View File
@@ -0,0 +1,28 @@
from sqlalchemy import Column, String, DateTime, UUID, ForeignKey, Float, Integer
from sqlalchemy.orm import relationship
from apiApp.database import Base
import uuid
from datetime import datetime
class Audio(Base):
__tablename__ = "audio"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
filename = Column(String(255), nullable=False)
index_date = Column(DateTime, default=datetime.utcnow)
file_path = Column(String(500))
duration = Column(Float)
file_size = Column(Integer)
ai_conclusion = relationship("AiConclusion", back_populates="audio", cascade="all, delete-orphan")
def to_dict(self):
return {
"id": str(self.id),
"filename": self.filename,
"index_date": self.index_date.isoformat() if self.index_date else None,
"file_path": self.file_path,
"duration": self.duration,
"file_size": self.file_size
}
+12
View File
@@ -0,0 +1,12 @@
from sqlalchemy import Column, UUID, ForeignKey, Integer, Text
from apiApp.database import Base
import uuid
class ConclusionVersion(Base):
__tablename__ = "conclusion_version"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
conclusion_id = Column(UUID(as_uuid=True), ForeignKey("ai_conclusion.id"))
version = Column(Integer)
content = Column(Text)
+16
View File
@@ -0,0 +1,16 @@
from sqlalchemy import Column, UUID, String, Integer
from sqlalchemy.orm import relationship
from apiApp.database import Base
import uuid
class Operator(Base):
__tablename__ = "operator"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
fio = Column(String(100))
num = Column(Integer)
calls = relationship("Call", back_populates="operator")
+31
View File
@@ -0,0 +1,31 @@
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from autoLoader.config import DATABASE_URL
# Создание engine
engine = create_engine(
DATABASE_URL,
connect_args={"check_same_thread": False} if "sqlite" in DATABASE_URL else {}
)
# SessionLocal
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# Base
Base = declarative_base()
# Зависимость для получения сессии БД
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
# from apiApp.database.Operator import Operator
from apiApp.database.Audio import Audio
from apiApp.database.AiConclusion import AiConclusion
from apiApp.database.ConclusionVersion import ConclusionVersion