Fixed Taiga integration
This commit is contained in:
@@ -73,6 +73,9 @@ def format_pomodoro_notice(tool_name: str, raw_result: str) -> str | None:
|
||||
if tool_name == "list_work_items":
|
||||
return _format_work_items_list_notice(data)
|
||||
|
||||
if tool_name == "list_taiga_tasks":
|
||||
return _format_taiga_tasks_notice(data)
|
||||
|
||||
if tool_name == "sync_taiga_projects":
|
||||
return f"📋 Синхронизировано проектов Taiga: **{len(data)}**"
|
||||
|
||||
@@ -114,8 +117,8 @@ def _format_work_item_notice(data: dict[str, Any]) -> str | None:
|
||||
|
||||
def _format_work_items_list_notice(data: Any) -> str | None:
|
||||
if not isinstance(data, list) or not data:
|
||||
return "📋 Work items не найдены."
|
||||
lines = ["📋 **Work items:**"]
|
||||
return "📋 Локальных work items (созданных ассистентом) нет."
|
||||
lines = ["📋 **Work items ассистента:**"]
|
||||
for item in data[:15]:
|
||||
lines.append(
|
||||
f"- [{item.get('status')}] #{item.get('taiga_ref')} {item.get('title')} "
|
||||
@@ -124,6 +127,36 @@ def _format_work_items_list_notice(data: Any) -> str | None:
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def _format_taiga_tasks_notice(data: Any) -> str | None:
|
||||
if not isinstance(data, dict):
|
||||
return None
|
||||
if data.get("error"):
|
||||
return f"📋 {data['error']}"
|
||||
|
||||
blocks = data.get("projects") or []
|
||||
total_stories = data.get("total_stories", 0)
|
||||
total_tasks = data.get("total_tasks", 0)
|
||||
|
||||
if not blocks or (total_stories == 0 and total_tasks == 0):
|
||||
slug = blocks[0].get("slug") if len(blocks) == 1 else None
|
||||
if slug:
|
||||
return f"📋 В `{slug}` нет открытых user stories и tasks в Taiga."
|
||||
return "📋 Открытых задач в Taiga не найдено."
|
||||
|
||||
lines = [f"📋 **Открытые задачи Taiga** (stories: {total_stories}, tasks: {total_tasks}):"]
|
||||
for block in blocks:
|
||||
stories = block.get("stories") or []
|
||||
tasks = block.get("tasks") or []
|
||||
if not stories and not tasks:
|
||||
continue
|
||||
lines.append(f"**{block.get('name')}** (`{block.get('slug')}`):")
|
||||
for s in stories:
|
||||
lines.append(f"- story #{s.get('ref')} {s.get('subject')}")
|
||||
for t in tasks:
|
||||
lines.append(f"- task #{t.get('ref')} {t.get('subject')}")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def _format_status_notice(data: dict[str, Any]) -> str:
|
||||
status = data.get("status", "idle")
|
||||
phase = data.get("phase", PHASE_WORK)
|
||||
|
||||
Reference in New Issue
Block a user