PMFlow/backend/app/api/users_api/shared.py

50 lines
1.3 KiB
Python

from __future__ import annotations
import csv
from datetime import datetime
from io import BytesIO, StringIO
from typing import Any, Optional
from fastapi import APIRouter, Depends, File, HTTPException, Query, UploadFile, status
from pydantic import BaseModel
from sqlalchemy import and_, delete, func, or_, select, update
from sqlalchemy.exc import IntegrityError
from sqlalchemy.ext.asyncio import AsyncSession
from ...database import get_db
from ...dependencies import (
get_current_active_user,
get_current_user,
get_tenant_id,
require_roles,
require_self_or_manager,
)
from ...models import (
SkillTag,
Task,
User,
UserProject,
UserRole,
UserSkillBinding,
UserStatus,
UserWorkload,
)
from ...schemas import (
UserCreate,
UserResetPasswordRequest,
UserResponse,
UserStatusPatchRequest,
UserUpdate,
)
from ...services import skill_service
from ...services.ai_pmo_kernel_service import AIPMOKernelService
from ...services.auth import AuthService
from ...services.operation_log_service import log_operation
from ...utils.timezone import now_cn_naive
router = APIRouter(prefix="/users", tags=["users"])
COMPLETED_TASK_STATUSES = {"done", "completed", "closed", "resolved", "archived"}
MANAGER_ROLE_SET = {"BOSS", "ADMIN"}
VALID_ROLE_VALUES = {r.value for r in UserRole}