"""Tool: identifica em qual fase de Design Thinking o usuário está. Útil para o agente DesignMind saber se deve guiar o usuário a continuar na fase atual ou avançar para a próxima. """ _PHASES: dict[str, list[str]] = { "empatizar": [ "entender cliente", "entrevista", "pesquisa", "observar", "por que cliente", "feedback negativo", "queixa", "dor do usuário", "não sei o que clientes querem", "shadowing", "mapa de empatia", ], "definir": [ "sintetizar", "padrão nos dados", "principal problema", "ponto de vista", "point of view", "como definir", "qual é o problema real", "insight", ], "idear": [ "brainstorm", "ideias", "como gerar", "soluções possíveis", "how might we", "criatividade", "alternativas", ], "prototipar": [ "protótipo", "mvp", "esboço", "mockup", "construir versão", "testar versão", "fazer rápido", "low fidelity", ], "testar": [ "testar com cliente", "feedback do protótipo", "validar", "experimentar", "piloto", "usabilidade", ], } def run_design_phase_validator(user_description: str) -> str: """Identifica fase atual do DT e dá orientação curta sobre próximo passo.""" text = user_description.lower() scores: dict[str, int] = {} for phase, keywords in _PHASES.items(): scores[phase] = sum(1 for kw in keywords if kw in text) if all(v == 0 for v in scores.values()): return ( "FASE: indefinida. Recomendação: pergunte ao usuário em qual fase " "ele está (empatizar, definir, idear, prototipar, testar) ou ajude " "a começar pela fase 1 (Empatizar)." ) phase: str = max(scores, key=lambda k: scores[k]) next_step: dict[str, str] = { "empatizar": "Próximo passo: realizar 5-7 entrevistas qualitativas com clientes reais.", "definir": "Próximo passo: usar formato Point of View [usuário] precisa de [necessidade] porque [insight].", "idear": "Próximo passo: aplicar How Might We — meta de 30+ ideias antes de filtrar.", "prototipar": "Próximo passo: construir protótipo descartável (storyboard, papel, mockup).", "testar": "Próximo passo: testar com 5-7 usuários, observe COMPORTAMENTO, não pergunte opinião.", } return f"FASE identificada: {phase.upper()}. {next_step[phase]}" design_phase_validator_tool: dict = { "type": "function", "function": { "name": "design_phase_validator", "description": ( "Identifica em qual das 5 fases de Design Thinking (Empatizar, " "Definir, Idear, Prototipar, Testar) o usuário está. Use SEMPRE " "no início da conversa para orientar a próxima ação." ), "parameters": { "type": "object", "properties": { "user_description": { "type": "string", "description": "Texto que o usuário enviou descrevendo onde está.", } }, "required": ["user_description"], "additionalProperties": False, }, }, }