architect/_archive/2025-11-26-cleanup/cifra/agents/orchestrator/ai/prompts/result_aggregation.md

Промпт: Агрегация результатов

Назначение: Сбор и объединение результатов от всех агентов в итоговый отчёт


Входные данные

{
    "task_id": str,
    "task_type": str,
    "execution_plan": ExecutionPlan,
    "agent_results": List[AgentResult],
    "context": Context
}

AgentResult:

{
    "agent_name": str,
    "task_description": str,
    "status": "SUCCESS" | "PARTIAL" | "ERROR",
    "output": Any,
    "duration": float,  # секунды
    "tokens_used": int,
    "errors": List[str],
    "warnings": List[str],
    "metadata": dict
}

Алгоритм агрегации

1. Определение общего статуса

def calculate_overall_status(results: List[AgentResult]) -> str:
    """
    Определяет общий статус выполнения задачи.
    """
    if all(r.status == "SUCCESS" for r in results):
        return "SUCCESS"  # ✅ Всё отлично

    if any(r.status == "ERROR" for r in results):
        # Проверить критичность ошибок
        critical_errors = [r for r in results
                          if r.status == "ERROR" and r.metadata.get("critical")]
        if critical_errors:
            return "FAILED"  # ❌ Критические ошибки

        return "PARTIAL"  # ⚠️ Некритичные ошибки, но есть результат

    if any(r.status == "PARTIAL" for r in results):
        return "PARTIAL"  # ⚠️ Частичный успех

    return "SUCCESS"

2. Сбор артефактов

def collect_artifacts(results: List[AgentResult]) -> dict:
    """
    Собирает все созданные файлы, проекты, документы.
    """
    artifacts = {
        "created_files": [],
        "modified_files": [],
        "created_projects": [],
        "created_docs": [],
        "test_results": {},
        "deployments": []
    }

    for result in results:
        if result.agent_name == "Projector":
            artifacts["created_projects"].extend(
                result.output.get("projects", [])
            )

        elif result.agent_name == "Developer":
            artifacts["created_files"].extend(
                result.output.get("files", [])
            )

        elif result.agent_name == "Tester":
            artifacts["test_results"] = result.output

        elif result.agent_name == "Deployer":
            artifacts["deployments"].append(
                result.output.get("deployment_info")
            )

        elif result.agent_name == "Documenter":
            artifacts["created_docs"].extend(
                result.output.get("documents", [])
            )

    return artifacts

3. Расчёт метрик

def calculate_metrics(results: List[AgentResult]) -> dict:
    """
    Вычисляет общие метрики выполнения.
    """
    return {
        "total_agents": len(results),
        "successful_agents": len([r for r in results if r.status == "SUCCESS"]),
        "failed_agents": len([r for r in results if r.status == "ERROR"]),

        "total_duration": sum(r.duration for r in results),
        "avg_duration_per_agent": sum(r.duration for r in results) / len(results),

        "total_tokens": sum(r.tokens_used for r in results),
        "tokens_per_agent": {r.agent_name: r.tokens_used for r in results},

        "total_errors": sum(len(r.errors) for r in results),
        "total_warnings": sum(len(r.warnings) for r in results),
    }

4. Генерация рекомендаций

def generate_recommendations(results: List[AgentResult], artifacts: dict) -> List[str]:
    """
    Генерирует рекомендации на основе результатов.
    """
    recommendations = []

    # Проверить тесты
    if "test_results" in artifacts and artifacts["test_results"]:
        tests = artifacts["test_results"]
        if tests.get("coverage", 100) < 80:
            recommendations.append(
                f"Покрытие тестами: {tests['coverage']}% (рекомендуется ≥80%)"
            )

    # Проверить ошибки
    error_results = [r for r in results if r.status == "ERROR"]
    if error_results:
        recommendations.append(
            f"Исправить ошибки в: {', '.join(r.agent_name for r in error_results)}"
        )

    # Проверить производительность
    slow_agents = [r for r in results if r.duration > 60]
    if slow_agents:
        recommendations.append(
            f"Оптимизировать: {', '.join(r.agent_name for r in slow_agents)} "
            f"(выполнение >1 минуты)"
        )

    # Проверить документацию
    if not any(r.agent_name == "Documenter" for r in results):
        recommendations.append("Создать документацию для проекта")

    # Проверить деплой
    if not any(r.agent_name == "Deployer" for r in results):
        recommendations.append("Развернуть на production (если готово)")

    return recommendations

Формат выходного отчёта

Шаблон SUCCESS

🎉 ЗАДАЧА ВЫПОЛНЕНА

**Задача:** {{task_description}}
**Тип:** {{task_type}}
**Статус:** ✅ Успешно

---

## 📊 Сводка

| Метрика | Значение |
|---------|----------|
| Агентов задействовано | {{total_agents}} |
| Успешно выполнено | {{successful_agents}}/{{total_agents}} |
| Время выполнения | {{duration}} |
| Токены использованы | {{total_tokens}} |

---

## 📦 Результаты

### Созданные проекты:
{{#created_projects}}
- **{{name}}** ({{path}})
  - Структура: {{components}}
  - Размер: {{size}}
{{/created_projects}}

### Созданные файлы:
{{#created_files}}
- `{{path}}` ({{lines}} строк)
{{/created_files}}

### Документация:
{{#created_docs}}
- `{{path}}`
{{/created_docs}}

### Тесты:
{{#if test_results}}
- Пройдено: {{test_results.passed}}/{{test_results.total}}
- Покрытие: {{test_results.coverage}}%
{{/if}}

---

## 💡 Рекомендации

{{#recommendations}}
- {{.}}
{{/recommendations}}

---

## 🔍 Детали выполнения

{{#agent_results}}
### {{agent_name}}
- ✅ Статус: {{status}}
- ⏱️ Время: {{duration}}с
- 📝 Задача: {{task_description}}
- 📦 Результат: {{output_summary}}
{{/agent_results}}

Шаблон PARTIAL

⚠️ ЗАДАЧА ВЫПОЛНЕНА ЧАСТИЧНО

**Задача:** {{task_description}}
**Статус:** ⚠️ С замечаниями

---

## 📊 Сводка

| Метрика | Значение |
|---------|----------|
| Успешно | {{successful_agents}}/{{total_agents}} |
| С ошибками | {{failed_agents}} |
| Время | {{duration}} |

---

## ⚠️ Проблемы

{{#errors}}
### {{agent_name}}
**Ошибка:** {{error_message}}

**Влияние:** {{impact}}

**Решение:** {{solution}}
{{/errors}}

---

## 📦 Результаты

[То что удалось выполнить...]

---

## 🔧 Что нужно сделать

{{#todos}}
- [ ] {{.}}
{{/todos}}

Шаблон FAILED

❌ ЗАДАЧА НЕ ВЫПОЛНЕНА

**Задача:** {{task_description}}
**Статус:** ❌ Ошибка

---

## 🚨 Критические ошибки

{{#critical_errors}}
### {{agent_name}}

**Ошибка:**

{{error_details}}

**Лог:**

{{error_log}}

**Что сделано для восстановления:**
{{#recovery_attempts}}
- {{.}}
{{/recovery_attempts}}
{{/critical_errors}}

---

## 🔧 План восстановления

1. {{recovery_step_1}}
2. {{recovery_step_2}}
3. {{recovery_step_3}}

---

## 📞 Нужна помощь?

Обратись к:
- **Recovery** агенту для автоматического восстановления
- **Architect** для архитектурных решений
- **Administrator** для системных проблем

Примеры

Пример 1: Успешное создание проекта

Вход:

{
    "task_id": "uuid-123",
    "task_type": "CREATE_PROJECT",
    "agent_results": [
        {
            "agent_name": "Projector",
            "status": "SUCCESS",
            "duration": 2.3,
            "tokens_used": 1200,
            "output": {
                "project": "projects/analytics/",
                "components": ["design", "management", "solution", "infrastructure"]
            }
        },
        {
            "agent_name": "Designer",
            "status": "SUCCESS",
            "duration": 15.7,
            "tokens_used": 3400,
            "output": {
                "architecture": "design/ARCHITECTURE.md",
                "database": {"tables": 5, "relations": 3}
            }
        },
        # ... остальные агенты
    ]
}

Выход:

🎉 ЗАДАЧА ВЫПОЛНЕНА

**Задача:** Создать проект analytics
**Тип:** CREATE_PROJECT
**Статус:** ✅ Успешно

---

## 📊 Сводка

| Метрика | Значение |
|---------|----------|
| Агентов задействовано | 5 |
| Успешно выполнено | 5/5 |
| Время выполнения | 2м 15с |
| Токены использованы | 12,450 |

---

## 📦 Результаты

### Созданные проекты:
- **analytics** (projects/analytics/)
  - Структура: design, management, solution, infrastructure
  - Компоненты: 4

### Созданные файлы:
- `design/ARCHITECTURE.md` (150 строк)
- `design/DATABASE.md` (80 строк)
- `solution/mvp/app.py` (200 строк)
- `solution/mvp/pages/*.py` (5 файлов, 400 строк)
- `tests/test_basic.py` (50 строк)

### Документация:
- `design/PROJECT.md`
- `management/README.md`
- `management/CHANGELOG.md`

### Тесты:
- Пройдено: 8/8
- Покрытие: 75%

---

## 💡 Рекомендации

- Увеличить покрытие тестами до ≥80%
- Развернуть на dev окружение для тестирования
- Настроить CI/CD для автоматического тестирования

---

## 🔍 Детали выполнения

### Projector
- ✅ Статус: SUCCESS
- ⏱️ Время: 2.3с
- 📝 Задача: Создать структуру проекта analytics
- 📦 Результат: projects/analytics/ с 4 компонентами

### Designer
- ✅ Статус: SUCCESS
- ⏱️ Время: 15.7с
- 📝 Задача: Спроектировать архитектуру
- 📦 Результат: ARCHITECTURE.md (5 таблиц БД, 3 связи)

[...]

Статус: ✅ Готов к использованию