38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
"""adjust_inventory and stock reads."""
|
|
|
|
from mcp_server.config import Settings
|
|
from mcp_server.elabftw import ElabftwClient
|
|
from mcp_server.journal import SagaJournal
|
|
from mcp_server.models import ContainerStock, InventoryResult
|
|
from mcp_server.resolve import ResourceResolver
|
|
|
|
|
|
class InventoryWorkflow:
|
|
def __init__(
|
|
self,
|
|
client: ElabftwClient,
|
|
resolver: ResourceResolver,
|
|
journal: SagaJournal,
|
|
settings: Settings,
|
|
) -> None:
|
|
self.client = client
|
|
self.resolver = resolver
|
|
self.journal = journal
|
|
self.settings = settings
|
|
|
|
async def stock_for_resource(self, resource_key: str) -> list[ContainerStock]:
|
|
"""Containers holding the resolved resource with compatible units and current stock."""
|
|
raise NotImplementedError
|
|
|
|
async def adjust_inventory(
|
|
self,
|
|
*,
|
|
amount: float,
|
|
unit: str,
|
|
resource_key: str | None = None,
|
|
container_id: int | None = None,
|
|
note: str | None = None,
|
|
) -> InventoryResult:
|
|
"""Restock/correct a container (voice: “add 500 mL to …”); journaled."""
|
|
raise NotImplementedError
|