PHPackages                             callcocam/plannerate - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. callcocam/plannerate

ActiveLibrary

callcocam/plannerate
====================

This is my package plannerate

0617VueCI failing

Since Jul 19Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/callcocam/plannerate.1.2)[ Packagist](https://packagist.org/packages/callcocam/plannerate)[ RSS](/packages/callcocam-plannerate/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (9)Used By (0)

Plannerate - Sistema de Gestão de Planogramas
=============================================

[](#plannerate---sistema-de-gestão-de-planogramas)

[![Latest Version on Packagist](https://camo.githubusercontent.com/743d33d0cb08f1ea564d12fec22d9ea73bab0b4d01d28918be48046f1455fd9e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f63616c6c636f63616d2f706c616e6e65726174652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/callcocam/plannerate)[![GitHub Tests Action Status](https://camo.githubusercontent.com/ce2972b0b28e4cb21ecae8ba32cc4c0b6266410282538796ebabbd02503736a2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f63616c6c636f63616d2f706c616e6e65726174652f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/callcocam/plannerate/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/eae0c6e7310ec7fbdc960461cfbb81510804903226d37cba8a92429aeb4b20d2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f63616c6c636f63616d2f706c616e6e65726174652f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/callcocam/plannerate/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/335e68f1bca85bd26d1fcb4d4dbe7507d06f71d38a7b7c8c2ed61216427d319e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f63616c6c636f63616d2f706c616e6e65726174652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/callcocam/plannerate)

O Plannerate é um sistema de gestão de planogramas para varejo, permitindo criar e gerenciar layouts detalhados de gôndolas, prateleiras e produtos em lojas. Este pacote integra um backend Laravel com um frontend Vue 3, oferecendo uma solução completa e reusável.

Características
---------------

[](#características)

- Sistema completo de gestão de planogramas
- Interface Vue 3 com componentes reutilizáveis
- Sistema multitenancy integrado
- Gerenciamento de lojas, departamentos, gôndolas, seções e produtos
- Visualização interativa de layouts

Instalação
----------

[](#instalação)

### 1. Instalação via Composer

[](#1-instalação-via-composer)

Instale o pacote via Composer:

```
composer require callcocam/plannerate
```

### 2. Publicação e Execução das Migrações

[](#2-publicação-e-execução-das-migrações)

Publique e execute as migrações para criar as tabelas necessárias:

```
php artisan vendor:publish --tag="plannerate-migrations"
php artisan migrate
```

### 3. Publicação dos Assets e Configurações

[](#3-publicação-dos-assets-e-configurações)

```
# Publicar configurações
php artisan vendor:publish --tag="plannerate-config"

# Publicar assets (CSS, JS)
php artisan vendor:publish --tag="plannerate-assets"

# Publicar views (opcional)
php artisan vendor:publish --tag="plannerate-views"
```

### 4. Instalação dos Componentes Frontend

[](#4-instalação-dos-componentes-frontend)

Para projetos que já usam Vue 3, você pode instalá-lo automaticamente usando:

```
php artisan plannerate:install-frontend
```

Ou manualmente:

1. Instale as dependências necessárias:

```
npm install vue@^3.3.0 vue-router@^4.2.0 pinia@^2.1.0
```

2. Compile os assets:

```
npm run build
```

Integração com Vue
------------------

[](#integração-com-vue)

### Opção 1: Usando o Plugin Vue em uma aplicação existente

[](#opção-1-usando-o-plugin-vue-em-uma-aplicação-existente)

```
// Em seu arquivo main.js ou app.js
import { createApp } from 'vue';
import Plannerate from 'plannerate-vue';
import 'plannerate-vue/style.css';

const app = createApp(App);

app.use(Plannerate, {
    baseUrl: '/api',
    tenant: 'default'
});

app.mount('#app');
```

### Opção 2: Uso com Inertia.js

[](#opção-2-uso-com-inertiajs)

Para projetos Inertia.js:

```
// Em seu arquivo app.js
import { createApp, h } from 'vue';
import { createInertiaApp } from '@inertiajs/vue3';
import Plannerate from 'plannerate-vue';
import 'plannerate-vue/style.css';

createInertiaApp({
  resolve: name => {
    const pages = import.meta.glob('./Pages/**/*.vue', { eager: true });
    return pages[`./Pages/${name}.vue`];
  },
  setup({ el, App, props, plugin }) {
    const app = createApp({ render: () => h(App, props) });

    app.use(plugin);
    app.use(Plannerate, {
      baseUrl: '/api',
      tenant: 'default'
    });

    app.mount(el);
  },
});
```

### Opção 3: Usando Componentes Individuais

[](#opção-3-usando-componentes-individuais)

Você também pode importar componentes específicos:

```

import { PlannerateApp, ConfirmModal } from 'plannerate-vue';

```

Uso no Backend Laravel
----------------------

[](#uso-no-backend-laravel)

### Controladores

[](#controladores)

O pacote inclui controladores prontos para uso. Para integrar com seu aplicativo:

```
// routes/web.php
Route::middleware(['auth'])->group(function () {
    Route::get('/planograms', [App\Http\Controllers\PlanogramController::class, 'index'])->name('planograms.index');
    // Outras rotas conforme necessário
});
```

### Acesso Direto à API

[](#acesso-direto-à-api)

```
use Callcocam\Plannerate\Facades\Plannerate;

// Obter um planograma
$planogram = Plannerate::getPlanogram($id);

// Criar uma nova gôndola
$gondola = Plannerate::createGondola([
    'planogram_id' => $planogramId,
    'name' => 'Nova Gôndola',
    'num_modulos' => 3
]);
```

Customização
------------

[](#customização)

### Temas e Estilos

[](#temas-e-estilos)

O pacote usa variáveis CSS que podem ser sobrescritas:

```
:root {
  --primary-color: #your-primary-color;
  --secondary-color: #your-secondary-color;
}
```

### Configurações

[](#configurações)

Você pode personalizar o comportamento do pacote editando o arquivo `config/plannerate.php`:

```
return [
    'tenant_middleware' => 'tenant', // Middleware para multitenancy (opcional)
    'use_soft_deletes' => true,     // Usar exclusão suave
    'default_scale' => 1,           // Escala padrão para o renderizador
    // Outras configurações
];
```

Progresso do Desenvolvimento
----------------------------

[](#progresso-do-desenvolvimento)

### Melhorias de Interface ✅

[](#melhorias-de-interface-)

- ✅ **Suporte a Números Decimais**: Campos de cremalheira e furos agora aceitam valores decimais

    - Campos `cremalheira_width`, `hole_height`, `hole_width` e `hole_spacing` migrados de `integer` para `decimal(8,2)`
    - Migração atualizada para suportar números decimais (ex: 4.2, 3.5, 2.1)
    - Modelo Section atualizado com casts `decimal:2` para os campos específicos
    - Validações nos Requests alteradas de `integer` para `numeric`
    - SectionResource retorna valores como `float` ao invés de `int`
    - Tipos TypeScript atualizados com exemplos de valores decimais
    - Composables e formulários frontend atualizados com `step="any"` para aceitar decimais
    - Compatibilidade mantida com o frontend existente
- ✅ **Padronização de Modais**: TargetStockResultModal.vue e AnalysisResultModal.vue atualizados para usar o mesmo padrão de estilo do BCGResultModal.vue

    - Migração para componentes Dialog do shadcn/ui
    - Melhor estrutura de layout com DialogContent, DialogHeader e DialogFooter
    - Responsividade aprimorada com flex layout
    - Consistência visual entre modais de análise
    - TargetStockResultModal: Resumo melhorado com métricas de estoque atual e alvo
    - AnalysisResultModal: Resumo otimizado com cards separados para itens ativos/inativos e porcentagens
    - Todas as funcionalidades mantidas (filtros, ordenação, exportação, recálculo)
- ✅ **Correção de Validação de Gôndola**: Campo "Localização" corrigido para ser opcional

    - Alinhamento entre validação frontend (Zod) e backend (Laravel)
    - Campo location removido da validação obrigatória no useGondolaCreateForm.ts
    - Campo location removido da validação obrigatória no useGondolaEditForm.ts
    - Interface atualizada para indicar que o campo é opcional
    - Consistência com as regras de validação do backend (nullable)
- ✅ **Correção de Erros de Null/Undefined**: Componentes Segment.vue e Layer.vue corrigidos para evitar erros de renderização

    - Adicionadas verificações de segurança para `props.segment.layer.product` e `props.layer.product`
    - Computed properties `outerSegmentStyle`, `innerSegmentStyle`, `depthCount` e `layerStyle` protegidas contra valores null/undefined
    - Templates atualizados com `v-if` para evitar renderização quando dados não estão disponíveis
    - Logs de warning adicionados para facilitar debugging quando dados estão faltando
    - Valores padrão (0px, 0) aplicados quando propriedades não estão disponíveis
    - Estabilidade da aplicação melhorada, eliminando crashes por tentativa de acesso a propriedades de objetos null
- ✅ **Correção de Edição de Seções**: Sistema de edição de seções agora salva corretamente os tamanhos dos furos da cremalheira

    - Implementado recálculo automático dos furos quando campos relacionados à cremalheira são alterados no backend
    - Frontend atualizado para chamar a API diretamente em vez de apenas atualizar o estado local
    - Adicionadas rotas nested para seções (`gondolas/{gondolaId}/sections/{id}`) para melhor organização da API
    - Furos da cremalheira são automaticamente recalculados quando `hole_height`, `hole_width`, `hole_spacing`, `height` ou `base_height` são modificados
    - Alinhamento visual dos furos aprimorado para perfeita centralização na cremalheira
    - Sincronização entre estado local e backend garantida após edições

### Próximas Melhorias ⏳

[](#próximas-melhorias-)

- ⏳ Implementação de novos recursos de análise
- ⏳ Otimização de performance
- ⏳ Melhorias de acessibilidade

### Melhorias de Debug e Monitoramento ✅

[](#melhorias-de-debug-e-monitoramento-)

- ✅ **Sistema de Logs Detalhados para Recálculo de Furos**: Implementado sistema completo de logs para monitorar todo o fluxo de recálculo dos furos da cremalheira
    - **Frontend (Section.vue)**: Logs para capturar mudanças no formulário e envio de dados
    - **Serviço (sectionService.ts)**: Logs para monitorar chamadas da API
    - **Controller (SectionController.php)**: Logs detalhados para processamento e verificação de campos
    - **Serviço de Posicionamento (ShelfPositioningService.php)**: Logs para cálculos matemáticos dos furos
    - **Modelo (Section.php)**: Logs para operações de banco de dados
    - Rastreamento completo desde modificação no frontend até salvamento no banco
    - Logs com timestamps e identificadores únicos para facilitar debugging
    - Monitoramento de todos os passos: mudança → envio → processamento → cálculo → salvamento → resposta

Documentação
------------

[](#documentação)

Para documentação completa, visite [a documentação oficial](https://github.com/callcocam/plannerate/docs).

Desenvolvimentos Recentes
-------------------------

[](#desenvolvimentos-recentes)

### ✅ Seleção Múltipla de Produtos (Concluído)

[](#-seleção-múltipla-de-produtos-concluído)

- Implementada seleção múltipla com CTRL+click nos produtos
- Indicadores visuais para produtos selecionados (borda azul)
- Contador de produtos selecionados no cabeçalho
- Drag and drop de múltiplos produtos simultaneamente
- Botão "Limpar" e suporte à tecla ESC
- Validação inteligente de largura para múltiplos produtos
- Toast de feedback ao adicionar múltiplos produtos
- Compatibilidade total com seleção única existente

Contribuição
------------

[](#contribuição)

Contribuições são bem-vindas! Por favor, veja [CONTRIBUTING](CONTRIBUTING.md) para detalhes.

Créditos
--------

[](#créditos)

- [Claudio Campos](https://github.com/callcocam)
- [Todos os Contribuidores](../../contributors)

Licença
-------

[](#licença)

Este projeto é licenciado sob a licença MIT. Veja o arquivo [LICENSE.md](LICENSE.md) para mais detalhes.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance53

Moderate activity, may be stable

Popularity13

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity21

Early-stage or recently created project

 Bus Factor1

Top contributor holds 88.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/d8c19b5df92b5462627f423cb2128ed0f312817ac150d19c3572d67904f0751b?d=identicon)[callcocam](/maintainers/callcocam)

---

Top Contributors

[![webcall](https://avatars.githubusercontent.com/u/7212238?v=4)](https://github.com/webcall "webcall (297 commits)")[![alessandrocampos224](https://avatars.githubusercontent.com/u/68436185?v=4)](https://github.com/alessandrocampos224 "alessandrocampos224 (37 commits)")[![callcocam](https://avatars.githubusercontent.com/u/7425411?v=4)](https://github.com/callcocam "callcocam (3 commits)")

### Embed Badge

![Health badge](/badges/callcocam-plannerate/health.svg)

```
[![Health](https://phpackages.com/badges/callcocam-plannerate/health.svg)](https://phpackages.com/packages/callcocam-plannerate)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
