From d1e8abe428e446678fe7958eb4824a37e50a0f46 Mon Sep 17 00:00:00 2001 From: Marco Costa Date: Wed, 7 Oct 2026 22:06:35 -0300 Subject: [PATCH] refactor(prompts): enforce multi-file project structure and remove line constraints Remove maximum line count restrictions from prompt templates and enhance the prompt building service to require complete multi-file project outputs. Update generated prompts to explicitly instruct creation of standard legal documents (LICENSE, README.md, RULES.md, cookies.html, termos-de-uso.html, privacidade.html) with full content from scratch. Modify UI text to reflect the new multi-file requirements. --- app/Services/PromptProjectService.php | 3 + database/seeders/PromptTemplateSeeder.php | 72 +++++++++---------- .../views/prompt-projects/create.blade.php | 2 +- 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/app/Services/PromptProjectService.php b/app/Services/PromptProjectService.php index ca25a34..8d9ed7b 100755 --- a/app/Services/PromptProjectService.php +++ b/app/Services/PromptProjectService.php @@ -268,6 +268,9 @@ class PromptProjectService } $parts[] = "SYSTEM REQUIREMENTS (ALWAYS apply to every project):"; + $parts[] = "- The generated prompt must produce a COMPLETE MULTI-FILE PROJECT structure (not a single file). Generate separate files organized in a proper project folder structure"; + $parts[] = "- The prompt MUST instruct to create EACH of the following standard files FROM SCRATCH with COMPLETE content (not just descriptions): LICENSE (MIT with company name and year), README.md (full documentation in Portuguese), RULES.md (coding rules in Portuguese), cookies.html (complete LGPD cookie banner page with HTML/CSS/JS), termos-de-uso.html (complete Terms of Service page), privacidade.html (complete Privacy Policy page compliant with LGPD)"; + $parts[] = "- Do NOT just describe what the files should contain — the generated prompt must explicitly tell the developer/AI to CREATE each file with full, ready-to-use content"; $parts[] = "- Fully responsive design (mobile-first, all screen sizes including smartphones)"; $parts[] = "- Use only MIT-licensed or permissive open-source icons, images, and dependencies that are safe for commercial use"; $parts[] = "- All password fields must include a toggle button (eye icon) to show/hide the password"; diff --git a/database/seeders/PromptTemplateSeeder.php b/database/seeders/PromptTemplateSeeder.php index e6e3a0c..1e2256e 100755 --- a/database/seeders/PromptTemplateSeeder.php +++ b/database/seeders/PromptTemplateSeeder.php @@ -23,7 +23,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'A empresa atende pequenas e médias empresas com soluções de tecnologia. A landing page deve transmitir confiança, inovação e credibilidade, com design moderno e responsivo.', 'persona' => 'Você é um especialista em UI/UX e Frontend com foco em conversão. Domina HTML5, CSS3, JavaScript, Bootstrap 5 e práticas de SEO.', 'tone' => 'Profissional, tecnológico, confiável e moderno. Linguagem acessível mas sofisticada.', - 'constraints' => "- HTML5 semântico e acessível.\n- CSS responsivo mobile-first.\n- Máximo de 800 linhas.\n- SEO otimizado.\n- Sem dependências externas além de Bootstrap 5 e Bootstrap Icons.\n- Animações suaves com CSS.", + 'constraints' => "- HTML5 semântico e acessível.\n- CSS responsivo mobile-first.\n- SEO otimizado.\n- Sem dependências externas além de Bootstrap 5 e Bootstrap Icons.\n- Animações suaves com CSS.", 'output_format' => 'Código HTML completo em arquivo único com CSS embutido e JavaScript mínimo para interações.', 'examples' => "Hero section com headline, subtítulo, CTA.\nCards de serviços.\nDepoimentos.\nFormulário de contato.\nFooter completo.", 'variables' => 'nome_empresa, slogan, telefone, email, endereco, linkedin_url', @@ -43,7 +43,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'SaaS B2B ou B2C com modelo de assinatura. Precisa convencer visitantes a experimentar ou assinar o produto.', 'persona' => 'Especialista em Growth-Driven Design e CRO (Conversion Rate Optimization) para SaaS.', 'tone' => 'Moderno, direto, orientado a resultados. Linguagem clara e orientada a benefícios.', - 'constraints' => "- Foco em conversão e captura de leads.\n- Design moderno com animações.\n- Responsivo.\n- SEO otimizado.\n- Máximo de 900 linhas.", + 'constraints' => "- Foco em conversão e captura de leads.\n- Design moderno com animações.\n- Responsivo.\n- SEO otimizado.", 'output_format' => 'HTML completo com seções: Hero, Features, Pricing, FAQ, CTA final, Footer.', 'examples' => 'Hero com trial grátis, grid de funcionalidades, tabela de preços com destaque no plano recomendado.', 'variables' => 'nome_produto, slogan, trial_dias, preco_inicial, url_signup', @@ -63,7 +63,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Produto digital voltado para criadores de conteúdo, desenvolvedores ou profissionais de marketing.', 'persona' => 'Especialista em lançamentos digitais e páginas de alta conversão.', 'tone' => 'Persuasivo, entusiasta e confiável.', - 'constraints' => "- Foco em conversão.\n- Design moderno.\n- Responsivo.\n- Máximo de 800 linhas.", + 'constraints' => "- Foco em conversão.\n- Design moderno.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Problema/Solução, Benefícios, Prova social, Oferta, FAQ, CTA.', 'examples' => 'Hero com vídeo ou imagem, seção de benefícios com ícones, depoimentos, contador de oferta.', 'variables' => 'nome_produto, preco, desconto, url_checkout', @@ -83,7 +83,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Evento corporativo, conferência, workshop ou webinar. Público de 100 a 5000 participantes.', 'persona' => 'Especialista em eventos e experiência do usuário para inscrições.', 'tone' => 'Animado, profissional, informativo.', - 'constraints' => "- Design impactante.\n- Informações claras.\n- Formulário de inscrição.\n- Responsivo.\n- Máximo de 700 linhas.", + 'constraints' => "- Design impactante.\n- Informações claras.\n- Formulário de inscrição.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Sobre, Programação, Palestrantes, Inscrição, Local/Online, Footer.', 'examples' => 'Hero com contador regressivo, cards de palestrantes, timeline do evento, mapa ou link de transmissão.', 'variables' => 'nome_evento, data, local, url_inscricao, valor', @@ -103,7 +103,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Marketing de conteúdo para nutrição de leads. O material é oferecido em troca de e-mail.', 'persona' => 'Especialista em marketing de conteúdo e inbound marketing.', 'tone' => 'Educativo, confiável, persuasivo.', - 'constraints' => "- Foco em captura de leads.\n- Design clean.\n- Responsivo.\n- Máximo de 600 linhas.", + 'constraints' => "- Foco em captura de leads.\n- Design clean.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, O que você vai aprender, Sobre o autor, Formulário de captura, Footer.', 'examples' => 'Hero com capa do e-book, bullets de benefícios, formulário simples (nome + email), CTA destacado.', 'variables' => 'titulo_ebook, autor, numero_paginas, url_download', @@ -123,7 +123,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Curso online de desenvolvimento web, marketing digital, design ou área tech. Público iniciante a intermediário.', 'persona' => 'Especialista em educação a distância e páginas de venda de cursos.', 'tone' => 'Motivador, educativo, confiável.', - 'constraints' => "- Foco em conversão.\n- Design moderno.\n- Responsivo.\n- Máximo de 900 linhas.", + 'constraints' => "- Foco em conversão.\n- Design moderno.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Para quem é, Conteúdo programático, Instrutor, Depoimentos, Garantia, Preço, FAQ, CTA.', 'examples' => 'Hero com vídeo de apresentação, accordion de módulos, selo de garantia, depoimentos em vídeo.', 'variables' => 'nome_curso, instrutor, carga_horaria, preco, url_matricula', @@ -143,7 +143,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'App de produtividade, finanças, saúde ou social. Disponível para iOS e Android.', 'persona' => 'Especialista em mobile apps e ASO (App Store Optimization).', 'tone' => 'Moderno, dinâmico, fresco.', - 'constraints' => "- Design moderno com mockups.\n- Responsivo.\n- Links para App Store e Google Play.\n- Máximo de 800 linhas.", + 'constraints' => "- Design moderno com mockups.\n- Responsivo.\n- Links para App Store e Google Play.", 'output_format' => 'HTML completo com seções: Hero, Funcionalidades, Telas, Reviews, Download, FAQ, Footer.', 'examples' => 'Hero com phone mockup, grid de funcionalidades com ícones, badges de avaliação, botões de download.', 'variables' => 'nome_app, slogan, url_ios, url_android, categoria', @@ -163,7 +163,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Agência digital que oferece serviços de branding, design, desenvolvimento e marketing. Atende startups e PMEs.', 'persona' => 'Especialista em branding e experiência digital para agências.', 'tone' => 'Criativo, profissional, ousado.', - 'constraints' => "- Design impactante.\n- Portfólio em destaque.\n- Responsivo.\n- Máximo de 900 linhas.", + 'constraints' => "- Design impactante.\n- Portfólio em destaque.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Serviços, Portfólio, Processo, Clientes, Depoimentos, Contato, Footer.', 'examples' => 'Hero com vídeo background, grid de projetos, logos de clientes, formulário de orçamento.', 'variables' => 'nome_agencia, especialidades, url_portfolio, telefone, email', @@ -183,7 +183,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Restaurante de culinária contemporânea, com ambiente acolhedor e delivery.', 'persona' => 'Especialista em design para gastronomia e experiência do usuário.', 'tone' => 'Acolhedor, sofisticado, saboroso.', - 'constraints' => "- Design elegante.\n- Cardápio visual.\n- Sistema de reservas.\n- Responsivo.\n- Máximo de 700 linhas.", + 'constraints' => "- Design elegante.\n- Cardápio visual.\n- Sistema de reservas.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Sobre, Cardápio, Reservas, Depoimentos, Localização, Footer.', 'examples' => 'Hero com imagem do ambiente, cards de pratos com fotos, mapa integrado, botão de reserva.', 'variables' => 'nome_restaurante, cozinha, telefone, endereco, url_reserva', @@ -203,7 +203,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Imobiliária que vende e aluga imóveis residenciais e comerciais. Atua em grandes cidades.', 'persona' => 'Especialista em imóveis e experiência do usuário para vendas.', 'tone' => 'Sofisticado, confiável, aspiracional.', - 'constraints' => "- Design premium.\n- Galeria de imagens.\n- Filtros de busca.\n- Responsivo.\n- Máximo de 800 linhas.", + 'constraints' => "- Design premium.\n- Galeria de imagens.\n- Filtros de busca.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Busca, Destaques, Sobre, Contato, Footer.', 'examples' => 'Hero com slider de imóveis, cards com fotos e preços, mapa de localização, formulário de contato.', 'variables' => 'nome_imobiliaria, cidade, telefone, email, url_portfolio', @@ -223,7 +223,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Clínica de fisioterapia, academia boutique ou spa urbano. Público preocupado com saúde e bem-estar.', 'persona' => 'Especialista em saúde digital e experiência do usuário para clínicas.', 'tone' => 'Acolhedor, profissional, saudável.', - 'constraints' => "- Design clean e acolhedor.\n- Sistema de agendamento.\n- Responsivo.\n- Máximo de 700 linhas.", + 'constraints' => "- Design clean e acolhedor.\n- Sistema de agendamento.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Serviços, Profissionais, Depoimentos, Agendamento, Localização, Footer.', 'examples' => 'Hero com imagem relaxante, cards de serviços, equipe com fotos, botão de agendamento WhatsApp.', 'variables' => 'nome_clinica, servicos, telefone, endereco, url_agendamento', @@ -243,7 +243,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Faculdade, curso técnico ou escola de idiomas. Público jovem e adultos em busca de qualificação.', 'persona' => 'Especialista em educação e experiência do usuário para instituições de ensino.', 'tone' => 'Institucional, inspirador, educativo.', - 'constraints' => "- Design institucional.\n- Informações claras.\n- Responsivo.\n- Máximo de 800 linhas.", + 'constraints' => "- Design institucional.\n- Informações claras.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Cursos, Diferenciais, Infraestrutura, Depoimentos, Matrícula, Footer.', 'examples' => 'Hero com campus, cards de cursos, galeria de fotos, formulário de matrícula.', 'variables' => 'nome_escola, cursos, telefone, email, url_matricula', @@ -263,7 +263,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Empresa consolidada que precisa de presença digital profissional. Pode ser indústria, comércio ou serviços.', 'persona' => 'Especialista em sites institucionais e identidade digital.', 'tone' => 'Institucional, profissional, confiável.', - 'constraints' => "- HTML5 semântico.\n- Múltiplas seções.\n- SEO otimizado.\n- Responsivo.\n- Máximo de 1000 linhas.", + 'constraints' => "- HTML5 semântico.\n- Múltiplas seções.\n- SEO otimizado.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Header, Hero, Sobre, Serviços, Cases, Equipe, Contato, Footer.', 'examples' => 'Header fixo, hero com imagem institucional, grid de serviços, timeline da empresa, formulário de contato.', 'variables' => 'nome_empresa, slogan, missao, telefone, email, endereco', @@ -283,7 +283,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Profissional de tecnologia ou design que quer showcase de projetos e experiência.', 'persona' => 'Especialista em portfolios e experiência do usuário para profissionais.', 'tone' => 'Minimalista, moderno, profissional.', - 'constraints' => "- Design clean.\n- Foco nos projetos.\n- Responsivo.\n- Máximo de 700 linhas.", + 'constraints' => "- Design clean.\n- Foco nos projetos.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Sobre, Experiência, Projetos, Skills, Contato, Footer.', 'examples' => 'Hero com foto, timeline de experiência, grid de projetos com screenshots, lista de skills.', 'variables' => 'nome, profissao, email, linkedin, github, url_portfolio', @@ -303,7 +303,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Profissional criativo que precisa de um site impactante e visualmente marcante.', 'persona' => 'Especialista em design criativo e experiência visual imersiva.', 'tone' => 'Criativo, ousado, artístico.', - 'constraints' => "- Design criativo e impactante.\n- Galeria de imagens.\n- Animações suaves.\n- Responsivo.\n- Máximo de 800 linhas.", + 'constraints' => "- Design criativo e impactante.\n- Galeria de imagens.\n- Animações suaves.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Galeria, Sobre, Processo, Contato, Footer.', 'examples' => 'Hero com animação, grid masonry de trabalhos, lightbox de imagens, formulário de contato minimalista.', 'variables' => 'nome, profissao, estilo, url_portfolio, instagram', @@ -323,7 +323,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Blog de tecnologia, lifestyle ou produtividade. Conteúdo em português.', 'persona' => 'Especialista em UX para blogs e conteúdo.', 'tone' => 'Acessível, envolvente, informativo.', - 'constraints' => "- Design legível.\n- Layout de blog.\n- Responsivo.\n- Máximo de 900 linhas.", + 'constraints' => "- Design legível.\n- Layout de blog.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Header, Hero, Lista de posts, Sidebar, Newsletter, Footer.', 'examples' => 'Lista de posts com thumbnails, sidebar com categorias, formulário de newsletter, paginação.', 'variables' => 'nome_autor, categoria_principal, url_newsletter', @@ -343,7 +343,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Loja de roupas, eletrônicos ou produtos artesanais. Catálogo com até 20 produtos.', 'persona' => 'Especialista em e-commerce e experiência de compra online.', 'tone' => 'Comercial, confiável, envolvente.', - 'constraints' => "- Design moderno.\n- Catálogo de produtos.\n- Carrinho funcional.\n- Responsivo.\n- Máximo de 1200 linhas.", + 'constraints' => "- Design moderno.\n- Catálogo de produtos.\n- Carrinho funcional.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Header, Hero, Catálogo, Carrinho, Checkout, Footer.', 'examples' => 'Grid de produtos, filtros, carrinho lateral, formulário de checkout, badges de desconto.', 'variables' => 'nome_loja, categoria, moeda, url_checkout', @@ -363,7 +363,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Sistema de gestão de projetos, CRM ou ferramenta de produtividade para equipes.', 'persona' => 'Especialista em UX para aplicativos web e dashboards.', 'tone' => 'Profissional, limpo, eficiente.', - 'constraints' => "- Interface limpa.\n- Dashboard com gráficos.\n- Responsivo.\n- Máximo de 1000 linhas.", + 'constraints' => "- Interface limpa.\n- Dashboard com gráficos.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Login, Dashboard, Sidebar, Tabelas, Forms, Perfil.', 'examples' => 'Sidebar de navegação, cards de métricas, tabela de dados, gráficos com Chart.js.', 'variables' => 'nome_sistema, modulo_principal, url_app', @@ -383,7 +383,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Painel de administração para gerenciar usuários, conteúdo e configurações.', 'persona' => 'Especialista em painéis administrativos e data visualization.', 'tone' => 'Profissional, limpo, informativo.', - 'constraints' => "- Design clean.\n- Gráficos interativos.\n- Tabelas responsivas.\n- Máximo de 900 linhas.", + 'constraints' => "- Design clean.\n- Gráficos interativos.\n- Tabelas responsivas.", 'output_format' => 'HTML completo com seções: Sidebar, Header, Cards de métricas, Gráficos, Tabela, Footer.', 'examples' => 'Cards de KPIs, gráfico de linha com Chart.js, tabela de usuários, filtros de data.', 'variables' => 'nome_sistema, metricas, periodo', @@ -403,7 +403,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Restaurante, lanchonete ou pizzaria que oferece delivery. Integração com WhatsApp ou iFood.', 'persona' => 'Especialista em delivery e experiência de pedido online.', 'tone' => 'Descontraído, saboroso, rápido.', - 'constraints' => "- Cardápio visual.\n- Botão de pedido.\n- Responsivo.\n- Máximo de 700 linhas.", + 'constraints' => "- Cardápio visual.\n- Botão de pedido.\n- Responsivo.", 'output_format' => 'HTML completo com seções: Hero, Cardápio, Destaques, Avaliações, Pedido, Footer.', 'examples' => 'Hero com imagem de comida, cards de categorias, botão de pedido WhatsApp, avaliações.', 'variables' => 'nome_restaurante, categoria, telefone, url_cardapio', @@ -423,7 +423,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto fullstack PHP com Laravel 13, seguindo PSR-12, strict types, policies e validações robustas. Banco MySQL/MariaDB.', 'persona' => 'Você é um arquiteto de software especializado em Laravel, com profundo conhecimento de PHP 8.3, Eloquent ORM, Filament, Livewire e boas práticas.', 'tone' => 'Técnico, estruturado, didático.', - 'constraints' => "- PHP 8.3 com strict_types.\n- PSR-12 compliance.\n- Migrations, seeders e factories.\n- Validações com Form Requests.\n- Policies e Gates para autorização.\n- Máximo de 2500 linhas de código.", + 'constraints' => "- PHP 8.3 com strict_types.\n- PSR-12 compliance.\n- Migrations, seeders e factories.\n- Validações com Form Requests.\n- Policies e Gates para autorização.", 'output_format' => 'Código completo: migration, model, controller, request, view Blade, routes, seeder e factory.', 'examples' => 'CRUD completo de Produtos com relacionamentos e upload de imagem.', 'variables' => 'nome_modulo, entidade, nome_tabela', @@ -443,7 +443,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto de API REST estruturada com Slim 4, usando containers DI, middlewares, validação e documentação OpenAPI.', 'persona' => 'Você é um backend specialist especializado em PHP, APIs REST e arquitetura hexagonal.', 'tone' => 'Técnico, limpo, escalável.', - 'constraints' => "- PHP 8.3 com strict_types.\n- Slim 4 com rotas agrupadas.\n- Middlewares de autenticação, CORS e rate limiting.\n- Eloquent ORM para banco de dados.\n- Documentação Swagger/OpenAPI.\n- Máximo de 2000 linhas.", + 'constraints' => "- PHP 8.3 com strict_types.\n- Slim 4 com rotas agrupadas.\n- Middlewares de autenticação, CORS e rate limiting.\n- Eloquent ORM para banco de dados.\n- Documentação Swagger/OpenAPI.", 'output_format' => 'Código completo: index.php, rotas, controllers, middlewares, modelos Eloquent, migrations.', 'examples' => 'CRUD de usuários com autenticação JWT e rate limiting.', 'variables' => 'nome_recurso, nome_modelo, campos_customizados', @@ -463,7 +463,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto Laravel 13 focado em API com autenticação via token, versionamento de rotas, rate limiting e documentação com Scribe.', 'persona' => 'Especialista em Laravel APIs com foco em performance, segurança e boas práticas.', 'tone' => 'Técnico, robusto, seguro.', - 'constraints' => "- Laravel 13 + Sanctum.\n- API Resources para transformação de dados.\n- Form Requests para validação.\n- Testes Feature e Unit.\n- Máximo de 2500 linhas.", + 'constraints' => "- Laravel 13 + Sanctum.\n- API Resources para transformação de dados.\n- Form Requests para validação.\n- Testes Feature e Unit.", 'output_format' => 'Migration, Model, Controller, API Resource, Request, Routes, Testes.', 'examples' => 'CRUD de Produtos com imagens, paginação e filtros.', 'variables' => 'nome_modulo, entidade, campos_filtros', @@ -483,7 +483,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto Slim 4 com estrutura MVC, templates Twig, Flash messages e CSRF protection.', 'persona' => 'Especialista em micro-frameworks PHP e arquitetura limpa.', 'tone' => 'Didático, organizado, prático.', - 'constraints' => "- PHP 8.3.\n- Slim 4 com DI container.\n- Twig para views.\n- Middlewares de sessão e CSRF.\n- Máximo de 2000 linhas.", + 'constraints' => "- PHP 8.3.\n- Slim 4 com DI container.\n- Twig para views.\n- Middlewares de sessão e CSRF.", 'output_format' => 'Arquivos: index.php, rotas, controllers, views Twig, middlewares, migrations.', 'examples' => 'Blog simples com autenticação e CRUD de posts.', 'variables' => 'nome_projeto, tema, modulo_principal', @@ -503,7 +503,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto frontend moderno com Vue 3 Composition API, TypeScript opcional, estado global com Pinia e requisições HTTP.', 'persona' => 'Especialista em Vue.js e arquitetura frontend moderna.', 'tone' => 'Moderno, componentizado, reutilizável.', - 'constraints' => "- Vue 3 com Composition API.\n- Vite como bundler.\n- Pinia para estado global.\n- Vue Router para navegação.\n- Axios para HTTP.\n- Máximo de 2500 linhas.", + 'constraints' => "- Vue 3 com Composition API.\n- Vite como bundler.\n- Pinia para estado global.\n- Vue Router para navegação.\n- Axios para HTTP.", 'output_format' => 'Estrutura completa: src/components, src/views, src/stores, src/router, src/services.', 'examples' => 'Dashboard com sidebar, gráficos, tabela de dados e formulários.', 'variables' => 'nome_app, tema_cores, modulo_principal', @@ -523,7 +523,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto React moderno com hooks, componentização, estado global e integração com APIs.', 'persona' => 'Especialista em React e ecossistema JavaScript moderno.', 'tone' => 'Moderno, performático, escalável.', - 'constraints' => "- React 18+ com hooks.\n- Vite.\n- Redux Toolkit para estado.\n- React Router v6.\n- Axios para HTTP.\n- Máximo de 2500 linhas.", + 'constraints' => "- React 18+ com hooks.\n- Vite.\n- Redux Toolkit para estado.\n- React Router v6.\n- Axios para HTTP.", 'output_format' => 'Estrutura completa: src/components, src/pages, src/store, src/router, src/services.', 'examples' => 'Dashboard com gráficos, tabela paginada e formulários.', 'variables' => 'nome_app, tema_cores, modulo_principal', @@ -543,7 +543,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto fullstack React com Next.js 14, usando App Router, Server Actions, middleware de autenticação e Prisma com PostgreSQL.', 'persona' => 'Especialista em Next.js, React Server Components e fullstack TypeScript.', 'tone' => 'Moderno, performático, type-safe.', - 'constraints' => "- Next.js 14+.\n- App Router com Server Components.\n- Tailwind CSS.\n- Prisma ORM.\n- Autenticação com NextAuth.js.\n- Máximo de 3000 linhas.", + 'constraints' => "- Next.js 14+.\n- App Router com Server Components.\n- Tailwind CSS.\n- Prisma ORM.\n- Autenticação com NextAuth.js.", 'output_format' => 'Estrutura completa: app/, components/, lib/, prisma/, middleware.ts.', 'examples' => 'Blog com CMS, autenticação e painel admin.', 'variables' => 'nome_projeto, database_url, modulo_principal', @@ -563,7 +563,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto backend Node.js com estrutura em camadas (controllers, services, repositories), validação com Zod e testes.', 'persona' => 'Especialista em Node.js, TypeScript e arquitetura backend escalável.', 'tone' => 'Técnico, estruturado, type-safe.', - 'constraints' => "- Node.js + TypeScript.\n- Express com middlewares.\n- Prisma ORM.\n- Zod para validação.\n- JWT para autenticação.\n- Máximo de 2500 linhas.", + 'constraints' => "- Node.js + TypeScript.\n- Express com middlewares.\n- Prisma ORM.\n- Zod para validação.\n- JWT para autenticação.", 'output_format' => 'Estrutura completa: src/controllers, src/services, src/repositories, src/middlewares, prisma/schema.', 'examples' => 'CRUD de usuários com validação, hash de senha e refresh token.', 'variables' => 'nome_modulo, entidade, campos_customizados', @@ -583,7 +583,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto Python com FastAPI, banco PostgreSQL, validação automática, documentação interativa e testes.', 'persona' => 'Especialista em Python, FastAPI e arquitetura de microsserviços.', 'tone' => 'Técnico, limpo, performático.', - 'constraints' => "- Python 3.11+.\n- FastAPI com Pydantic v2.\n- SQLAlchemy 2.0 ORM.\n- Autenticação OAuth2 com JWT.\n- Testes com pytest.\n- Máximo de 2500 linhas.", + 'constraints' => "- Python 3.11+.\n- FastAPI com Pydantic v2.\n- SQLAlchemy 2.0 ORM.\n- Autenticação OAuth2 com JWT.\n- Testes com pytest.", 'output_format' => 'Estrutura completa: main.py, routers, models, schemas, dependencies, tests.', 'examples' => 'CRUD de produtos com upload de imagens e cache com Redis.', 'variables' => 'nome_modulo, entidade, campos_customizados', @@ -603,7 +603,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto fullstack separado: backend Laravel 13 com API REST e frontend Vue 3 consumindo a API. Comunicação via axios e Sanctum.', 'persona' => 'Arquiteto fullstack especializado em Laravel e Vue.js.', 'tone' => 'Integrado, moderno, seguro.', - 'constraints' => "- Laravel 13 + Sanctum.\n- Vue 3 com Composition API.\n- Axios para requisições.\n- CORS configurado.\n- Validações em ambos os lados.\n- Máximo de 3000 linhas.", + 'constraints' => "- Laravel 13 + Sanctum.\n- Vue 3 com Composition API.\n- Axios para requisições.\n- CORS configurado.\n- Validações em ambos os lados.", 'output_format' => 'Código completo backend (routes, controllers, models) + frontend (components, stores, router).', 'examples' => 'Sistema de gestão de tarefas com autenticação e drag-and-drop.', 'variables' => 'nome_projeto, modulo_principal, entidades', @@ -623,7 +623,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Projeto Laravel 13 com stack moderna: frontend com Tailwind CSS 4, Blade e Vue.js 3; backend com Laravel Reverb para tempo real, Sanctum para API auth, Spatie Permission para RBAC.', 'persona' => 'Você é um arquiteto fullstack sênior especializado em Laravel 13, PHP 8.3, Tailwind CSS 4, Vue.js 3 e integrações de IA multi-provider.', 'tone' => 'Técnico, estruturado, moderno e objetivo. Segue rigorosamente PSR-12 e strict_types.', - 'constraints' => "- PHP 8.3 com strict_types e declare(strict_types=1).\n- PSR-12 compliance com Laravel Pint.\n- Eloquent ORM com relacionamentos e mutators.\n- Policies e Gates para toda autorização.\n- Form Requests para validação.\n- Integração multi-provider de IA via service container.\n- Laravel Reverb para eventos em tempo real.\n- Sanctum para autenticação API.\n- Spatie Permission para RBAC.\n- Mews Captcha (math) para formulários públicos.\n- ApexCharts no frontend via Vue.js 3.\n- Máximo de 4000 linhas de código.", + 'constraints' => "- PHP 8.3 com strict_types e declare(strict_types=1).\n- PSR-12 compliance com Laravel Pint.\n- Eloquent ORM com relacionamentos e mutators.\n- Policies e Gates para toda autorização.\n- Form Requests para validação.\n- Integração multi-provider de IA via service container.\n- Laravel Reverb para eventos em tempo real.\n- Sanctum para autenticação API.\n- Spatie Permission para RBAC.\n- Mews Captcha (math) para formulários públicos.\n- ApexCharts no frontend via Vue.js 3.", 'output_format' => 'Código completo: migration, model, controller, request, policy, service, view Blade, Vue.js 3 component, routes, seeder, factory e testes Feature/Unit.', 'examples' => 'Dashboard com ApexCharts mostrando métricas de gerações de prompt por provedor de IA, formulário de criação com Mews Captcha.', 'variables' => 'nome_modulo, entidade, nome_tabela, provedores_ia, permissoes', @@ -643,7 +643,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'API RESTful com sistema de autenticação robusto, múltiplos roles (admin, user, manager), proteção de rotas e refresh token automático.', 'persona' => 'Especialista em segurança de APIs e autenticação stateless.', 'tone' => 'Seguro, robusto, documentado.', - 'constraints' => "- JWT com access e refresh tokens.\n- Roles e permissões.\n- Middleware de autenticação.\n- Rate limiting.\n- Máximo de 2000 linhas.", + 'constraints' => "- JWT com access e refresh tokens.\n- Roles e permissões.\n- Middleware de autenticação.\n- Rate limiting.", 'output_format' => 'Estrutura completa: auth controller, middleware, JWT service, rotas protegidas.', 'examples' => 'Login, registro, refresh token, esqueci senha, verificação de email.', 'variables' => 'nome_api, roles, provedor_ia', @@ -663,7 +663,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Sistema distribuído com múltiplos serviços (usuários, pagamentos, notificações), API Gateway, message broker e observabilidade.', 'persona' => 'Arquiteto de software especializado em microsserviços, DDD e cloud native.', 'tone' => 'Arquitetural, escalável, resiliente.', - 'constraints' => "- Docker + Docker Compose.\n- Comunicação via HTTP/gRPC.\n- Message broker (RabbitMQ/Kafka).\n- Monitoramento (Prometheus/Grafana).\n- Máximo de 3500 linhas.", + 'constraints' => "- Docker + Docker Compose.\n- Comunicação via HTTP/gRPC.\n- Message broker (RabbitMQ/Kafka).\n- Monitoramento (Prometheus/Grafana).", 'output_format' => 'Dockerfiles, docker-compose, código dos serviços, gateway, migrations.', 'examples' => 'E-commerce com serviços: usuários, produtos, pedidos, pagamentos, notificações.', 'variables' => 'nome_sistema, servicos, broker_mensagens', @@ -683,7 +683,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Chatbot web ou WhatsApp com backend em PHP/Node.js, integração com modelos de linguagem, embeddings e vector database.', 'persona' => 'Especialista em IA generativa, LLMs e aplicações conversationais.', 'tone' => 'Inovador, inteligente, conversacional.', - 'constraints' => "- Integração com pelo menos 1 provedor de IA.\n- Histórico de conversas.\n- Tratamento de contexto.\n- Interface web moderna.\n- Máximo de 2500 linhas.", + 'constraints' => "- Integração com pelo menos 1 provedor de IA.\n- Histórico de conversas.\n- Tratamento de contexto.\n- Interface web moderna.", 'output_format' => 'Backend (API) + Frontend (chat interface) + integração IA.', 'examples' => 'Chat de atendimento ao cliente com respostas contextuais.', 'variables' => 'nome_bot, provedor_ia, modelo, contexto', @@ -703,7 +703,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Plataforma de automação estilo Zapier/Make, onde usuários criam fluxos automáticos entre aplicativos.', 'persona' => 'Especialista em automação, integrações e arquitetura event-driven.', 'tone' => 'Prático, modular, escalável.', - 'constraints' => "- Interface visual de fluxos.\n- Triggers e actions.\n- Integrações webhook.\n- Logs e monitoramento.\n- Máximo de 3000 linhas.", + 'constraints' => "- Interface visual de fluxos.\n- Triggers e actions.\n- Integrações webhook.\n- Logs e monitoramento.", 'output_format' => 'Backend API + Frontend editor de fluxos + webhooks.', 'examples' => 'Automação: quando chegar e-mail → extrair anexo → salvar no Drive → notificar Slack.', 'variables' => 'nome_plataforma, integracoes, acoes', @@ -723,7 +723,7 @@ class PromptTemplateSeeder extends Seeder 'context' => 'Serviço que consome múltiplas APIs (pagamentos, CRM, ERP) e centraliza dados em uma única interface.', 'persona' => 'Especialista em integrações, webhooks e APIs externas.', 'tone' => 'Técnico, robusto, manutenível.', - 'constraints' => "- Tratamento de erros e retries.\n- Logs estruturados.\n- Cache.\n- Monitoramento.\n- Máximo de 2500 linhas.", + 'constraints' => "- Tratamento de erros e retries.\n- Logs estruturados.\n- Cache.\n- Monitoramento.", 'output_format' => 'Serviço de integração + testes de integração + documentação.', 'examples' => 'Syncronização entre ERP e plataforma de e-commerce.', 'variables' => 'nome_servico, apis_origem, api_destino', diff --git a/resources/views/prompt-projects/create.blade.php b/resources/views/prompt-projects/create.blade.php index 8b60eaa..e499a09 100755 --- a/resources/views/prompt-projects/create.blade.php +++ b/resources/views/prompt-projects/create.blade.php @@ -344,7 +344,7 @@ document.getElementById('max_tokens').value = template.max_tokens ?? 1024; if (template.standard_files !== false) { - const stdFilesNote = "\n\n---\nNOTA: Os arquivos padrao (LICENSE, README.md, RULES.md, cookies.html, termos-de-uso.html, privacidade.html) serao gerados automaticamente pelo sistema apos a geracao do prompt. NAO os inclua na sua resposta."; + const stdFilesNote = "\n\n---\nNOTA: O projeto gerado deve conter MULTIPLOS ARQUIVOS em estrutura de pastas organizada. CRIE cada um dos seguintes arquivos padrao DO ZERO com conteudo completo e pronto para uso: LICENSE (MIT), README.md (documentacao completa), RULES.md (regras de codigo), cookies.html (banner LGPD completo com HTML/CSS/JS), termos-de-uso.html (Termos de Uso completos), privacidade.html (Politica de Privacidade LGPD completa). Nao apenas descreva o conteudo — gere o conteudo completo de cada arquivo."; const constraintsEl = document.getElementById('constraints'); if (constraintsEl && !constraintsEl.value.includes('Arquivos padrao')) { constraintsEl.value = constraintsEl.value.trim() + stdFilesNote;