alabuga/backend/app/schemas/mission.py
danilgryaznev e050bd46ef 1 vers
2025-09-21 19:30:55 +02:00

91 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Схемы миссий."""
from __future__ import annotations
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
from app.models.mission import MissionDifficulty, SubmissionStatus
class MissionBase(BaseModel):
"""Минимальная информация о миссии."""
id: int
title: str
description: str
xp_reward: int
mana_reward: int
difficulty: MissionDifficulty
is_active: bool
class Config:
from_attributes = True
class MissionCompetencyRewardRead(BaseModel):
"""Прокачка компетенции за миссию."""
competency_id: int
competency_name: str
level_delta: int
class MissionDetail(MissionBase):
"""Полная карточка миссии."""
minimum_rank_id: Optional[int]
artifact_id: Optional[int]
prerequisites: list[int]
competency_rewards: list[MissionCompetencyRewardRead]
created_at: datetime
updated_at: datetime
class MissionCreateReward(BaseModel):
"""Описание награды компетенции при создании миссии."""
competency_id: int
level_delta: int = 1
class MissionCreate(BaseModel):
"""Схема создания миссии."""
title: str
description: str
xp_reward: int
mana_reward: int
difficulty: MissionDifficulty = MissionDifficulty.MEDIUM
minimum_rank_id: Optional[int] = None
artifact_id: Optional[int] = None
prerequisite_ids: list[int] = []
competency_rewards: list[MissionCreateReward] = []
branch_id: Optional[int] = None
branch_order: int = 1
class MissionSubmissionCreate(BaseModel):
"""Отправка отчёта по миссии."""
comment: Optional[str] = None
proof_url: Optional[str] = None
class MissionSubmissionRead(BaseModel):
"""Получение статуса отправки."""
mission_id: int
status: SubmissionStatus
comment: Optional[str]
proof_url: Optional[str]
awarded_xp: int
awarded_mana: int
updated_at: datetime
class Config:
from_attributes = True