Implement tasks

This commit is contained in:
2026-03-02 12:45:24 +00:00
parent 6986c1b5ab
commit e1de6d016d
29 changed files with 2970 additions and 172 deletions

View File

View File

@@ -0,0 +1,30 @@
from __future__ import annotations
from dataclasses import dataclass
@dataclass(slots=True)
class ProviderResult:
ok: bool
external_key: str = ""
error: str = ""
payload: dict | None = None
class TaskProvider:
name = "base"
def healthcheck(self, config: dict) -> ProviderResult:
raise NotImplementedError
def create_task(self, config: dict, payload: dict) -> ProviderResult:
raise NotImplementedError
def append_update(self, config: dict, payload: dict) -> ProviderResult:
raise NotImplementedError
def mark_complete(self, config: dict, payload: dict) -> ProviderResult:
raise NotImplementedError
def link_task(self, config: dict, payload: dict) -> ProviderResult:
raise NotImplementedError

View File

@@ -0,0 +1,34 @@
from __future__ import annotations
import time
from .base import ProviderResult, TaskProvider
class MockTaskProvider(TaskProvider):
name = "mock"
def healthcheck(self, config: dict) -> ProviderResult:
return ProviderResult(ok=True, payload={"provider": self.name})
def create_task(self, config: dict, payload: dict) -> ProviderResult:
ext = str(payload.get("external_key") or "") or f"mock-{int(time.time() * 1000)}"
return ProviderResult(ok=True, external_key=ext, payload={"action": "create_task"})
def append_update(self, config: dict, payload: dict) -> ProviderResult:
return ProviderResult(ok=True, external_key=str(payload.get("external_key") or ""), payload={"action": "append_update"})
def mark_complete(self, config: dict, payload: dict) -> ProviderResult:
return ProviderResult(ok=True, external_key=str(payload.get("external_key") or ""), payload={"action": "mark_complete"})
def link_task(self, config: dict, payload: dict) -> ProviderResult:
return ProviderResult(ok=True, external_key=str(payload.get("external_key") or ""), payload={"action": "link_task"})
PROVIDERS = {
"mock": MockTaskProvider(),
}
def get_provider(name: str) -> TaskProvider:
return PROVIDERS.get(str(name or "").strip().lower(), PROVIDERS["mock"])