chore: refactor logging module, update genesis timestamp, remove model relationships, and reorganize routers

- Rename logging.py to logger.py and update import paths in poa.py and main.py
- Update devnet genesis timestamp to 1766828620
- Remove SQLModel Relationship declarations from Block, Transaction, and Receipt models
- Add SessionDep type alias and get_session dependency in coordinator-api deps
- Reorganize coordinator-api routers: replace explorer/registry with exchange, users, marketplace
This commit is contained in:
oib
2025-12-28 21:05:53 +01:00
parent 930ee31a8f
commit b3fd0ea05c
145 changed files with 33301 additions and 219 deletions

View File

@@ -0,0 +1,104 @@
"""
Models package for the AITBC Coordinator API
"""
# Import basic types from types.py to avoid circular imports
from ..types import (
JobState,
Constraints,
)
# Import schemas from schemas.py
from ..schemas import (
JobCreate,
JobView,
JobResult,
AssignedJob,
MinerHeartbeat,
MinerRegister,
MarketplaceBidRequest,
MarketplaceOfferView,
MarketplaceStatsView,
BlockSummary,
BlockListResponse,
TransactionSummary,
TransactionListResponse,
AddressSummary,
AddressListResponse,
ReceiptSummary,
ReceiptListResponse,
ExchangePaymentRequest,
ExchangePaymentResponse,
ConfidentialTransaction,
ConfidentialTransactionCreate,
ConfidentialTransactionView,
ConfidentialAccessRequest,
ConfidentialAccessResponse,
KeyPair,
KeyRotationLog,
AuditAuthorization,
KeyRegistrationRequest,
KeyRegistrationResponse,
ConfidentialAccessLog,
AccessLogQuery,
AccessLogResponse,
Receipt,
JobFailSubmit,
JobResultSubmit,
PollRequest,
)
# Import domain models
from ..domain import (
Job,
Miner,
MarketplaceOffer,
MarketplaceBid,
User,
Wallet,
)
# Service-specific models
from .services import (
ServiceType,
ServiceRequest,
ServiceResponse,
WhisperRequest,
StableDiffusionRequest,
LLMRequest,
FFmpegRequest,
BlenderRequest,
)
# from .confidential import ConfidentialReceipt, ConfidentialAttestation
# from .multitenant import Tenant, TenantConfig, TenantUser
# from .registry import (
# ServiceRegistry,
# ServiceRegistration,
# ServiceHealthCheck,
# ServiceMetrics,
# )
# from .registry_data import DataService, DataServiceConfig
# from .registry_devtools import DevToolService, DevToolConfig
# from .registry_gaming import GamingService, GamingConfig
# from .registry_media import MediaService, MediaConfig
# from .registry_scientific import ScientificService, ScientificConfig
__all__ = [
"JobState",
"JobCreate",
"JobView",
"JobResult",
"Constraints",
"Job",
"Miner",
"MarketplaceOffer",
"MarketplaceBid",
"ServiceType",
"ServiceRequest",
"ServiceResponse",
"WhisperRequest",
"StableDiffusionRequest",
"LLMRequest",
"FFmpegRequest",
"BlenderRequest",
]

View File

@@ -4,13 +4,12 @@ Database models for confidential transactions
from datetime import datetime
from typing import Optional, Dict, Any, List
from sqlmodel import SQLModel as Base, Field
from sqlalchemy import Column, String, DateTime, Boolean, Text, JSON, Integer, LargeBinary
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.sql import func
import uuid
from ..database import Base
class ConfidentialTransactionDB(Base):
"""Database model for confidential transactions"""

View File

@@ -11,7 +11,7 @@ from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
import uuid
from ..database import Base
from sqlmodel import SQLModel as Base
class TenantStatus(Enum):

View File

@@ -49,7 +49,7 @@ class ParameterDefinition(BaseModel):
default: Optional[Any] = Field(None, description="Default value")
min_value: Optional[Union[int, float]] = Field(None, description="Minimum value")
max_value: Optional[Union[int, float]] = Field(None, description="Maximum value")
options: Optional[List[str]] = Field(None, description="Available options for enum type")
options: Optional[List[Union[str, int]]] = Field(None, description="Available options for enum type")
validation: Optional[Dict[str, Any]] = Field(None, description="Custom validation rules")
@@ -545,3 +545,6 @@ AI_ML_SERVICES = {
timeout_seconds=60
)
}
# Create global service registry instance
service_registry = ServiceRegistry(services=AI_ML_SERVICES)

View File

@@ -112,7 +112,7 @@ class StableDiffusionRequest(BaseModel):
"""Stable Diffusion image generation request"""
prompt: str = Field(..., min_length=1, max_length=1000, description="Text prompt")
negative_prompt: Optional[str] = Field(None, max_length=1000, description="Negative prompt")
model: SDModel = Field(SD_1_5, description="Model to use")
model: SDModel = Field(SDModel.SD_1_5, description="Model to use")
size: SDSize = Field(SDSize.SQUARE_512, description="Image size")
num_images: int = Field(1, ge=1, le=4, description="Number of images to generate")
num_inference_steps: int = Field(20, ge=1, le=100, description="Number of inference steps")
@@ -233,8 +233,8 @@ class FFmpegRequest(BaseModel):
codec: FFmpegCodec = Field(FFmpegCodec.H264, description="Video codec")
preset: FFmpegPreset = Field(FFmpegPreset.MEDIUM, description="Encoding preset")
crf: int = Field(23, ge=0, le=51, description="Constant rate factor")
resolution: Optional[str] = Field(None, regex=r"^\d+x\d+$", description="Output resolution (e.g., 1920x1080)")
bitrate: Optional[str] = Field(None, regex=r"^\d+[kM]?$", description="Target bitrate")
resolution: Optional[str] = Field(None, pattern=r"^\d+x\d+$", description="Output resolution (e.g., 1920x1080)")
bitrate: Optional[str] = Field(None, pattern=r"^\d+[kM]?$", description="Target bitrate")
fps: Optional[int] = Field(None, ge=1, le=120, description="Output frame rate")
audio_codec: str = Field("aac", description="Audio codec")
audio_bitrate: str = Field("128k", description="Audio bitrate")