feat: HSAP platform v2 — modular navigation, quality review, audit log, world model simulation
Major changes: - New frontend (platform/web/): Vite + React 18 + TypeScript + Tailwind - 4-module navigation: 数据送标 / 模型管理 / 车队管理 / 系统管理 - Data catalog with charts (DMS/ADAS/Lane 3-tab view) - Quality review workflow (标注质检): Good/Fine/Bad scoring with auto-advance - Audit enhancements: batch operations, rejection categories, Feishu notifications - Operation audit log (操作日志) - World model simulation studio (仿真工坊) - Dataset version management with snapshots and diff - ADAS 7-class dataset integration (138K images organized + compressed) - User management with Feishu integration and pagination - CRUD/search/filter on all pages, card layout redesign - PIL-optimized image overlay rendering - Auto-snapshot on build, in_review workflow stage - Removed embedded algorithm code (now in workspace)
This commit is contained in:
@@ -58,6 +58,24 @@ def list_users(db: Session) -> list[User]:
|
||||
return db.query(User).options(joinedload(User.roles)).order_by(User.id).all()
|
||||
|
||||
|
||||
def list_users_paginated(
|
||||
db: Session,
|
||||
search: str = "",
|
||||
role_code: str = "",
|
||||
offset: int = 0,
|
||||
limit: int = 20,
|
||||
) -> tuple[list[User], int]:
|
||||
q = db.query(User).options(joinedload(User.roles))
|
||||
if search:
|
||||
like = f"%{search}%"
|
||||
q = q.filter((User.name.ilike(like)) | (User.email.ilike(like)))
|
||||
if role_code:
|
||||
q = q.join(User.roles).filter(Role.code == role_code)
|
||||
total = q.count()
|
||||
users = q.order_by(User.id).offset(offset).limit(limit).all()
|
||||
return users, total
|
||||
|
||||
|
||||
def set_user_roles(db: Session, user_id: int, role_codes: list[str]) -> User | None:
|
||||
user = get_user_by_id(db, user_id)
|
||||
if not user:
|
||||
|
||||
Reference in New Issue
Block a user