38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import logging
|
|
from pathlib import Path
|
|
|
|
from review_agent.models import FileSummaryBatchAttachment
|
|
|
|
from ..paths import resolve_storage_path
|
|
from ..services.inventory import scan_files_to_items
|
|
from .base import BaseSkill, SkillResult, WorkflowContext
|
|
|
|
|
|
logger = logging.getLogger("review_agent.file_summary.skills.file_inventory")
|
|
|
|
|
|
class FileInventorySkill(BaseSkill):
|
|
name = "file_inventory"
|
|
|
|
def run(self, context: WorkflowContext) -> SkillResult:
|
|
roots = [
|
|
resolve_storage_path(binding.attachment.storage_path)
|
|
for binding in FileSummaryBatchAttachment.objects.filter(batch=context.batch)
|
|
]
|
|
logger.info(
|
|
"File inventory started",
|
|
extra={
|
|
"batch_id": context.batch.pk,
|
|
"root_count": len(roots),
|
|
"roots": [str(root) for root in roots],
|
|
},
|
|
)
|
|
items = scan_files_to_items(batch=context.batch, roots=roots)
|
|
logger.info(
|
|
"File inventory finished",
|
|
extra={"batch_id": context.batch.pk, "total_files": len(items)},
|
|
)
|
|
return SkillResult(success=True, data={"total_files": len(items)})
|