feat: add audit log tables, indexes, and CLI/content recording hooks
This commit is contained in:
@@ -12,6 +12,27 @@ from .store import TaskStore
|
||||
|
||||
logger = logging.getLogger("devii.tasks.scheduler")
|
||||
|
||||
|
||||
def _audit_task_execute(row: dict[str, Any], result: str, error: str | None) -> None:
|
||||
from devplacepy.services.audit import record as audit
|
||||
|
||||
owner_kind = row.get("owner_kind") or "user"
|
||||
owner_id = row.get("owner_id") or ""
|
||||
audit.record_system(
|
||||
"devii.task.execute",
|
||||
actor_kind="user" if owner_kind == "user" else owner_kind,
|
||||
actor_uid=owner_id if owner_kind == "user" else None,
|
||||
actor_role="user" if owner_kind == "user" else owner_kind,
|
||||
origin="scheduler",
|
||||
via_agent=1,
|
||||
result="failure" if error else "success",
|
||||
target_type="task",
|
||||
target_uid=row.get("uid"),
|
||||
summary=f"Devii task {row.get('uid')} for {owner_id or owner_kind} executed",
|
||||
metadata={"run_count": row.get("run_count"), "error": error, "result": (result or "")[:140]},
|
||||
links=[audit.task(row.get("uid"))],
|
||||
)
|
||||
|
||||
PromptExecutor = Callable[[str], Awaitable[str]]
|
||||
EventCallback = Callable[[str, dict[str, Any], str], None]
|
||||
|
||||
@@ -84,7 +105,9 @@ class Scheduler:
|
||||
},
|
||||
)
|
||||
self._on_event("error", row, str(exc))
|
||||
_audit_task_execute(row, "", str(exc))
|
||||
return
|
||||
|
||||
self._store.update(uid, changes)
|
||||
self._on_event("done" if not finished else "finished", row, result)
|
||||
_audit_task_execute(row, result, None)
|
||||
|
||||
Reference in New Issue
Block a user