fix: add historical import jobs to unified jobs list

Historical import jobs were not appearing in the recent jobs list because
list_letzshop_jobs() only queried marketplace_import_jobs and letzshop_sync_logs.

Changes:
- Add LetzshopHistoricalImportJob query to list_letzshop_jobs()
- Add current_phase and error_message fields to LetzshopJobItem schema
- Fixed stuck job 8 (marked as failed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-20 13:18:07 +01:00
parent d6d658dd85
commit 49523fe6fe
2 changed files with 42 additions and 4 deletions

View File

@@ -556,11 +556,42 @@ class LetzshopOrderService:
"""
List unified Letzshop-related jobs for a vendor.
Combines product imports from marketplace_import_jobs and
order syncs from letzshop_sync_logs.
Combines product imports, historical order imports, and order syncs.
"""
jobs = []
# Historical order imports from letzshop_historical_import_jobs
if job_type in (None, "historical_import"):
hist_query = self.db.query(LetzshopHistoricalImportJob).filter(
LetzshopHistoricalImportJob.vendor_id == vendor_id,
)
if status:
hist_query = hist_query.filter(
LetzshopHistoricalImportJob.status == status
)
hist_jobs = hist_query.order_by(
LetzshopHistoricalImportJob.created_at.desc()
).all()
for job in hist_jobs:
jobs.append(
{
"id": job.id,
"type": "historical_import",
"status": job.status,
"created_at": job.created_at,
"started_at": job.started_at,
"completed_at": job.completed_at,
"records_processed": job.orders_processed or 0,
"records_succeeded": (job.orders_imported or 0)
+ (job.orders_updated or 0),
"records_failed": job.orders_skipped or 0,
"current_phase": job.current_phase,
"error_message": job.error_message,
}
)
# Product imports from marketplace_import_jobs
if job_type in (None, "import"):
import_query = self.db.query(MarketplaceImportJob).filter(

View File

@@ -397,10 +397,12 @@ class LetzshopVendorListResponse(BaseModel):
class LetzshopJobItem(BaseModel):
"""Schema for a unified job item (import, export, or order sync)."""
"""Schema for a unified job item (import, export, order sync, or historical import)."""
id: int
type: str = Field(..., description="Job type: import, export, or order_sync")
type: str = Field(
..., description="Job type: import, export, order_sync, or historical_import"
)
status: str = Field(..., description="Job status")
created_at: datetime
started_at: datetime | None = None
@@ -408,6 +410,11 @@ class LetzshopJobItem(BaseModel):
records_processed: int = 0
records_succeeded: int = 0
records_failed: int = 0
# Historical import specific fields
current_phase: str | None = Field(
None, description="Current phase for historical imports"
)
error_message: str | None = Field(None, description="Error message if failed")
class LetzshopJobsListResponse(BaseModel):