Initial commit: Базовая структура сайта

This commit is contained in:
2026-02-11 12:06:30 +05:00
parent b41f161e8f
commit d9a2ad7f15
62 changed files with 3901 additions and 0 deletions

14
backend/app/models/__init__.py Executable file
View File

@@ -0,0 +1,14 @@
from app.models.service_db import (
AppUser,
AppRole,
LeaveEvent,
AppConfiguration
)
__all__ = [
"AppUser",
"AppRole",
"LeaveEvent",
"AppConfiguration"
]

View File

@@ -0,0 +1,57 @@
"""
Модели для служебной базы данных
"""
from sqlalchemy import Column, Integer, String, Date, ForeignKey, DateTime, Boolean
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.core.database import Base
class AppRole(Base):
"""Роли пользователей сервиса"""
__tablename__ = "app_roles"
id = Column(Integer, primary_key=True, index=True)
role_name = Column(String(50), unique=True, nullable=False)
users = relationship("AppUser", back_populates="role")
class AppUser(Base):
"""Пользователи сервиса дашбордов"""
__tablename__ = "app_users"
id = Column(Integer, primary_key=True, index=True)
login = Column(String(100), unique=True, nullable=False, index=True)
hashed_password = Column(String(255), nullable=False)
role_id = Column(Integer, ForeignKey("app_roles.id"), nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
is_active = Column(Boolean, default=True)
role = relationship("AppRole", back_populates="users")
leave_events = relationship("LeaveEvent", back_populates="user")
class LeaveEvent(Base):
"""События отпусков и больничных"""
__tablename__ = "leave_events"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("app_users.id"), nullable=False)
start_date = Column(Date, nullable=False)
end_date = Column(Date, nullable=False)
leave_type = Column(String(50), nullable=False) # 'Отпуск', 'Больничный'
created_at = Column(DateTime(timezone=True), server_default=func.now())
user = relationship("AppUser", back_populates="leave_events")
class AppConfiguration(Base):
"""Конфигурация сервиса (нечувствительные данные)"""
__tablename__ = "app_configuration"
id = Column(Integer, primary_key=True, index=True)
key = Column(String(100), unique=True, nullable=False, index=True)
value = Column(String(500), nullable=True)
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())