- Add Prometheus metrics for marketplace API throughput and error rates with new dashboard panels - Implement confidential transaction models with encryption support and access control - Add key management system with registration, rotation, and audit logging - Create services and registry routers for service discovery and management - Integrate ZK proof generation for privacy-preserving receipts - Add metrics instru
77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Dict, List, Optional
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class MatchRequestPayload(BaseModel):
|
|
job_id: str
|
|
requirements: Dict[str, Any] = Field(default_factory=dict)
|
|
hints: Dict[str, Any] = Field(default_factory=dict)
|
|
top_k: int = Field(default=1, ge=1, le=50)
|
|
redis_error: Optional[str] = None
|
|
|
|
|
|
class MatchCandidate(BaseModel):
|
|
miner_id: str
|
|
addr: str
|
|
proto: str
|
|
score: float
|
|
explain: Optional[str] = None
|
|
eta_ms: Optional[int] = None
|
|
price: Optional[float] = None
|
|
|
|
|
|
class MatchResponse(BaseModel):
|
|
job_id: str
|
|
candidates: List[MatchCandidate]
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
status: str
|
|
db: bool
|
|
redis: bool
|
|
miners_online: int
|
|
db_error: Optional[str] = None
|
|
redis_error: Optional[str] = None
|
|
|
|
|
|
class MetricsResponse(BaseModel):
|
|
detail: str = "Prometheus metrics output"
|
|
|
|
|
|
# Service Configuration Schemas
|
|
class ServiceConfigBase(BaseModel):
|
|
"""Base service configuration"""
|
|
enabled: bool = Field(False, description="Whether service is enabled")
|
|
config: Dict[str, Any] = Field(default_factory=dict, description="Service-specific configuration")
|
|
pricing: Dict[str, Any] = Field(default_factory=dict, description="Pricing configuration")
|
|
capabilities: List[str] = Field(default_factory=list, description="Service capabilities")
|
|
max_concurrent: int = Field(1, ge=1, le=10, description="Maximum concurrent jobs")
|
|
|
|
|
|
class ServiceConfigCreate(ServiceConfigBase):
|
|
"""Service configuration creation request"""
|
|
pass
|
|
|
|
|
|
class ServiceConfigUpdate(BaseModel):
|
|
"""Service configuration update request"""
|
|
enabled: Optional[bool] = Field(None, description="Whether service is enabled")
|
|
config: Optional[Dict[str, Any]] = Field(None, description="Service-specific configuration")
|
|
pricing: Optional[Dict[str, Any]] = Field(None, description="Pricing configuration")
|
|
capabilities: Optional[List[str]] = Field(None, description="Service capabilities")
|
|
max_concurrent: Optional[int] = Field(None, ge=1, le=10, description="Maximum concurrent jobs")
|
|
|
|
|
|
class ServiceConfigResponse(ServiceConfigBase):
|
|
"""Service configuration response"""
|
|
service_type: str = Field(..., description="Service type")
|
|
created_at: datetime = Field(..., description="Creation time")
|
|
updated_at: datetime = Field(..., description="Last update time")
|
|
|
|
class Config:
|
|
from_attributes = True
|