first commit

This commit is contained in:
2026-01-09 19:14:41 +08:00
commit 9f3c96ce73
67 changed files with 9636 additions and 0 deletions

54
backend/app/init_admin.py Normal file
View File

@@ -0,0 +1,54 @@
"""
初始化管理員帳號腳本
"""
from sqlalchemy.orm import Session
from app.models import engine, Base
from app.models.user import User, UserRole
from app.utils.security import get_password_hash
import os
def create_admin_user(db: Session):
"""建立預設管理員帳號"""
admin_email = os.getenv("ADMIN_EMAIL", "admin@example.com")
admin_password = os.getenv("ADMIN_PASSWORD", "admin123")
# 檢查是否已存在
existing = db.query(User).filter(User.email == admin_email).first()
if existing:
print(f"Admin user already exists: {admin_email}")
return existing
# 建立管理員
admin = User(
email=admin_email,
password_hash=get_password_hash(admin_password),
display_name="Administrator",
language="zh-TW",
role=UserRole.admin
)
db.add(admin)
db.commit()
db.refresh(admin)
print(f"Admin user created: {admin_email}")
return admin
def init_database():
"""初始化資料庫並建立預設帳號"""
from sqlalchemy.orm import sessionmaker
# 建立所有資料表
Base.metadata.create_all(bind=engine)
print("Database tables created.")
# 建立 session
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
db = SessionLocal()
try:
create_admin_user(db)
finally:
db.close()
if __name__ == "__main__":
init_database()