API для работы с файлами, индексация файлов и результатов распощнавания
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
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 = relationship("Audio", back_populates="ai_conclusion")
|
||||
@@ -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
|
||||
}
|
||||
@@ -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("conclusion.id"))
|
||||
version = Column(Integer)
|
||||
content = Column(Text)
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from apiApp.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
|
||||
Reference in New Issue
Block a user