/
Sturon
/
Diplom
Обзор
Документация
Войти
/
Sturon
/
Diplom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
analyzer/app/models.py
77 строк
3 KB
Sturon
Initial
03 июн 2026, 15:01
03 июн 2026, 15:01
17b44a2
Код
Авторство
О чём код?
from typing import Any from pydantic import BaseModel, ConfigDict, Field class Roi(BaseModel): model_config = ConfigDict(populate_by_name=True) name: str = Field(default="Full frame", max_length=120) order: int = Field(default=0, ge=0) x: int = Field(ge=0) y: int = Field(ge=0) width: int = Field(gt=0) height: int = Field(gt=0) class DetectionRules(BaseModel): model_config = ConfigDict(populate_by_name=True) max_defects: int = Field(default=0, alias="maxDefects", ge=0) min_confidence: float = Field(default=0.0, alias="minConfidence", ge=0.0, le=1.0) brightness_min: float = Field(default=8.0, alias="brightnessMin", ge=0.0, le=255.0) brightness_max: float = Field(default=247.0, alias="brightnessMax", ge=0.0, le=255.0) max_dark_ratio: float = Field(default=0.35, alias="maxDarkRatio", ge=0.0, le=1.0) max_bright_ratio: float = Field(default=0.35, alias="maxBrightRatio", ge=0.0, le=1.0) min_texture: float = Field(default=0.0, alias="minTexture", ge=0.0) difference_threshold: int = Field(default=35, alias="differenceThreshold", ge=1, le=255) min_defect_area: int = Field(default=80, alias="minDefectArea", ge=1) alignment_search_radius: int = Field(default=12, alias="alignmentSearchRadius", ge=0, le=64) alignment_coarse_step: int = Field(default=4, alias="alignmentCoarseStep", ge=1, le=16) edge_difference_weight: float = Field(default=1.7, alias="edgeDifferenceWeight", ge=0.0, le=5.0) structured_pixel_weight: float = Field(default=0.85, alias="structuredPixelWeight", ge=0.0, le=3.0) class CameraRequest(BaseModel): model_config = ConfigDict(populate_by_name=True) snapshot_url: str | None = Field(default=None, alias="snapshotUrl") timeout_ms: int = Field(default=3000, alias="timeoutMs", ge=250, le=30000) class EvaluationParameters(BaseModel): model_config = ConfigDict(populate_by_name=True) request_id: str | None = Field(default=None, alias="requestId") profile_id: int | None = Field(default=None, alias="profileId") rois: list[Roi] = Field(default_factory=list) rules: DetectionRules = Field(default_factory=DetectionRules) camera: CameraRequest | None = None class DefectResponse(BaseModel): model_config = ConfigDict(populate_by_name=True) defect_type: str = Field(alias="defectType") roi_name: str = Field(alias="roiName") roi_order: int = Field(alias="roiOrder") confidence: float x: int y: int width: int height: int metrics: dict[str, Any] class EvaluationResponse(BaseModel): model_config = ConfigDict(populate_by_name=True) result: bool request_id: str | None = Field(alias="requestId") profile_id: int | None = Field(alias="profileId") defect_count: int = Field(alias="defectCount") processing_time_ms: int = Field(alias="processingTimeMs") image_width: int = Field(alias="imageWidth") image_height: int = Field(alias="imageHeight") summary: str defects: list[DefectResponse]