feat(regulatory): 增加法规核查基础服务
This commit is contained in:
35
review_agent/regulatory_review/storage.py
Normal file
35
review_agent/regulatory_review/storage.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import hashlib
|
||||
from pathlib import Path
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from review_agent.models import RegulatoryArtifact, RegulatoryReviewBatch
|
||||
|
||||
|
||||
def save_artifact(
|
||||
batch: RegulatoryReviewBatch,
|
||||
*,
|
||||
name: str,
|
||||
content: str | bytes,
|
||||
artifact_type: str,
|
||||
metadata: dict | None = None,
|
||||
) -> RegulatoryArtifact:
|
||||
root = Path(batch.work_dir) if batch.work_dir else Path(settings.MEDIA_ROOT) / "regulatory_review" / "work" / batch.batch_no
|
||||
root.mkdir(parents=True, exist_ok=True)
|
||||
path = root / Path(name).name
|
||||
if isinstance(content, bytes):
|
||||
path.write_bytes(content)
|
||||
digest = hashlib.sha256(content).hexdigest()
|
||||
else:
|
||||
path.write_text(content, encoding="utf-8")
|
||||
digest = hashlib.sha256(content.encode("utf-8")).hexdigest()
|
||||
return RegulatoryArtifact.objects.create(
|
||||
batch=batch,
|
||||
artifact_type=artifact_type,
|
||||
name=path.name,
|
||||
storage_path=str(path),
|
||||
content_hash=digest,
|
||||
metadata=metadata or {},
|
||||
)
|
||||
Reference in New Issue
Block a user