style: normalize python formatting gates

This commit is contained in:
Xiaoxia AI
2026-06-21 06:52:19 +08:00
parent 0809a079c5
commit bfbaddbd9a
129 changed files with 3024 additions and 2485 deletions
-2
View File
@@ -1,8 +1,6 @@
from celery import Celery
from worker_app.core.config import get_settings
settings = get_settings()
celery_app = Celery(settings.worker_name)
celery_app.conf.broker_url = settings.broker_url
+3 -2
View File
@@ -1,6 +1,7 @@
from pydantic_settings import BaseSettings, SettingsConfigDict
from typing import Optional
import os
from typing import Optional
from pydantic_settings import BaseSettings, SettingsConfigDict
class WorkerSettings(BaseSettings):
+6 -1
View File
@@ -1,5 +1,10 @@
from worker_app.core.config import get_settings
from packages.adapters.sqlalchemy_impl import build_session_factory, ensure_database_exists, initialize_database
from packages.adapters.sqlalchemy_impl import (
build_session_factory,
ensure_database_exists,
initialize_database,
)
settings = get_settings()
ensure_database_exists(settings.database_url)
+16 -9
View File
@@ -1,14 +1,21 @@
from worker_app.celery_app import celery_app
from worker_app.db import SessionLocal
from packages.domain import AssetClassification, ClassificationJob, ClassificationJobStatus
from packages.adapters.sqlalchemy_impl.classification_job_repository import SQLAlchemyClassificationJobRepository
from packages.adapters.sqlalchemy_impl.classification_job_repository import (
SQLAlchemyClassificationJobRepository,
)
from packages.domain import (
AssetClassification,
ClassificationJob,
ClassificationJobStatus,
)
@celery_app.task(name="worker.classify_asset")
def classify_asset(job_id: str) -> dict:
"""
Classify asset task.
Steps:
1. Fetch ClassificationJob from repository
2. Fetch Asset from repository
@@ -20,31 +27,31 @@ def classify_asset(job_id: str) -> dict:
session = SessionLocal()
try:
job_repo = SQLAlchemyClassificationJobRepository(session)
job = job_repo.get(job_id)
if job is None:
return {"status": "failed", "error": "job not found"}
try:
# Update job status to PROCESSING
job.status = ClassificationJobStatus.PROCESSING
job_repo.update(job)
session.commit()
# Mock classification (in real implementation: use ML model, vision API, etc.)
# For now, randomly classify based on asset_id hash
asset_id_hash = sum(ord(c) for c in job.asset_id)
classifications = list(AssetClassification)
classification = classifications[asset_id_hash % len(classifications)]
confidence = 0.85
# Update job status to COMPLETED
job.status = ClassificationJobStatus.COMPLETED
job.classification = classification.value
job.confidence = confidence
job_repo.update(job)
session.commit()
return {
"status": "completed",
"job_id": job.id,
@@ -58,7 +65,7 @@ def classify_asset(job_id: str) -> dict:
job.error_message = str(e)
job_repo.update(job)
session.commit()
return {
"status": "failed",
"job_id": job.id,
+19 -6
View File
@@ -7,6 +7,8 @@ from pathlib import Path
from urllib.parse import urlparse
import oss2
from worker_app.celery_app import celery_app
from worker_app.db import SessionLocal
from packages.adapters.sqlalchemy_impl import (
SQLAlchemyAssetRepository,
@@ -14,8 +16,6 @@ from packages.adapters.sqlalchemy_impl import (
SQLAlchemyGenerationTaskRepository,
)
from packages.domain import GeneratedVideo, GenerationTaskStatus
from worker_app.celery_app import celery_app
from worker_app.db import SessionLocal
OUTPUT_WIDTH = 1280
OUTPUT_HEIGHT = 720
@@ -176,7 +176,11 @@ def generate_video(task_id: str) -> dict:
task = task_repo.get(task_id)
if task is None:
db.close()
return {"status": "failed", "error": "generation task not found", "task_id": task_id}
return {
"status": "failed",
"error": "generation task not found",
"task_id": task_id,
}
try:
task.status = GenerationTaskStatus.RUNNING
@@ -184,10 +188,14 @@ def generate_video(task_id: str) -> dict:
task.started_at = task.started_at or datetime.now(timezone.utc)
task_repo.update(task)
assets = [asset for asset in asset_repo.list_by_library(task.asset_library_id) if asset.mime_type.startswith("video")]
assets = [
asset for asset in asset_repo.list_by_library(task.asset_library_id) if asset.mime_type.startswith("video")
]
output_name = f"generated-{task.id}.mp4"
storage_key = f"generated/workspaces/{task.workspace_id}/projects/{task.project_id}/tasks/{task.id}/{output_name}"
storage_key = (
f"generated/workspaces/{task.workspace_id}/projects/{task.project_id}/tasks/{task.id}/{output_name}"
)
with tempfile.TemporaryDirectory(prefix="xiaoxia-generation-") as temp_dir:
temp_path = Path(temp_dir)
@@ -235,7 +243,12 @@ def generate_video(task_id: str) -> dict:
task.completed_at = datetime.now(timezone.utc)
task_repo.update(task)
return {"status": "completed", "task_id": task.id, "video_id": video.id, "file_url": file_url}
return {
"status": "completed",
"task_id": task.id,
"video_id": video.id,
"file_url": file_url,
}
except Exception as error:
task.status = GenerationTaskStatus.FAILED
task.error_message = str(error)
+12 -8
View File
@@ -1,16 +1,20 @@
from datetime import datetime, timezone
from packages.adapters.sqlalchemy_impl import SQLAlchemyAssetRepository, SQLAlchemyIngestJobRepository
from packages.domain import Asset, IngestJobStatus
from worker_app.celery_app import celery_app
from worker_app.db import SessionLocal
from packages.adapters.sqlalchemy_impl import (
SQLAlchemyAssetRepository,
SQLAlchemyIngestJobRepository,
)
from packages.domain import Asset, IngestJobStatus
@celery_app.task(name="worker.ingest_asset")
def ingest_asset(job_id: str) -> dict:
"""
Ingest asset task.
Steps:
1. Fetch IngestJob from repository
2. Extract metadata from storage_key (placeholder: mock metadata)
@@ -25,13 +29,13 @@ def ingest_asset(job_id: str) -> dict:
job = job_repo.get(job_id)
if job is None:
return {"status": "failed", "error": "job not found"}
try:
# Update job status to PROCESSING
job.status = IngestJobStatus.PROCESSING
job.updated_at = datetime.now(timezone.utc)
job_repo.update(job)
# Mock metadata extraction (in real implementation: use ffprobe, Pillow, etc.)
mime_type = "video/mp4" if job.storage_key.endswith(".mp4") else "image/jpeg"
metadata = {
@@ -40,10 +44,10 @@ def ingest_asset(job_id: str) -> dict:
"height": 1080,
"size_bytes": 1024000,
}
# Extract filename from storage_key
filename = job.storage_key.split("/")[-1]
# Create Asset
asset = Asset.create(
workspace_id=job.workspace_id,
@@ -55,7 +59,7 @@ def ingest_asset(job_id: str) -> dict:
metadata=metadata,
)
asset_repo.create(asset)
# Update job status to COMPLETED
job.status = IngestJobStatus.COMPLETED
job.result_asset_id = asset.id