Files
secondary-school-grade-archive/backend/app/services/seed.py
T
dekun 43483bf56f 移动端拍照上传、奥数区、学段约束解题与 AI 模型配置。
- 手机/平板响应式布局,支持拍照与相册上传

- 学生详情新增奥数区,按初/高中学段生成解法并禁止超纲

- 系统设置可配置 Ollama 或 OpenAI 兼容 API

- 更新 frontend/dist 与使用说明
2026-06-28 13:39:54 +08:00

67 lines
1.9 KiB
Python

from sqlalchemy.orm import Session
from app.core.config import settings
from app.core.security import get_password_hash
from app.models.user import Subject, SystemSettings, User
DEFAULT_SUBJECTS = [
"语文",
"数学",
"英语",
"物理",
"化学",
"生物",
"历史",
"地理",
"政治",
]
def seed_subjects(db: Session) -> None:
existing = {s.name for s in db.query(Subject).all()}
for name in DEFAULT_SUBJECTS:
if name not in existing:
db.add(Subject(name=name))
db.commit()
def seed_admin_and_settings(db: Session) -> None:
row = db.get(SystemSettings, 1)
if row is None:
db.add(
SystemSettings(
id=1,
registration_enabled=True,
ai_provider="ollama",
ollama_base_url=settings.OLLAMA_BASE_URL,
ollama_model=settings.OLLAMA_MODEL,
openai_base_url=settings.OPENAI_BASE_URL,
openai_model=settings.OPENAI_MODEL,
)
)
else:
if not row.ollama_base_url:
row.ollama_base_url = settings.OLLAMA_BASE_URL
if not row.ollama_model:
row.ollama_model = settings.OLLAMA_MODEL
if not row.openai_base_url:
row.openai_base_url = settings.OPENAI_BASE_URL
if not row.openai_model:
row.openai_model = settings.OPENAI_MODEL
if not row.ai_provider:
row.ai_provider = "ollama"
admin = db.query(User).filter(User.username == settings.ADMIN_DEFAULT_USERNAME).first()
if admin is None:
db.add(
User(
username=settings.ADMIN_DEFAULT_USERNAME,
password_hash=get_password_hash(settings.ADMIN_DEFAULT_PASSWORD),
is_superuser=True,
)
)
elif not admin.is_superuser:
admin.is_superuser = True
db.commit()