/
dbccx
/
VestnikChecker
Обзор
Документация
Войти
/
dbccx
/
VestnikChecker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
database/models.py
56 строк
2 KB
t i a
Первый коммит: система проверки научных статей VestnikChecker
29 май 2026, 02:53
29 май 2026, 02:53
dc428ec
Код
Авторство
О чём код?
from sqlalchemy import Column, Integer, String, Float, Text, DateTime, ForeignKey, LargeBinary from sqlalchemy.orm import relationship from sqlalchemy.sql import func from database.connection import Base class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, autoincrement=True) username = Column(String, unique=True, nullable=False) password_hash = Column(String, nullable=False) role = Column(String, nullable=False) full_name = Column(String, nullable=False) created_at = Column(DateTime, server_default=func.now()) reports = relationship("Report", back_populates="reviewer") class Report(Base): __tablename__ = "reports" id = Column(Integer, primary_key=True, autoincrement=True) article_title = Column(String, nullable=False) file_name = Column(String, nullable=False) file_hash = Column(String, nullable=True) # Внешний ключ на пользователя reviewer_id = Column(Integer, ForeignKey("users.id"), nullable=False) reviewer = relationship("User", back_populates="reports") # Внешний ключ на настройки LLM llm_settings_id = Column(Integer, ForeignKey("llm_settings.id"), nullable=True) llm_settings = relationship("LLMSettings", back_populates="reports") content_category = Column(String, nullable=False) content_percentage = Column(Float, nullable=False) format_category = Column(String, nullable=False) format_percentage = Column(Float, nullable=False) result_json = Column(Text, nullable=False) original_pdf = Column(LargeBinary, nullable=True) report_pdf = Column(LargeBinary, nullable=True) created_at = Column(DateTime, server_default=func.now()) class LLMSettings(Base): __tablename__ = "llm_settings" id = Column(Integer, primary_key=True, autoincrement=True) provider = Column(String, nullable=False) api_key = Column(String, nullable=False) model_name = Column(String, nullable=False) system_prompt = Column(Text, nullable=False) base_url = Column(String, default="https://proxy.gen-api.ru/v1") temperature = Column(Float, default=0.3) max_tokens = Column(Integer, default=2000) updated_at = Column(DateTime, server_default=func.now()) reports = relationship("Report", back_populates="llm_settings")