feat: Phase 1 后端骨架主体入库(补 backend/app 主体与 requirements.txt)
上轮 3 次 commit 只入库了修补文件,主体目录漏入库。本次补入 backend/app/、backend/requirements.txt、backend/scripts/__init__.py。同步在 .gitignore 加 homePC/(制片人家用机带过来的参考文件,不进库)。
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
"""
|
||||
用户模型 — SQLModel
|
||||
|
||||
角色体系(不再改):
|
||||
- zhipianren = 制片人 / 管理员 = 全部权限
|
||||
- zebian = 责编 = 维护仪表盘 / 知识库 / 排期
|
||||
- biandao = 编导 = 使用 TPS / 查看知识库 / 生成报题单 / 个人热点雷达
|
||||
"""
|
||||
|
||||
from enum import Enum
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from sqlalchemy import Column
|
||||
from sqlalchemy import DateTime as SADateTime
|
||||
from sqlalchemy.sql import func as sa_func
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class UserRole(str, Enum):
|
||||
"""用户角色枚举,值与数据库 CHECK 约束一致。"""
|
||||
zhipianren = "zhipianren" # 制片人 / 管理员
|
||||
zebian = "zebian" # 责编
|
||||
biandao = "biandao" # 编导
|
||||
|
||||
|
||||
class User(SQLModel, table=True):
|
||||
__tablename__ = "users"
|
||||
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
username: str = Field(max_length=50, unique=True, index=True)
|
||||
display_name: str = Field(max_length=100)
|
||||
password_hash: str = Field(max_length=128)
|
||||
role: UserRole = Field(default=UserRole.biandao, max_length=20)
|
||||
profile_text: str | None = Field(default=None)
|
||||
is_active: bool = Field(default=True)
|
||||
|
||||
created_at: datetime | None = Field(
|
||||
default=None,
|
||||
sa_column=Column(SADateTime(timezone=True), nullable=False, server_default=sa_func.now()),
|
||||
)
|
||||
updated_at: datetime | None = Field(
|
||||
default=None,
|
||||
sa_column=Column(SADateTime(timezone=True), nullable=False, server_default=sa_func.now()),
|
||||
)
|
||||
Reference in New Issue
Block a user