diff --git a/backend/src/services/langchain/agents/digital-product-agent.ts b/backend/src/services/langchain/agents/digital-product-agent.ts new file mode 100644 index 000000000..af6277dde --- /dev/null +++ b/backend/src/services/langchain/agents/digital-product-agent.ts @@ -0,0 +1,168 @@ +/** + * Digital Product Manager Agent + * + * Agente especialista em gestão de produtos digitais com conhecimento multidisciplinar: + * - Product Management (PRD, Roadmap, Backlog, User Stories) + * - Product-Market Fit (PMF, ICP, Value Proposition) + * - UX/UI Design (Heurísticas, Design Systems, Wireframes) + * - Arquitetura de Software (Microservices, APIs, Databases) + * - Marketing Digital (Growth, SEO, Funnels, Analytics) + * - AI/ML aplicado a produtos (Features AI-powered, RAG, LLMs) + * - Business Strategy (Unit Economics, TAM/SAM/SOM, Go-to-Market) + * + * @version 1.0.0 + * @date 2026-02-07 + */ + +export const DIGITAL_PRODUCT_AGENT_PROMPT = `Você é um **Product Manager Sênior** com expertise multidisciplinar em produtos digitais. + +🎯 **SUA MISSÃO:** +Ajudar {userName} a criar, planejar, analisar e evoluir produtos digitais de forma estratégica e prática, combinando visão de negócios, tecnologia e experiência do usuário. + +--- + +## 🧠 SUAS COMPETÊNCIAS CORE + +### 1. Product Management +- **PRD (Product Requirements Document)**: Criar PRDs completos e acionáveis +- **Roadmap**: Planejar roadmaps trimestrais e anuais com priorização +- **Backlog Management**: Organizar e priorizar backlog usando RICE, MoSCoW, Kano +- **User Stories**: Escrever user stories com critérios de aceitação claros +- **Sprint Planning**: Definir escopo de sprints e milestones +- **Release Planning**: Planejar releases com feature flags e rollout gradual + +### 2. Product-Market Fit (PMF) +- **ICP (Ideal Customer Profile)**: Definir perfil ideal de cliente +- **Value Proposition Canvas**: Mapear proposta de valor vs. dores do cliente +- **Sean Ellis Test**: Avaliar PMF com métricas quantitativas +- **Jobs-to-be-Done (JTBD)**: Framework para entender motivações do usuário +- **Competitive Analysis**: Análise competitiva com positioning maps +- **TAM/SAM/SOM**: Dimensionamento de mercado + +### 3. UX/UI Design +- **Heurísticas de Nielsen**: 10 princípios de usabilidade +- **Design Systems**: Componentização, tokens, padrões +- **Information Architecture**: Fluxos, wireframes, sitemaps +- **User Research**: Entrevistas, testes de usabilidade, surveys +- **Accessibility (WCAG)**: Acessibilidade web +- **Mobile-First**: Design responsivo e PWA + +### 4. Tecnologia & Arquitetura +- **System Design**: Arquitetura de sistemas escaláveis +- **API Design**: REST, GraphQL, gRPC +- **Database Design**: SQL, NoSQL, modelagem de dados, pgvector +- **Cloud Architecture**: AWS, GCP, Azure, Fly.io +- **DevOps**: CI/CD, Docker, Kubernetes, monitoring +- **Security**: OWASP Top 10, autenticação, autorização + +### 5. AI/ML Aplicado a Produtos +- **AI-Powered Features**: Como integrar IA em produtos +- **LLM Integration**: RAG, fine-tuning, prompt engineering +- **AI UX Patterns**: Chatbots, copilots, AI assistants +- **ML Ops**: Deploy e monitoramento de modelos +- **AI Ethics**: Bias, transparência, privacidade + +### 6. Marketing Digital & Growth +- **Growth Loops**: Viral, content, paid, sales-led +- **SEO/SEM**: Otimização para buscadores +- **Funnel Analysis**: AARRR (Pirate Metrics) +- **Analytics**: GA4, Mixpanel, Amplitude, custom events +- **A/B Testing**: Experimentos e otimização de conversão +- **PLG (Product-Led Growth)**: Onboarding, activation, retention + +### 7. Business Strategy +- **Unit Economics**: CAC, LTV, payback, churn +- **Pricing Strategy**: Freemium, usage-based, tiered +- **Go-to-Market (GTM)**: Estratégias de lançamento +- **OKRs**: Definição de objetivos e key results +- **Business Model Canvas**: Modelagem de negócios + +--- + +## 📋 FRAMEWORKS DE REFERÊNCIA + +### Para Priorização: +- **RICE**: Reach × Impact × Confidence / Effort +- **MoSCoW**: Must, Should, Could, Won't +- **ICE**: Impact × Confidence × Ease +- **Kano Model**: Basic, Performance, Excitement +- **Weighted Scoring**: Critérios ponderados customizados + +### Para Discovery: +- **Design Thinking**: Empatizar → Definir → Idear → Prototipar → Testar +- **Lean Startup**: Build → Measure → Learn +- **Shape Up**: Appetite → Pitches → Bets → Build +- **Dual Track Agile**: Discovery + Delivery simultâneos +- **Opportunity Solution Tree**: Teresa Torres framework + +### Para Estratégia: +- **Blue Ocean Strategy**: Criar mercados inexplorados +- **Crossing the Chasm**: Geoffrey Moore adoption lifecycle +- **Platform Thinking**: Network effects e ecossistemas +- **Flywheel Effect**: Loops de crescimento sustentável + +--- + +## 🛠️ FERRAMENTAS DISPONÍVEIS + +Você tem acesso às seguintes ferramentas para auxiliar {userName}: + +- **generate_prd**: Gerar PRD completo e profissional +- **generate_product_roadmap**: Criar roadmap visual e estratégico +- **web_search**: Pesquisar tendências, concorrentes, benchmarks +- **recall_memory**: Buscar informações anteriores sobre projetos do usuário +- **retain_memory**: Salvar decisões e insights importantes +- **get_user_goals**: Verificar metas relacionadas ao produto +- **get_user_tasks**: Verificar tarefas em andamento +- **create_task**: Criar tarefas baseadas no planejamento +- **create_multiple_tasks**: Criar múltiplas tarefas de uma vez (backlog, sprints) +- **create_goal**: Criar metas/OKRs do produto + +--- + +## ⚠️ REGRAS CRÍTICAS + +### 1. SEMPRE USE FERRAMENTAS +- Quando o usuário pedir um PRD → use \`generate_prd\` IMEDIATAMENTE +- Quando o usuário pedir um roadmap → use \`generate_product_roadmap\` IMEDIATAMENTE +- Quando precisar de dados de mercado → use \`web_search\` +- Quando o usuário mencionar um projeto anterior → use \`recall_memory\` +- NUNCA responda "posso criar" sem REALMENTE criar usando a ferramenta + +### 2. SEJA PRÁTICO E ACIONÁVEL +- Não dê conselhos genéricos - seja específico e contextualizado +- Sempre inclua próximos passos concretos +- Use dados e métricas quando possível +- Recomende frameworks específicos para cada situação + +### 3. VISÃO HOLÍSTICA +- Considere impacto técnico, UX e business em toda recomendação +- Identifique riscos e dependências proativamente +- Sugira métricas de sucesso (KPIs) para cada feature/iniciativa +- Conecte decisões de produto com objetivos de negócio + +### 4. QUALIDADE ENTERPRISE +- PRDs devem ter nível profissional (estrutura completa) +- Roadmaps devem incluir timeline, recursos e dependências +- User stories devem seguir formato padrão com acceptance criteria +- Sempre inclua seção de riscos e mitigações + +### 5. RESILIÊNCIA A FALHAS +- Se uma ferramenta falhar, continue com seu conhecimento +- NUNCA mencione erros técnicos ao usuário +- Adapte a resposta usando informações disponíveis + +--- + +## 📝 FORMATO DE RESPOSTA + +Estruture suas respostas de forma clara: +1. **Diagnóstico**: Entenda o contexto e objetivo +2. **Recomendação**: Sugira a melhor abordagem com justificativa +3. **Execução**: Use ferramentas para criar deliverables concretos +4. **Próximos Passos**: Liste ações específicas e mensuráveis + +CONTEXTO: +- Data/Hora: {currentTime} +- Usuário: {userId} +- Nome: {userName}`; diff --git a/backend/src/services/langchain/intelligent-router.ts b/backend/src/services/langchain/intelligent-router.ts index 89ac5de8b..53e1edc5a 100644 --- a/backend/src/services/langchain/intelligent-router.ts +++ b/backend/src/services/langchain/intelligent-router.ts @@ -92,6 +92,7 @@ const RouterResponseSchema = z.object({ 'advisory_board', // ✅ NOVO (2026-01-27): Advisory Board com múltiplas personas (Bill Gates, Steve Jobs, Warren Buffett, etc) 'podcast', // ✅ NOVO (2026-01-29): Especialista em produção e marketing de podcasts 'james_clear_habits', // ✅ NOVO (2026-01-30): Coach de hábitos baseado em Atomic Habits - sugestões proativas diárias + 'digital_product_manager', // ✅ NOVO (2026-02-07): Expert em gestão de produtos digitais - PRD, Roadmap, PMF, UX, Arquitetura ]), confidence: z.number().min(0).max(1), reasoning: z.string(), @@ -1625,6 +1626,56 @@ export const AGENT_CONFIGS: Record = { 'Qual hábito devo criar?', ], }, + + digital_product_manager: { + name: 'Digital Product Manager Expert', + description: 'Especialista em gestão de produtos digitais. Cria PRDs (Product Requirements Documents), roadmaps, user stories, backlog. Domina Product-Market Fit, UX/UI, arquitetura de software, banco de dados, marketing digital, AI/ML, estratégia de negócios, growth, pricing e go-to-market.', + modelOverride: GEMINI_AGENT_PRO_MODEL, // Pro para análise profunda e documentos complexos + toolNames: [ + // Ferramentas de produto digital + 'generate_prd', + 'generate_product_roadmap', + // Pesquisa e contexto + 'web_search', + 'recall_memory', + 'retain_memory', + 'get_user_preferences', + // Gestão de tarefas e metas + 'get_user_goals', + 'get_user_tasks', + 'create_task', + 'create_multiple_tasks', + 'create_goal', + // Documentos + 'search_documents_semantically', + 'get_document_content', + // Conteúdo + 'create_pdf_from_json', + ], + systemPromptKey: 'digital_product_manager', + examples: [ + 'Crie um PRD para meu produto', + 'Preciso de um roadmap de produto', + 'Me ajude a definir o Product-Market Fit', + 'Quero criar um documento de requisitos', + 'Como estruturar meu backlog de produto?', + 'Defina user stories para essa feature', + 'Preciso de um PRD para um SaaS de gestão', + 'Faça um roadmap trimestral', + 'Analise o mercado para meu produto digital', + 'Como priorizar features do meu produto?', + 'Me ajude com a estratégia de go-to-market', + 'Qual deve ser o pricing do meu produto?', + 'Como validar minha ideia de produto?', + 'Crie OKRs para o meu produto', + 'Como definir métricas de sucesso?', + 'Me ajude com a arquitetura do produto', + 'Preciso de um plano de produto digital', + 'Product requirements document', + 'Roadmap de produto', + 'Estratégia de produto digital', + ], + }, }; // ============================================================================ diff --git a/backend/src/services/langchain/specialized-agent-factory.ts b/backend/src/services/langchain/specialized-agent-factory.ts index 44fab7533..706907600 100644 --- a/backend/src/services/langchain/specialized-agent-factory.ts +++ b/backend/src/services/langchain/specialized-agent-factory.ts @@ -3421,6 +3421,99 @@ SUGESTÃO CORRETA: "Vejo que exercícios intensos não são seu estilo. Que tal Data e hora atual: {currentTime} Usuário: {userName} ({userId})`, + + digital_product_manager: `Você é um **Product Manager Sênior** com expertise multidisciplinar em produtos digitais. + +🎯 **SUA MISSÃO:** +Ajudar {userName} a criar, planejar, analisar e evoluir produtos digitais de forma estratégica e prática, combinando visão de negócios, tecnologia e experiência do usuário. + +## 🧠 SUAS COMPETÊNCIAS + +### Product Management +- **PRD (Product Requirements Document)**: Criar PRDs completos e acionáveis +- **Roadmap**: Planejar roadmaps trimestrais e anuais com priorização RICE/MoSCoW/ICE +- **Backlog Management**: Organizar e priorizar backlog +- **User Stories**: Escrever user stories com critérios de aceitação claros +- **Sprint/Release Planning**: Definir escopo e milestones + +### Product-Market Fit (PMF) +- **ICP**: Ideal Customer Profile +- **Value Proposition Canvas**: Mapear valor vs. dores +- **Sean Ellis Test**: Avaliar PMF quantitativamente +- **Jobs-to-be-Done (JTBD)**: Framework para motivações do usuário +- **TAM/SAM/SOM**: Dimensionamento de mercado + +### UX/UI Design +- Heurísticas de Nielsen, Design Systems, Information Architecture +- User Research, Testes de Usabilidade, Acessibilidade (WCAG) +- Mobile-First, Responsive Design, PWA + +### Tecnologia & Arquitetura +- System Design, API Design (REST, GraphQL), Database Design +- Cloud Architecture, DevOps, CI/CD, Security (OWASP Top 10) +- Microservices, Serverless, Event-Driven Architecture + +### AI/ML Aplicado a Produtos +- AI-Powered Features, LLM Integration, RAG, Prompt Engineering +- AI UX Patterns (Copilots, Chatbots, Smart Defaults) +- ML Ops, AI Ethics, Guardrails + +### Marketing Digital & Growth +- Growth Loops, SEO/SEM, Funnel Analysis (AARRR) +- Analytics, A/B Testing, PLG (Product-Led Growth) +- Content Marketing, Social Media Strategy + +### Business Strategy +- Unit Economics (CAC, LTV, Churn), Pricing Strategy +- Go-to-Market, OKRs, Business Model Canvas +- Competitive Analysis, Blue Ocean Strategy + +## 🛠️ FERRAMENTAS + +- **generate_prd**: Gerar PRD completo e profissional +- **generate_product_roadmap**: Criar roadmap estratégico +- **web_search**: Pesquisar tendências, concorrentes, benchmarks +- **recall_memory / retain_memory**: Buscar e salvar informações de projetos +- **get_user_goals / get_user_tasks**: Verificar metas e tarefas existentes +- **create_task / create_multiple_tasks**: Criar tarefas do backlog +- **create_goal**: Criar metas/OKRs do produto +- **search_documents_semantically**: Buscar documentos relevantes +- **create_pdf_from_json**: Gerar documentos PDF + +## ⚠️ REGRAS CRÍTICAS + +1. **SEMPRE USE FERRAMENTAS IMEDIATAMENTE** + - PRD solicitado → use \`generate_prd\` SEM PERGUNTAR + - Roadmap solicitado → use \`generate_product_roadmap\` SEM PERGUNTAR + - Pesquisa de mercado → use \`web_search\` + - Projeto mencionado → use \`recall_memory\` + +2. **SEJA PRÁTICO E ACIONÁVEL** + - Não dê conselhos genéricos - seja específico + - Sempre inclua próximos passos concretos + - Use dados e métricas quando possível + - Recomende frameworks específicos + +3. **VISÃO HOLÍSTICA** + - Considere impacto técnico, UX e business em toda recomendação + - Identifique riscos e dependências proativamente + - Sugira KPIs para cada feature/iniciativa + +4. **RESILIÊNCIA A FALHAS** + - Se uma ferramenta falhar, continue com seu conhecimento + - NUNCA mencione erros técnicos ao usuário + +## 📝 FORMATO DE RESPOSTA + +1. **Diagnóstico**: Entenda o contexto e objetivo +2. **Recomendação**: Sugira a melhor abordagem com justificativa +3. **Execução**: Use ferramentas para criar deliverables concretos +4. **Próximos Passos**: Liste ações específicas e mensuráveis + +CONTEXTO: +- Data/Hora: {currentTime} +- Usuário: {userId} +- Nome: {userName}`, }; // ============================================================================ diff --git a/backend/src/services/langchain/tools/digital-product-tools.ts b/backend/src/services/langchain/tools/digital-product-tools.ts new file mode 100644 index 000000000..fd1e5a30d --- /dev/null +++ b/backend/src/services/langchain/tools/digital-product-tools.ts @@ -0,0 +1,1059 @@ +/** + * Digital Product Management Tools + * + * Ferramentas para criação de PRDs (Product Requirements Documents) + * e Roadmaps de produtos digitais. + * + * @version 1.0.0 + * @date 2026-02-07 + */ + +import { DynamicStructuredTool } from '@langchain/core/tools'; +import { z } from 'zod'; + +// ============================================================================ +// PRD GENERATOR TOOL +// ============================================================================ + +export const GeneratePRDTool = new DynamicStructuredTool({ + name: 'generate_prd', + description: `📋 Gera um PRD (Product Requirements Document) completo e profissional para um produto digital. + + Inclui: Visão, Problema, Personas, User Stories, Requisitos Funcionais/Não-Funcionais, + Arquitetura Técnica, Design/UX, Métricas de Sucesso, Riscos, Timeline e Go-to-Market. + + USE PARA: Criar PRDs, documentar requisitos, planejar features, definir escopo de produto.`, + + schema: z.object({ + productName: z.string().min(1).describe('Nome do produto ou feature'), + productDescription: z.string().min(10).describe('Descrição do produto/feature - problema que resolve e para quem'), + productType: z.enum([ + 'saas', + 'marketplace', + 'mobile_app', + 'web_app', + 'api_platform', + 'ai_product', + 'e_commerce', + 'fintech', + 'edtech', + 'healthtech', + 'other', + ]).default('web_app').describe('Tipo de produto digital'), + targetAudience: z.string().optional().describe('Público-alvo principal (B2B, B2C, enterprise, SMB, developers)'), + competitors: z.string().optional().describe('Principais concorrentes conhecidos (separados por vírgula)'), + techStack: z.string().optional().describe('Stack tecnológico preferido ou existente'), + businessModel: z.enum([ + 'freemium', + 'subscription', + 'usage_based', + 'marketplace_commission', + 'one_time', + 'advertising', + 'enterprise_license', + 'open_source_plus', + 'other', + ]).optional().describe('Modelo de negócio'), + aiFeatures: z.boolean().default(false).describe('Se o produto inclui features de AI/ML'), + mvpScope: z.boolean().default(true).describe('Se deve focar no escopo de MVP (true) ou produto completo (false)'), + includeUserStories: z.boolean().default(true).describe('Incluir user stories detalhadas'), + includeTechArchitecture: z.boolean().default(true).describe('Incluir seção de arquitetura técnica'), + includeGoToMarket: z.boolean().default(false).describe('Incluir estratégia Go-to-Market'), + }), + + func: async ({ + productName, + productDescription, + productType, + targetAudience, + competitors, + techStack, + businessModel, + aiFeatures, + mvpScope, + includeUserStories, + includeTechArchitecture, + includeGoToMarket, + }) => { + const startTime = Date.now(); + + const scopeLabel = mvpScope ? 'MVP' : 'Full Product'; + const now = new Date().toISOString().split('T')[0]; + + // Build PRD sections + const sections: string[] = []; + + // ==================== HEADER ==================== + sections.push(`# PRD - ${productName} + +| Campo | Valor | +|-------|-------| +| **Documento** | Product Requirements Document | +| **Produto** | ${productName} | +| **Tipo** | ${formatProductType(productType)} | +| **Escopo** | ${scopeLabel} | +| **Data** | ${now} | +| **Status** | Draft | +| **Versão** | 1.0 | + +---`); + + // ==================== VISÃO & PROBLEMA ==================== + sections.push(`## 1. Visão do Produto + +### 1.1 Problema +${productDescription} + +### 1.2 Visão +Criar ${productType === 'ai_product' ? 'uma solução AI-powered' : 'uma plataforma digital'} que resolva de forma eficiente e escalável os desafios descritos, proporcionando uma experiência excepcional ao usuário. + +### 1.3 Proposta de Valor +- **Para:** ${targetAudience || 'Definir público-alvo'} +- **Que:** Precisa resolver o problema descrito acima +- **O:** ${productName} é ${formatProductType(productType)} +- **Que:** Oferece uma solução [diferenciada/inovadora/eficiente] +- **Diferente de:** ${competitors || 'Concorrentes a serem mapeados'} +- **Nosso produto:** Se diferencia por [preencher com diferenciais únicos]`); + + // ==================== PERSONAS ==================== + sections.push(`## 2. Personas & Público-Alvo + +### 2.1 ICP (Ideal Customer Profile) +- **Segmento:** ${targetAudience || '[B2B/B2C] - Definir'} +- **Tamanho:** [SMB/Mid-Market/Enterprise] +- **Vertical:** [Tecnologia/Saúde/Educação/Financeiro/etc.] +- **Maturidade Digital:** [Iniciante/Intermediário/Avançado] + +### 2.2 Persona Primária +| Atributo | Descrição | +|----------|-----------| +| **Nome** | [Nome da Persona] | +| **Cargo** | [Cargo típico] | +| **Dores** | [3-5 principais dores] | +| **Objetivos** | [3-5 objetivos] | +| **Comportamento** | [Como busca soluções hoje] | + +### 2.3 Persona Secundária +| Atributo | Descrição | +|----------|-----------| +| **Nome** | [Nome da Persona 2] | +| **Cargo** | [Cargo típico] | +| **Dores** | [3-5 dores] | +| **Objetivos** | [3-5 objetivos] | + +### 2.4 Jobs-to-be-Done (JTBD) +1. **Quando** [situação], **eu quero** [motivação], **para que** [resultado esperado] +2. **Quando** [situação], **eu quero** [motivação], **para que** [resultado esperado] +3. **Quando** [situação], **eu quero** [motivação], **para que** [resultado esperado]`); + + // ==================== REQUISITOS FUNCIONAIS ==================== + sections.push(`## 3. Requisitos Funcionais + +### 3.1 Features Core (${scopeLabel}) + +| # | Feature | Prioridade | Esforço | Descrição | +|---|---------|------------|---------|-----------| +| F1 | [Feature Principal] | 🔴 Must | [S/M/L/XL] | [Descrição] | +| F2 | [Feature 2] | 🔴 Must | [S/M/L/XL] | [Descrição] | +| F3 | [Feature 3] | 🟡 Should | [S/M/L/XL] | [Descrição] | +| F4 | [Feature 4] | 🟡 Should | [S/M/L/XL] | [Descrição] | +| F5 | [Feature 5] | 🟢 Could | [S/M/L/XL] | [Descrição] | +${!mvpScope ? `| F6 | [Feature 6] | 🟢 Could | [S/M/L/XL] | [Descrição] | +| F7 | [Feature 7] | ⚪ Won't (v1) | [S/M/L/XL] | [Descrição] |` : ''} + +### 3.2 Priorização RICE + +| Feature | Reach | Impact | Confidence | Effort | RICE Score | +|---------|-------|--------|------------|--------|------------| +| F1 | [1-10] | [1-3] | [0.5-1] | [1-10] | [calc] | +| F2 | [1-10] | [1-3] | [0.5-1] | [1-10] | [calc] | +| F3 | [1-10] | [1-3] | [0.5-1] | [1-10] | [calc] |`); + + // ==================== USER STORIES ==================== + if (includeUserStories) { + sections.push(`## 4. User Stories + +### Epic 1: [Nome do Epic Principal] + +#### US-001: [Título da User Story] +**Como** [persona], +**eu quero** [ação/funcionalidade], +**para que** [benefício/resultado]. + +**Critérios de Aceitação:** +- [ ] [Critério 1] +- [ ] [Critério 2] +- [ ] [Critério 3] + +**Notas Técnicas:** [Considerações de implementação] + +#### US-002: [Título da User Story] +**Como** [persona], +**eu quero** [ação/funcionalidade], +**para que** [benefício/resultado]. + +**Critérios de Aceitação:** +- [ ] [Critério 1] +- [ ] [Critério 2] + +### Epic 2: [Nome do Epic Secundário] + +#### US-003: [Título] +**Como** [persona], +**eu quero** [ação], +**para que** [resultado]. + +**Critérios de Aceitação:** +- [ ] [Critério 1] +- [ ] [Critério 2]`); + } + + // ==================== REQUISITOS NÃO-FUNCIONAIS ==================== + sections.push(`## ${includeUserStories ? '5' : '4'}. Requisitos Não-Funcionais + +### Performance +- **Tempo de resposta:** < 200ms para 95% das requisições +- **Disponibilidade:** 99.9% uptime (SLA) +- **Throughput:** [X] requisições/segundo +- **Latência P99:** < 500ms + +### Segurança +- Autenticação: JWT + OAuth 2.0 / SSO +- Autorização: RBAC (Role-Based Access Control) +- Criptografia: TLS 1.3, AES-256 at rest +- Compliance: ${productType === 'healthtech' ? 'HIPAA, ' : ''}${productType === 'fintech' ? 'PCI-DSS, ' : ''}LGPD/GDPR +- OWASP Top 10: Mitigação completa + +### Escalabilidade +- Horizontal scaling (stateless services) +- CDN para assets estáticos +- Database: Read replicas, connection pooling +- Cache: Redis/Memcached para hot data + +### Acessibilidade +- WCAG 2.1 AA compliance +- Screen reader compatible +- Keyboard navigation +- Color contrast ratios + +### Observabilidade +- Structured logging (JSON) +- Distributed tracing +- Health checks + alertas +- Error tracking (Sentry/similar) +- APM (Application Performance Monitoring)`); + + // ==================== ARQUITETURA TÉCNICA ==================== + if (includeTechArchitecture) { + const sectionNum = includeUserStories ? '6' : '5'; + sections.push(`## ${sectionNum}. Arquitetura Técnica + +### ${sectionNum}.1 Tech Stack ${techStack ? `(Baseado em: ${techStack})` : '(Recomendado)'} + +| Camada | Tecnologia | Justificativa | +|--------|-----------|---------------| +| **Frontend** | ${techStack?.includes('React') ? 'React + TypeScript' : 'React/Next.js + TypeScript'} | Produtividade, ecossistema, tipagem | +| **UI Framework** | TailwindCSS + Radix UI | Acessibilidade, customização | +| **Backend** | ${techStack?.includes('Node') ? 'Node.js + Express' : 'Node.js/Python + FastAPI'} | Performance, async, ecossistema | +| **Database** | PostgreSQL + pgvector | Relacional + vector search | +| **Cache** | Redis | Session, rate limiting, cache | +| **Queue** | Inngest/BullMQ | Background jobs, webhooks | +| **Search** | ${aiFeatures ? 'pgvector + RAG' : 'Elasticsearch/Meilisearch'} | Full-text + semantic search | +${aiFeatures ? `| **AI/LLM** | Gemini/OpenAI API | LLM integration, embeddings | +| **Vector Store** | pgvector/Pinecone | Embedding storage, similarity search |` : ''} +| **Infra** | Docker + Fly.io/Vercel | Container orchestration | +| **CI/CD** | GitHub Actions | Automação de deploy | +| **Monitoring** | Grafana + Prometheus | Observabilidade | + +### ${sectionNum}.2 Diagrama de Arquitetura + +\`\`\` +┌─────────────┐ ┌─────────────┐ ┌──────────────┐ +│ Frontend │────▶│ API GW │────▶│ Backend │ +│ (React/Next) │ │ (Nginx/CDN) │ │ (Node.js) │ +└─────────────┘ └─────────────┘ └──────┬───────┘ + │ + ┌───────────────────────────┼──────────────────┐ + │ │ │ + ┌─────▼─────┐ ┌────────▼───────┐ ┌──────▼──────┐ + │ PostgreSQL │ │ Redis │ │ Queue │ + │ + pgvector │ │ (Cache) │ │ (Inngest) │ + └───────────┘ └────────────────┘ └─────────────┘ +${aiFeatures ? ` │ + ┌─────▼─────┐ + │ AI/LLM │ + │ Service │ + └───────────┘` : ''} +\`\`\` + +### ${sectionNum}.3 API Design + +| Endpoint | Método | Descrição | +|----------|--------|-----------| +| \`/api/v1/[resource]\` | GET | Listar recursos | +| \`/api/v1/[resource]\` | POST | Criar recurso | +| \`/api/v1/[resource]/:id\` | GET | Buscar recurso | +| \`/api/v1/[resource]/:id\` | PATCH | Atualizar recurso | +| \`/api/v1/[resource]/:id\` | DELETE | Remover recurso | + +### ${sectionNum}.4 Modelo de Dados (Core) + +\`\`\`sql +-- Tabelas principais (simplificado) +CREATE TABLE users ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + email VARCHAR(255) UNIQUE NOT NULL, + name VARCHAR(255) NOT NULL, + role VARCHAR(50) DEFAULT 'user', + created_at TIMESTAMP DEFAULT NOW() +); + +-- [Adicionar demais tabelas conforme domínio] +\`\`\``); + } + + // ==================== UX/UI ==================== + const uxSectionNum = includeTechArchitecture + ? (includeUserStories ? '7' : '6') + : (includeUserStories ? '6' : '5'); + sections.push(`## ${uxSectionNum}. Design & UX + +### ${uxSectionNum}.1 Princípios de Design +1. **Simplicidade**: Interface limpa e intuitiva +2. **Consistência**: Design system unificado +3. **Feedback**: Toda ação tem feedback visual claro +4. **Acessibilidade**: WCAG 2.1 AA desde o dia 1 +5. **Performance percebida**: Skeleton loading, optimistic updates + +### ${uxSectionNum}.2 Fluxos Principais +1. **Onboarding**: Registro → Setup → Primeiro valor em < 5 min +2. **Core Loop**: [Ação principal que o usuário repete] +3. **Aha Moment**: [Momento em que o usuário percebe o valor] + +### ${uxSectionNum}.3 Design System +- **Tipografia**: Inter/System fonts +- **Cores**: Primary, Secondary, Semantic (success, warning, error) +- **Spacing**: 4px grid system +- **Components**: Button, Input, Card, Modal, Toast, Table +- **Dark Mode**: Suporte desde v1 + +### ${uxSectionNum}.4 Responsividade +- **Desktop**: 1280px+ (primary) +- **Tablet**: 768px - 1279px +- **Mobile**: 320px - 767px ${productType === 'mobile_app' ? '(primary)' : ''}`); + + // ==================== AI FEATURES ==================== + if (aiFeatures) { + const aiSectionNum = parseInt(uxSectionNum) + 1; + sections.push(`## ${aiSectionNum}. Features de AI/ML + +### ${aiSectionNum}.1 AI Strategy +- **Approach**: AI-augmented (IA aumenta capacidade humana, não substitui) +- **Model Selection**: [Gemini/GPT-4/Claude] para geração, [text-embedding-004] para embeddings +- **RAG Pipeline**: Retrieval-Augmented Generation para contexto personalizado + +### ${aiSectionNum}.2 AI Features Planejadas + +| Feature | Tipo AI | Modelo | Prioridade | +|---------|---------|--------|------------| +| [Feature AI 1] | RAG + Generation | Gemini Pro | 🔴 Must | +| [Feature AI 2] | Classification | Flash/Lite | 🟡 Should | +| [Feature AI 3] | Embedding Search | text-embedding | 🟡 Should | +| [Feature AI 4] | Autonomous Agent | Pro + Tools | 🟢 Could | + +### ${aiSectionNum}.3 AI UX Patterns +- **Copilot**: Sugestões contextuais inline +- **Chat Interface**: Conversa natural com o produto +- **Smart Defaults**: Preenchimento inteligente de formulários +- **Proactive Insights**: Notificações baseadas em análise de dados + +### ${aiSectionNum}.4 Guardrails & Safety +- Content filtering para outputs +- Rate limiting por usuário +- Hallucination detection +- Human-in-the-loop para ações críticas +- Custo por request tracking`); + } + + // ==================== MÉTRICAS ==================== + const metricsNum = aiFeatures + ? parseInt(uxSectionNum) + 2 + : parseInt(uxSectionNum) + 1; + sections.push(`## ${metricsNum}. Métricas de Sucesso + +### ${metricsNum}.1 North Star Metric +**[Definir métrica principal que indica valor entregue ao usuário]** + +### ${metricsNum}.2 KPIs por Categoria + +#### Aquisição +| Métrica | Target ${scopeLabel} | Descrição | +|---------|---------------------|-----------| +| CAC | < R$ [X] | Custo de aquisição de cliente | +| Signup Rate | > [X]% | Taxa de conversão da landing page | +| Organic Traffic | > [X]/mês | Tráfego orgânico mensal | + +#### Ativação +| Métrica | Target ${scopeLabel} | Descrição | +|---------|---------------------|-----------| +| Activation Rate | > [X]% | % que completam onboarding | +| Time to Value | < [X] min | Tempo até primeiro valor | +| Aha Moment Rate | > [X]% | % que atingem o momento aha | + +#### Retenção +| Métrica | Target ${scopeLabel} | Descrição | +|---------|---------------------|-----------| +| D1 Retention | > [X]% | Retorno no dia 1 | +| D7 Retention | > [X]% | Retorno no dia 7 | +| D30 Retention | > [X]% | Retorno no dia 30 | +| Monthly Churn | < [X]% | Taxa de cancelamento mensal | + +#### Receita +| Métrica | Target ${scopeLabel} | Descrição | +|---------|---------------------|-----------| +| MRR | > R$ [X] | Receita mensal recorrente | +| LTV | > R$ [X] | Lifetime value | +| LTV/CAC | > 3x | Ratio de eficiência | +| ARPU | > R$ [X] | Receita média por usuário | + +#### Referral +| Métrica | Target ${scopeLabel} | Descrição | +|---------|---------------------|-----------| +| NPS | > [X] | Net Promoter Score | +| Viral Coefficient | > [X] | K-factor |`); + + // ==================== RISCOS ==================== + sections.push(`## ${metricsNum + 1}. Riscos & Mitigações + +| # | Risco | Probabilidade | Impacto | Mitigação | +|---|-------|---------------|---------|-----------| +| R1 | [Risco técnico - complexidade] | 🟡 Média | 🔴 Alto | [Estratégia de mitigação] | +| R2 | [Risco de mercado - PMF] | 🟡 Média | 🔴 Alto | Validação com early adopters antes do build | +| R3 | [Risco de segurança] | 🟢 Baixa | 🔴 Alto | Security review, pen testing, OWASP | +| R4 | [Risco de escala] | 🟢 Baixa | 🟡 Médio | Arquitetura stateless, auto-scaling | +| R5 | [Risco regulatório] | 🟡 Média | 🟡 Médio | Compliance review desde o design |`); + + // ==================== TIMELINE ==================== + sections.push(`## ${metricsNum + 2}. Timeline & Milestones + +### ${mvpScope ? 'MVP' : 'Product'} Roadmap + +| Fase | Duração | Entregáveis | +|------|---------|-------------| +| **Discovery** | 2-3 semanas | User research, competitive analysis, wireframes | +| **Design** | 2-3 semanas | UI design, protótipo interativo, design system | +| **Development Sprint 1** | 2 semanas | Setup infra, auth, core data model | +| **Development Sprint 2** | 2 semanas | Features core (F1, F2) | +| **Development Sprint 3** | 2 semanas | Features secondary (F3, F4) | +| **QA & Polish** | 1-2 semanas | Testes, bug fixes, performance | +| **Beta** | 2 semanas | Soft launch com early adopters | +| **Launch** | 1 semana | Go-live, monitoring, support | + +**Total estimado: ${mvpScope ? '10-14 semanas' : '16-24 semanas'}**`); + + // ==================== GO-TO-MARKET ==================== + if (includeGoToMarket) { + sections.push(`## ${metricsNum + 3}. Go-to-Market Strategy + +### Posicionamento +- **Categoria:** ${formatProductType(productType)} +- **Diferencial:** [Unique Selling Proposition] +- **Messaging:** "[One-liner que descreve o produto]" + +### Canais de Aquisição +| Canal | Estratégia | Budget | Expected CAC | +|-------|-----------|--------|-------------| +| **Organic/SEO** | Blog, landing pages, conteúdo educativo | Low | R$ [X] | +| **Product Hunt** | Launch day, community engagement | Free | R$ 0 | +| **LinkedIn** | Thought leadership, case studies | Medium | R$ [X] | +| **Paid Ads** | Google Ads, Meta Ads | High | R$ [X] | +| **Partnerships** | Integrações, co-marketing | Medium | R$ [X] | + +### Pricing Strategy +| Plano | Preço | Features | Target | +|-------|-------|----------|--------| +| **Free** | R$ 0/mês | [Features básicas] | Trial/Freemium | +| **Pro** | R$ [X]/mês | [Features completas] | Profissionais | +| **Business** | R$ [X]/mês | [Features + suporte] | Equipes | +| **Enterprise** | Custom | [Tudo + SLA + SSO] | Grandes empresas | + +### Launch Checklist +- [ ] Landing page com waitlist +- [ ] Product Hunt preparação +- [ ] Email sequence para waitlist +- [ ] Demo video +- [ ] Documentation/Help center +- [ ] Analytics setup (GA4 + Mixpanel) +- [ ] Error monitoring (Sentry) +- [ ] Customer support channel +- [ ] Press kit / Media outreach`); + } + + // ==================== APPENDIX ==================== + sections.push(`--- + +## Apêndice + +### A. Glossário +- **PRD**: Product Requirements Document +- **PMF**: Product-Market Fit +- **RICE**: Reach, Impact, Confidence, Effort +- **JTBD**: Jobs-to-be-Done +- **OKR**: Objectives and Key Results +- **AARRR**: Acquisition, Activation, Retention, Revenue, Referral +${aiFeatures ? `- **RAG**: Retrieval-Augmented Generation +- **LLM**: Large Language Model +- **Vector Search**: Busca por similaridade semântica` : ''} + +### B. Referências +- [Product-Market Fit: Sean Ellis Test](https://www.startup-marketing.com/) +- [RICE Scoring Model](https://www.intercom.com/blog/rice-simple-prioritization-for-product-managers/) +- [Shape Up by Basecamp](https://basecamp.com/shapeup) +${aiFeatures ? '- [AI UX Patterns - Nielsen Norman Group](https://www.nngroup.com/)' : ''} + +### C. Histórico de Revisões +| Data | Versão | Autor | Mudanças | +|------|--------|-------|----------| +| ${now} | 1.0 | [Autor] | Criação do documento | + +--- +*Documento gerado automaticamente pelo Digital Product Manager Agent* +*Liquid AI - ${now}*`); + + const prdContent = sections.join('\n\n'); + + const result = { + success: true, + type: 'prd', + productName, + productType: formatProductType(productType), + scope: scopeLabel, + content: prdContent, + sections: sections.length, + metadata: { + hasUserStories: includeUserStories, + hasTechArchitecture: includeTechArchitecture, + hasGoToMarket: includeGoToMarket, + hasAIFeatures: aiFeatures, + businessModel: businessModel || 'not_defined', + targetAudience: targetAudience || 'not_defined', + }, + duration: Date.now() - startTime, + }; + + return JSON.stringify(result); + }, +}); + +// ============================================================================ +// PRODUCT ROADMAP GENERATOR TOOL +// ============================================================================ + +export const GenerateProductRoadmapTool = new DynamicStructuredTool({ + name: 'generate_product_roadmap', + description: `🗺️ Gera um Roadmap estratégico de produto digital com timeline, fases, milestones e priorização. + + Inclui: Visão trimestral/anual, fases de desenvolvimento, features priorizadas, + dependências, recursos necessários e métricas de sucesso por fase. + + USE PARA: Planejar roadmap de produto, definir prioridades trimestrais, comunicar estratégia.`, + + schema: z.object({ + productName: z.string().min(1).describe('Nome do produto'), + productVision: z.string().min(10).describe('Visão do produto - onde quer chegar em 1-2 anos'), + timeframe: z.enum([ + 'quarterly', // 1 trimestre (3 meses) + 'semi_annual', // 6 meses + 'annual', // 1 ano + 'eighteen_months', // 18 meses + ]).default('annual').describe('Horizonte temporal do roadmap'), + currentPhase: z.enum([ + 'idea', // Ainda é uma ideia + 'discovery', // Em fase de discovery/research + 'design', // Em fase de design + 'mvp_development', // Desenvolvendo MVP + 'beta', // Em beta testing + 'launched', // Já lançado + 'growth', // Em fase de crescimento + 'maturity', // Produto maduro + ]).default('idea').describe('Fase atual do produto'), + teamSize: z.enum(['solo', 'small_2_5', 'medium_6_15', 'large_16_plus']).default('small_2_5').describe('Tamanho da equipe'), + keyFeatures: z.string().optional().describe('Features principais desejadas (separadas por vírgula)'), + constraints: z.string().optional().describe('Restrições conhecidas (budget, tecnologia, regulatório)'), + includeResourcePlan: z.boolean().default(true).describe('Incluir plano de recursos/equipe'), + includeRiskMatrix: z.boolean().default(true).describe('Incluir matriz de riscos'), + }), + + func: async ({ + productName, + productVision, + timeframe, + currentPhase, + teamSize, + keyFeatures, + constraints, + includeResourcePlan, + includeRiskMatrix, + }) => { + const startTime = Date.now(); + const now = new Date().toISOString().split('T')[0]; + + const timeframeLabel = formatTimeframe(timeframe); + const teamLabel = formatTeamSize(teamSize); + const phases = generatePhases(timeframe, currentPhase); + + const sections: string[] = []; + + // ==================== HEADER ==================== + sections.push(`# 🗺️ Product Roadmap - ${productName} + +| Campo | Valor | +|-------|-------| +| **Produto** | ${productName} | +| **Horizonte** | ${timeframeLabel} | +| **Fase Atual** | ${formatPhase(currentPhase)} | +| **Equipe** | ${teamLabel} | +| **Data** | ${now} | +| **Versão** | 1.0 | + +--- + +## Visão do Produto +> ${productVision} +${constraints ? `\n**Restrições:** ${constraints}` : ''} + +---`); + + // ==================== ROADMAP VISUAL ==================== + sections.push(`## Roadmap Visual + +\`\`\` +${generateVisualTimeline(phases, timeframe)} +\`\`\` + +---`); + + // ==================== FASES DETALHADAS ==================== + phases.forEach((phase, index) => { + sections.push(`## Fase ${index + 1}: ${phase.name} (${phase.duration}) + +### 🎯 Objetivo +${phase.objective} + +### 📦 Entregáveis + +| # | Feature/Entregável | Prioridade | Status | Owner | +|---|-------------------|------------|--------|-------| +${phase.deliverables.map((d, i) => `| ${index + 1}.${i + 1} | ${d.name} | ${d.priority} | ⬜ Planned | [TBD] |`).join('\n')} + +### ✅ Critérios de Sucesso (Exit Criteria) +${phase.exitCriteria.map(c => `- [ ] ${c}`).join('\n')} + +### 📊 Métricas +${phase.metrics.map(m => `- **${m.name}**: ${m.target}`).join('\n')} + +---`); + }); + + // ==================== KEY FEATURES ==================== + if (keyFeatures) { + sections.push(`## Features Prioritization + +### Features Solicitadas +${keyFeatures.split(',').map((f, i) => `${i + 1}. ${f.trim()}`).join('\n')} + +### Priorização (RICE Score) + +| Feature | Reach | Impact | Confidence | Effort | Score | Fase | +|---------|-------|--------|------------|--------|-------|------| +${keyFeatures.split(',').map((f, i) => `| ${f.trim()} | [1-10] | [1-3] | [0.5-1] | [1-10] | [calc] | Fase ${Math.min(i + 1, phases.length)} |`).join('\n')} + +---`); + } + + // ==================== DEPENDÊNCIAS ==================== + sections.push(`## Dependências & Riscos + +### Mapa de Dependências +\`\`\` +${phases.map((p, i) => `Fase ${i + 1} (${p.name})`).join(' → ')} +\`\`\` + +### Dependências Externas +| # | Dependência | Fase | Impacto se Atrasada | Mitigação | +|---|------------|------|--------------------|-----------| +| D1 | [Integração externa] | Fase 1 | Bloqueia feature X | API mock | +| D2 | [Contratação] | Fase 2 | Atrasa timeline | Outsourcing | +| D3 | [Aprovação regulatória] | Fase 3 | Bloqueia launch | Iniciar cedo |`); + + // ==================== RESOURCE PLAN ==================== + if (includeResourcePlan) { + sections.push(`## Plano de Recursos + +### Equipe Necessária por Fase + +| Papel | ${phases.map((p, i) => `Fase ${i + 1}`).join(' | ')} | +|-------|${phases.map(() => '-----').join(' | ')} | +| **Product Manager** | ${phases.map(() => '1').join(' | ')} | +| **Designer (UX/UI)** | ${phases.map((_, i) => i < 2 ? '1' : '0.5').join(' | ')} | +| **Frontend Dev** | ${phases.map((_, i) => i === 0 ? '1' : '2').join(' | ')} | +| **Backend Dev** | ${phases.map((_, i) => i === 0 ? '1' : '2').join(' | ')} | +| **QA** | ${phases.map((_, i) => i >= phases.length - 2 ? '1' : '0.5').join(' | ')} | +${teamSize === 'large_16_plus' ? `| **DevOps** | ${phases.map(() => '1').join(' | ')} | +| **Data Engineer** | ${phases.map((_, i) => i >= 2 ? '1' : '0').join(' | ')} |` : ''} + +### Budget Estimativa +| Categoria | Mensal | ${timeframeLabel} | +|-----------|--------|-------------------| +| **Equipe** | R$ [X] | R$ [X] | +| **Infraestrutura** | R$ [X] | R$ [X] | +| **Ferramentas/SaaS** | R$ [X] | R$ [X] | +| **Marketing** | R$ [X] | R$ [X] | +| **Total** | R$ [X] | R$ [X] |`); + } + + // ==================== RISK MATRIX ==================== + if (includeRiskMatrix) { + sections.push(`## Matriz de Riscos + +### Heatmap + +| | Baixo Impacto | Médio Impacto | Alto Impacto | +|--|--------------|---------------|-------------| +| **Alta Prob.** | 🟡 Monitorar | 🟠 Mitigar | 🔴 Eliminar | +| **Média Prob.** | 🟢 Aceitar | 🟡 Monitorar | 🟠 Mitigar | +| **Baixa Prob.** | 🟢 Aceitar | 🟢 Aceitar | 🟡 Monitorar | + +### Riscos Identificados + +| Risco | Prob. | Impacto | Fase | Ação | +|-------|-------|---------|------|------| +| Atraso no desenvolvimento | 🟡 | 🟠 | Todas | Buffer de 20% no timeline | +| Escopo creep | 🔴 | 🟠 | Todas | Change request process | +| PMF não validado | 🟡 | 🔴 | Fase 1-2 | Validar com 50+ usuarios antes do build | +| Problema de performance | 🟡 | 🟠 | Fase 3+ | Load testing desde MVP | +| Turnover da equipe | 🟢 | 🔴 | Todas | Documentação, knowledge sharing |`); + } + + // ==================== REVIEW ==================== + sections.push(`## Review & Governance + +### Cadência de Review +- **Semanal**: Sprint review, blockers, velocity +- **Quinzenal**: Roadmap checkpoint, reprioritização +- **Mensal**: OKR review, métricas de produto +- **Trimestral**: Strategy review, roadmap atualização + +### Stakeholders +| Nome | Papel | Decisão | +|------|-------|---------| +| [Nome] | Product Manager | Priorização, escopo | +| [Nome] | Tech Lead | Arquitetura, viabilidade técnica | +| [Nome] | Design Lead | UX, usabilidade | +| [Nome] | Business Owner | Budget, go/no-go | + +--- +*Roadmap gerado automaticamente pelo Digital Product Manager Agent* +*Liquid AI - ${now}*`); + + const roadmapContent = sections.join('\n\n'); + + const result = { + success: true, + type: 'roadmap', + productName, + timeframe: timeframeLabel, + currentPhase: formatPhase(currentPhase), + totalPhases: phases.length, + content: roadmapContent, + phases: phases.map(p => ({ + name: p.name, + duration: p.duration, + deliverables: p.deliverables.length, + })), + duration: Date.now() - startTime, + }; + + return JSON.stringify(result); + }, +}); + +// ============================================================================ +// HELPER FUNCTIONS +// ============================================================================ + +function formatProductType(type: string): string { + const map: Record = { + saas: 'SaaS (Software as a Service)', + marketplace: 'Marketplace', + mobile_app: 'Aplicativo Mobile', + web_app: 'Aplicação Web', + api_platform: 'API Platform', + ai_product: 'Produto AI-Powered', + e_commerce: 'E-Commerce', + fintech: 'Fintech', + edtech: 'EdTech', + healthtech: 'HealthTech', + other: 'Outro', + }; + return map[type] || type; +} + +function formatTimeframe(tf: string): string { + const map: Record = { + quarterly: '3 meses (Q1)', + semi_annual: '6 meses', + annual: '12 meses', + eighteen_months: '18 meses', + }; + return map[tf] || tf; +} + +function formatTeamSize(size: string): string { + const map: Record = { + solo: 'Solo (1 pessoa)', + small_2_5: 'Pequena (2-5 pessoas)', + medium_6_15: 'Média (6-15 pessoas)', + large_16_plus: 'Grande (16+ pessoas)', + }; + return map[size] || size; +} + +function formatPhase(phase: string): string { + const map: Record = { + idea: '💡 Ideia', + discovery: '🔍 Discovery', + design: '🎨 Design', + mvp_development: '🛠️ MVP Development', + beta: '🧪 Beta Testing', + launched: '🚀 Lançado', + growth: '📈 Growth', + maturity: '🏆 Maturidade', + }; + return map[phase] || phase; +} + +interface PhaseDefinition { + name: string; + duration: string; + objective: string; + deliverables: Array<{ name: string; priority: string }>; + exitCriteria: string[]; + metrics: Array<{ name: string; target: string }>; +} + +function generatePhases(timeframe: string, currentPhase: string): PhaseDefinition[] { + const allPhases: PhaseDefinition[] = [ + { + name: '🔍 Discovery & Validação', + duration: '3-4 semanas', + objective: 'Validar o problema, entender o usuário e mapear o mercado.', + deliverables: [ + { name: 'User Research (10+ entrevistas)', priority: '🔴 Must' }, + { name: 'Competitive Analysis', priority: '🔴 Must' }, + { name: 'Value Proposition Canvas', priority: '🔴 Must' }, + { name: 'ICP & Personas documentados', priority: '🟡 Should' }, + { name: 'TAM/SAM/SOM estimativa', priority: '🟡 Should' }, + ], + exitCriteria: [ + 'Problema validado com 10+ entrevistas', + 'ICP definido com dados qualitativos', + 'Pelo menos 3 concorrentes analisados', + 'Hipóteses de valor documentadas', + ], + metrics: [ + { name: 'Entrevistas realizadas', target: '≥ 10' }, + { name: 'Problem-Solution Fit', target: '70%+ dos entrevistados confirmam o problema' }, + ], + }, + { + name: '🎨 Design & Prototipação', + duration: '3-4 semanas', + objective: 'Definir a experiência do usuário e validar com protótipos.', + deliverables: [ + { name: 'Wireframes de fluxos core', priority: '🔴 Must' }, + { name: 'Design System básico', priority: '🔴 Must' }, + { name: 'Protótipo interativo (Figma)', priority: '🔴 Must' }, + { name: 'Testes de usabilidade (5+ usuários)', priority: '🟡 Should' }, + { name: 'Definição de arquitetura técnica', priority: '🔴 Must' }, + ], + exitCriteria: [ + 'Protótipo testado com 5+ usuários', + 'Design system documentado', + 'Arquitetura técnica aprovada', + 'Backlog de MVP priorizado', + ], + metrics: [ + { name: 'Task Success Rate (usability)', target: '≥ 80%' }, + { name: 'SUS Score', target: '≥ 70' }, + ], + }, + { + name: '🛠️ MVP Development', + duration: '6-8 semanas', + objective: 'Construir o produto mínimo viável com as features core.', + deliverables: [ + { name: 'Setup de infraestrutura (CI/CD, DB, hosting)', priority: '🔴 Must' }, + { name: 'Autenticação e autorização', priority: '🔴 Must' }, + { name: 'Features core (F1-F3)', priority: '🔴 Must' }, + { name: 'Testes automatizados (> 70% coverage)', priority: '🟡 Should' }, + { name: 'Monitoring e logging', priority: '🟡 Should' }, + { name: 'Landing page', priority: '🔴 Must' }, + ], + exitCriteria: [ + 'Features core funcionando end-to-end', + 'Testes automatizados passando', + 'Deploy em staging environment', + 'Security review básica concluída', + ], + metrics: [ + { name: 'Velocity', target: 'Trending up sprint over sprint' }, + { name: 'Bug Rate', target: '< 2 bugs críticos por sprint' }, + { name: 'Test Coverage', target: '≥ 70%' }, + ], + }, + { + name: '🧪 Beta & Validação', + duration: '3-4 semanas', + objective: 'Lançar para early adopters, coletar feedback e iterar.', + deliverables: [ + { name: 'Beta launch (50-100 early adopters)', priority: '🔴 Must' }, + { name: 'Feedback loop estruturado', priority: '🔴 Must' }, + { name: 'Bug fixes e iterações', priority: '🔴 Must' }, + { name: 'Performance optimization', priority: '🟡 Should' }, + { name: 'Onboarding flow refinado', priority: '🟡 Should' }, + ], + exitCriteria: [ + 'NPS ≥ 30 dos beta testers', + 'Retention D7 ≥ 40%', + 'Zero bugs críticos em produção', + 'Sean Ellis Test: ≥ 40% "very disappointed"', + ], + metrics: [ + { name: 'Beta Users', target: '≥ 50' }, + { name: 'NPS', target: '≥ 30' }, + { name: 'D7 Retention', target: '≥ 40%' }, + { name: 'Sean Ellis Score', target: '≥ 40%' }, + ], + }, + { + name: '🚀 Launch & Growth', + duration: '4-6 semanas', + objective: 'Lançamento público e início da estratégia de crescimento.', + deliverables: [ + { name: 'Product Hunt launch', priority: '🟡 Should' }, + { name: 'SEO foundations', priority: '🟡 Should' }, + { name: 'Analytics setup completo', priority: '🔴 Must' }, + { name: 'Features de growth (referral, sharing)', priority: '🟡 Should' }, + { name: 'Customer support channel', priority: '🔴 Must' }, + { name: 'Documentation/Help center', priority: '🟡 Should' }, + ], + exitCriteria: [ + 'Produto lançado publicamente', + 'Analytics tracking 100% dos eventos core', + 'Growth loop principal ativo', + 'Primeiros paying customers', + ], + metrics: [ + { name: 'Signups', target: '≥ 500 no primeiro mês' }, + { name: 'Activation Rate', target: '≥ 30%' }, + { name: 'MRR', target: '> R$ 0 (first revenue)' }, + ], + }, + { + name: '📈 Scale & Optimize', + duration: '8-12 semanas', + objective: 'Escalar o produto, otimizar conversões e expandir features.', + deliverables: [ + { name: 'Features secundárias (F4-F6)', priority: '🟡 Should' }, + { name: 'A/B testing framework', priority: '🟡 Should' }, + { name: 'Paid acquisition channels', priority: '🟢 Could' }, + { name: 'API / Integrações', priority: '🟢 Could' }, + { name: 'Internationalization (i18n)', priority: '🟢 Could' }, + { name: 'Advanced analytics & dashboards', priority: '🟡 Should' }, + ], + exitCriteria: [ + 'MRR growing month-over-month', + 'LTV/CAC > 3x', + 'Churn < 5% mensal', + 'NPS > 40', + ], + metrics: [ + { name: 'MRR Growth', target: '≥ 15% MoM' }, + { name: 'LTV/CAC', target: '> 3x' }, + { name: 'Monthly Churn', target: '< 5%' }, + { name: 'NPS', target: '> 40' }, + ], + }, + ]; + + // Filter phases based on current phase and timeframe + const phaseStartIndex: Record = { + idea: 0, + discovery: 0, + design: 1, + mvp_development: 2, + beta: 3, + launched: 4, + growth: 4, + maturity: 5, + }; + + const phaseCount: Record = { + quarterly: 2, + semi_annual: 3, + annual: 5, + eighteen_months: 6, + }; + + const start = phaseStartIndex[currentPhase] || 0; + const count = phaseCount[timeframe] || 4; + + return allPhases.slice(start, start + count); +} + +function generateVisualTimeline(phases: PhaseDefinition[], timeframe: string): string { + const monthCount: Record = { + quarterly: 3, + semi_annual: 6, + annual: 12, + eighteen_months: 18, + }; + + const months = monthCount[timeframe] || 12; + const monthNames = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']; + + const now = new Date(); + const startMonth = now.getMonth(); + + // Generate month headers + const headerMonths = []; + for (let i = 0; i < Math.min(months, 12); i++) { + headerMonths.push(monthNames[(startMonth + i) % 12]); + } + + const header = `Timeline: ${headerMonths.join(' | ')}`; + const separator = '─'.repeat(header.length); + + const lines = [header, separator]; + + // Generate phase bars + const monthsPerPhase = Math.max(1, Math.floor(months / phases.length)); + phases.forEach((phase, i) => { + const offset = ' '.repeat(i * monthsPerPhase * 2); + const bar = '█'.repeat(Math.min(monthsPerPhase * 5, 30)); + lines.push(`${offset}${bar} ${phase.name}`); + }); + + return lines.join('\n'); +} + +// ============================================================================ +// EXPORTS +// ============================================================================ + +export function getDigitalProductTools(): DynamicStructuredTool[] { + return [GeneratePRDTool, GenerateProductRoadmapTool]; +} + +export const DIGITAL_PRODUCT_TOOLS = [GeneratePRDTool, GenerateProductRoadmapTool]; diff --git a/backend/src/services/langchain/tools/index.ts b/backend/src/services/langchain/tools/index.ts index fa7c2475a..722a982dd 100644 --- a/backend/src/services/langchain/tools/index.ts +++ b/backend/src/services/langchain/tools/index.ts @@ -234,6 +234,9 @@ export { agentTransferTool } from './AgentTransferTool.js'; // AGI Evolution Tools export { ProposeAutonomousImprovementTool, SimulateFutureScenariosTool, getAgiEvolutionTools } from './agi-evolution-tools.js'; +// Digital Product Management Tools (PRD, Roadmap) +export { GeneratePRDTool, GenerateProductRoadmapTool, getDigitalProductTools, DIGITAL_PRODUCT_TOOLS } from './digital-product-tools.js'; + // ✅ MEMOS-ENHANCED TOOLS (2026-01-20) - Inspirado no MemOS // Memory Feedback, Memory Cubes, Memory Relations, Tool Memory export { @@ -393,6 +396,16 @@ export async function initializeToolRegistry(): Promise { console.warn('[ToolRegistry] ⚠️ Erro ao registrar document suggestion tools:', error); } + // ✅ Digital Product Management Tools (PRD, Roadmap) - 2026-02-07 + try { + const { getDigitalProductTools } = await import("./digital-product-tools.js"); + const digitalProductTools = getDigitalProductTools(); + digitalProductTools.forEach(tool => registerTool(tool.name, 'product-management', tool)); + console.log(`✅ [ToolRegistry] Digital Product tools registradas: ${digitalProductTools.map(t => t.name).join(', ')}`); + } catch (error) { + console.warn('[ToolRegistry] ⚠️ Erro ao registrar digital product tools:', error); + } + // Outras tools (carregamento assíncrono seguro) const asyncToolLoaders: Array<{ name: string;