"""Worklog router — proxies worklog/standup calls to DevOpsMCP.""" from __future__ import annotations from typing import Optional from fastapi import APIRouter, HTTPException, Request from app import mcp_client router = APIRouter(prefix="/api/v1", tags=["worklog"]) @router.get("/worklog") async def api_worklog( context: str = "egmont", days: int = 7, group_by: str = "repo", since_date: Optional[str] = None, until_date: Optional[str] = None, ): try: return await mcp_client.get_worklog( context=context, days=days, group_by=group_by, since_date=since_date, until_date=until_date, ) except Exception as exc: raise HTTPException(status_code=502, detail=f"DevOpsMCP error: {exc}") from exc @router.get("/standup") async def api_standup(days: int = 2, context: str = "egmont"): try: return await mcp_client.get_standup(days=days, context=context) except Exception as exc: raise HTTPException(status_code=502, detail=f"DevOpsMCP error: {exc}") from exc @router.post("/worklog/sync") async def api_worklog_sync(request: Request): """Accept raw ~/.githistory content and ingest into DevOpsMCP Redis.""" body = await request.body() content = body.decode("utf-8", errors="replace") if not content.strip(): raise HTTPException(status_code=400, detail="Empty body — send content of ~/.githistory") try: result = await mcp_client.ingest_git_history(content) return {"message": "Git history synced", "result": result} except Exception as exc: raise HTTPException(status_code=502, detail=f"DevOpsMCP error: {exc}") from exc @router.post("/worklog/sync-activity") async def api_worklog_sync_activity(request: Request): """Accept raw ~/.activitylog content and ingest into DevOpsMCP Redis.""" body = await request.body() content = body.decode("utf-8", errors="replace") if not content.strip(): raise HTTPException(status_code=400, detail="Empty body — send content of ~/.activitylog") try: result = await mcp_client.ingest_activity_log(content) return {"message": "Activity log synced", "result": result} except Exception as exc: raise HTTPException(status_code=502, detail=f"DevOpsMCP error: {exc}") from exc