{
  "module": "prafrot",
  "version": "2.0.0",
  "basePath": "/prafrot",
  "routes": {
    "vehicles": {
      "list": {
        "path": "/cadastro_frota/apresentar",
        "method": "GET",
        "description": "Lista todos os veículos da frota"
      },
      "create": {
        "path": "/cadastro_frota/cadastrar",
        "method": "POST",
        "description": "Cadastra um novo veículo"
      },
      "update": {
        "path": "/cadastro_frota/edit/{id}",
        "method": "POST",
        "description": "Atualiza dados de um veículo"
      },
      "delete": {
        "path": "/cadastro_frota/delete/{id}",
        "method": "DELETE",
        "description": "Remove um veículo da base"
      },
      "fields": [
        { "name": "placa", "label": "Placa", "type": "text", "required": true, "group": "Básicos" },
        { "name": "chassi", "label": "Chassi", "type": "text", "group": "Básicos" },
        { "name": "renavam", "label": "Renavam", "type": "text", "group": "Básicos" },
        { "name": "modelo", "label": "Modelo", "type": "text", "group": "Básicos" },
        { "name": "fabricante", "label": "Fabricante", "type": "text", "group": "Básicos" },
        { "name": "cor", "label": "Cor", "type": "text", "group": "Básicos" },
        { "name": "ano_fab", "label": "Ano Fab.", "type": "text", "group": "Básicos" },
        { "name": "ano_mod", "label": "Ano Mod.", "type": "text", "group": "Básicos" },
        { "name": "categoria", "label": "Categoria", "type": "text", "group": "Básicos" },
        { "name": "combustivel", "label": "Combustível", "type": "text", "group": "Básicos" },
        { "name": "tipo_placa", "label": "Tipo Placa (Contexto)", "type": "text", "group": "Básicos" },
        
        { "name": "base", "label": "Base", "type": "text", "group": "Operacional" },
        { "name": "uf", "label": "UF", "type": "text", "maxLength": 2, "group": "Operacional" },
        { "name": "atuacao_operacao", "label": "Atuação / Operação", "type": "text", "group": "Operacional" },
        { "name": "tipo_frota", "label": "Tipo Frota", "type": "text", "group": "Operacional" },
        { "name": "gestor", "label": "Gestor", "type": "text", "group": "Operacional" },
        { "name": "coordenador", "label": "Coordenador", "type": "text", "group": "Operacional" },
        { "name": "dispatcher", "label": "Dispatcher", "type": "text", "group": "Operacional" },
        { "name": "fiscal_operacao", "label": "Fiscal de Operação", "type": "text", "group": "Operacional" },

        { "name": "valor_fipe", "label": "Valor FIPE", "type": "currency", "group": "Financeiro" },
        { "name": "valor_aluguel", "label": "Valor Aluguel", "type": "currency", "group": "Financeiro" },
        { "name": "cnpj_proprietario", "label": "CNPJ Proprietário", "type": "text", "group": "Financeiro" },
        { "name": "contrato", "label": "Contrato", "type": "text", "group": "Financeiro" },
        { "name": "proprietario", "label": "Proprietário", "type": "text", "group": "Financeiro" },
        { "name": "financiamento", "label": "Financiamento", "type": "text", "group": "Financeiro" },
        { "name": "data_aquisicao", "label": "Data Aquisição", "type": "date", "group": "Financeiro" },
        { "name": "valor_aquisicao", "label": "Valor Aquisição", "type": "currency", "group": "Financeiro" },
        { "name": "primeira_locacao", "label": "Primeira Locação", "type": "date", "group": "Financeiro" },
        { "name": "data_limite", "label": "Data Limite", "type": "date", "group": "Financeiro" },

        { "name": "geotab", "label": "GEOTAB", "type": "select", "options": ["SIM", "NÃO"], "group": "Técnico" },
        { "name": "sascar", "label": "SASCAR", "type": "select", "options": ["SIM", "NÃO"], "group": "Técnico" },
        { "name": "golfleet", "label": "GOLFLEET", "type": "select", "options": ["SIM", "NÃO"], "group": "Técnico" },
        { "name": "pooltrack", "label": "POOLTRACK", "type": "select", "options": ["SIM", "NÃO"], "group": "Técnico" },
        { "name": "t4s", "label": "T4S", "type": "select", "options": ["SIM", "NÃO"], "group": "Técnico" },
        { "name": "observacoes_gerais", "label": "Observações Gerais", "type": "textarea", "group": "Técnico" }
      ],
      "presentation": {
        "table": {
          "columns": [
            { "header": "ID", "field": "idveiculo_frota", "width": "80px" },
            { "header": "PLACA", "field": "placa", "width": "120px", "className": "font-mono font-black text-emerald-600 dark:text-emerald-500" },
            { "header": "MODELO", "field": "modelo", "width": "180px" },
            { "header": "FABRICANTE", "field": "fabricante", "width": "150px" },
            { "header": "CATEGORIA", "field": "categoria", "width": "120px" },
            { "header": "BASE", "field": "base", "width": "120px" },
            { "header": "SITUAÇÃO", "field": "status_frota", "width": "120px", "useStatusBadge": true }
          ]
        }
      }
    },
    "maintenance": {
      "list": {
        "path": "/manutencao_frota/apresentar",
        "method": "GET"
      },
      "create": {
        "path": "/manutencao_frota/cadastrar",
        "method": "POST"
      },
      "update": {
        "path": "/manutencao_frota/edit/{id}",
        "method": "POST"
      },
      "updateStatus": {
        "path": "/manutencao_frota/edit/status",
        "method": "POST",
        "description": "Atualiza apenas o status de uma manutenção"
      },
      "toggleStatus": {
        "path": "/manutencao_frota/edit/toggle_status",
        "method": "POST",
        "description": "Abre ou fecha manutenções (individual ou lote)"
      },
      "delete": {
        "path": "/manutencao_frota/delete/{id}",
        "method": "DELETE"
      },
      "fields": [
        { "name": "placa", "label": "Placa", "type": "autocomplete", "required": true, "group": "Básicos" },
        { "name": "placa_reserva", "label": "Placa Reserva", "type": "text", "group": "Básicos" },
        { "name": "modelo", "label": "Modelo", "type": "text", "readOnly": true, "group": "Básicos" },
        { "name": "oficina", "label": "Oficina", "type": "autocomplete", "required": true, "group": "Básicos" },
        { "name": "responsavel", "label": "Responsável", "type": "select", "group": "Básicos" },
        { "name": "status", "label": "Status Manutenção", "type": "select", "group": "Básicos" },
        { "name": "atendimento", "label": "Atendimento", "type": "text", "group": "Básicos" },
        { "name": "base_frota", "label": "Base Frota", "type": "text", "readOnly": true, "group": "Básicos" },
        { "name": "cidade", "label": "Cidade", "type": "text", "readOnly": true, "group": "Básicos" },
        { "name": "uf", "label": "UF", "type": "text", "maxLength": 2, "readOnly": true, "group": "Básicos" },
        { "name": "endereco_prestador", "label": "Endereço Prestador", "type": "text", "group": "Básicos" },

        { "name": "orcamento_inicial", "label": "Orçamento Inicial", "type": "currency", "group": "Orçamentos" },
        { "name": "orcamento_final", "label": "Orçamento Final", "type": "currency", "group": "Orçamentos" },
        { "name": "dif_orcamento", "label": "Dif. Orçamento", "type": "currency", "readOnly": true, "group": "Orçamentos" },
        { "name": "condicao_pagamento", "label": "Cond. Pagamento", "type": "select", "options": ["À vista", "Parcelado"], "group": "Orçamentos" },
        { "name": "qtd_parcelas_condicao_pag", "label": "Nº de parcelas", "type": "select", "dependsOn": "condicao_pagamento", "condition": "Parcelado", "group": "Orçamentos" },
        { "name": "validacao_financeiro", "label": "Validação Financeiro", "type": "select", "group": "Orçamentos" },
        { "name": "resp_aprovacao", "label": "Resp. Aprovação", "type": "select", "group": "Orçamentos" },
        { "name": "pdf_orcamento", "label": "PDF Orçamento", "type": "file", "accept": ".pdf", "group": "Orçamentos" },
        { "name": "nota_fiscal", "label": "Nota Fiscal", "type": "file", "accept": ".pdf,image/*", "group": "Orçamentos" },

        { "name": "data_solicitacao", "label": "Data Solicitação", "type": "date", "group": "Datas" },
        { "name": "data_agendamento", "label": "Data Agendamento", "type": "date", "group": "Datas" },
        { "name": "data_parada_veiculo", "label": "Data Parada", "type": "date", "group": "Datas" },
        { "name": "previsao_entrega", "label": "Previsão Entrega", "type": "date", "group": "Datas" },
        { "name": "data_finalizacao", "label": "Data Finalização", "type": "date", "group": "Datas" },
        { "name": "data_retirada", "label": "Data Retirada", "type": "date", "group": "Datas" },

        { "name": "motivo_atendimento", "label": "Motivo Atendimento", "type": "select", "group": "Geral" },
        { "name": "proprietario", "label": "Proprietário", "type": "text", "readOnly": true, "group": "Geral" },
        { "name": "manutencao", "label": "Descrição da Manutenção", "type": "textarea", "group": "Geral" },
        { "name": "obs", "label": "Observações", "type": "textarea", "group": "Geral" }
      ],
      "presentation": {
        "highlights": [
          { "id": "ext", "label": "Oficina - Externo", "status": "Em Oficina - Externo", "color": "bg-orange-500/10 text-orange-600", "icon": "Wrench" },
          { "id": "rent", "label": "Oficina - Rentals", "status": "Em Oficina - Rentals", "color": "bg-purple-500/10 text-purple-600", "icon": "Wrench" },
          { "id": "trois", "label": "Oficina - Trois", "status": "Em Oficina - Trois", "color": "bg-pink-500/10 text-pink-600", "icon": "Wrench" },
          { "id": "reboque", "label": "Pra Reboque", "status": "Pra Reboque", "color": "bg-rose-500/10 text-rose-600", "icon": "Wrench" }
        ],
        "summary_cards": {
          "title": "Top Manutenções",
          "dataSource": "topMaintenances",
          "maxItems": 4,
          "fields": [
            { "path": "posicao", "prefix": "#", "group": "header" },
            { "path": "modelo", "group": "header" },
            { "path": "total_manutencoes", "suffix": " manutenções", "className": "text-slate-400" },
            { "path": "placa", "className": "text-emerald-600 font-mono font-black" },
            { "path": "ultima_manutencao", "prefix": "Última: ", "className": "text-slate-500" },
            { "path": "concluidas", "label": "Concluídas: ", "group": "footer" },
            { "path": "em_andamento", "label": "Em andamento: ", "group": "footer" }
          ]
        },
        "table": {
          "columns": [
            { "header": "ID", "field": "idmanutencao_frota", "width": "80px" },
            { "header": "PLACA", "field": "placa", "width": "120px", "className": "font-mono font-black text-emerald-600" },
            { "header": "STATUS", "field": "status", "width": "150px", "useStatusBadge": true },
            { "header": "OFICINA", "field": "oficina", "width": "200px" },
            { "header": "ORÇAMENTO", "field": "orcamento_final", "width": "120px", "type": "currency" },
            { "header": "PREVISÃO", "field": "previsao_entrega", "width": "120px", "type": "date" }
          ]
        }
      }
    },
    "claims": {
      "list": { "path": "/sinistros_devolucoes/apresentar", "method": "GET" },
      "create": { "path": "/sinistros_devolucoes/cadastrar", "method": "POST" },
      "update": { "path": "/sinistros_devolucoes/edit/{id}", "method": "POST" },
      "delete": { "path": "/sinistros_devolucoes/delete/{id}", "method": "DELETE" },
      "fields": [
        { "name": "placa", "label": "Placa", "type": "autocomplete", "required": true, "group": "Básicos" },
        { "name": "chassi", "label": "Chassi", "type": "text", "group": "Básicos" },
        { "name": "renavan", "label": "Renavam", "type": "text", "group": "Básicos" },
        { "name": "modelo", "label": "Modelo", "type": "text", "group": "Básicos" },
        { "name": "fabricante", "label": "Fabricante", "type": "text", "group": "Básicos" },
        { "name": "cor", "label": "Cor", "type": "text", "group": "Básicos" },
        { "name": "ano_fabricacao", "label": "Ano Fab.", "type": "text", "group": "Básicos" },
        { "name": "ano_modelo", "label": "Ano Mod.", "type": "text", "group": "Básicos" },
        { "name": "combustivel", "label": "Combustível", "type": "text", "group": "Básicos" },
        { "name": "categoria", "label": "Categoria", "type": "text", "group": "Básicos" },
        { "name": "tipo_placa", "label": "Tipo Placa", "type": "text", "group": "Básicos" },

        { "name": "status", "label": "Status", "type": "select", "options": ["Sinistro", "Devolução", "Venda", "Manutenção"], "group": "Ocorrência" },
        { "name": "data_entrada", "label": "Data Entrada", "type": "date", "group": "Ocorrência" },
        { "name": "previsao", "label": "Previsão", "type": "date", "group": "Ocorrência" },
        { "name": "dias_parado", "label": "Dias Parado", "type": "text", "group": "Ocorrência" },
        { "name": "agendamento", "label": "Agendamento", "type": "text", "group": "Ocorrência" },
        { "name": "d", "label": "D (Col)", "type": "text", "group": "Ocorrência" },
        { "name": "u", "label": "U (Col)", "type": "text", "group": "Ocorrência" },
        { "name": "obs", "label": "Observações", "type": "textarea", "group": "Ocorrência" },

        { "name": "base", "label": "Base", "type": "text", "group": "Operacional" },
        { "name": "uf", "label": "UF", "type": "text", "group": "Operacional" },
        { "name": "proprietario", "label": "Proprietário", "type": "text", "group": "Operacional" },
        { "name": "motorista", "label": "Motorista", "type": "autocomplete", "group": "Operacional" },
        { "name": "id_rota", "label": "ID Rota", "type": "text", "group": "Operacional" },
        { "name": "gestor", "label": "Gestor", "type": "text", "group": "Operacional" },
        { "name": "coordenador", "label": "Coordenador", "type": "text", "group": "Operacional" },
        { "name": "dispatcher", "label": "Dispatcher", "type": "text", "group": "Operacional" },
        { "name": "fiscal_operacao", "label": "Fiscal Operação", "type": "text", "group": "Operacional" },
        { "name": "atuacao", "label": "Atuação", "type": "text", "group": "Operacional" },

        { "name": "valor_fipe", "label": "Valor FIPE", "type": "number", "group": "Financeiro" },
        { "name": "valor_aluguel", "label": "Valor Aluguel", "type": "number", "group": "Financeiro" },
        { "name": "contrato", "label": "Contrato", "type": "text", "group": "Financeiro" },
        { "name": "data_limite", "label": "Data Limite", "type": "date", "group": "Financeiro" },
        { "name": "tipo_frota", "label": "Tipo Frota", "type": "text", "group": "Financeiro" },
        { "name": "primeira_locacao", "label": "Primeira Locação", "type": "date", "group": "Financeiro" }
      ]
    },
    "workshops": {
      "list": { "path": "/oficinas_frota/apresentar", "method": "GET" },
      "create": { "path": "/oficinas_frota/cadastrar", "method": "POST" },
      "update": { "path": "/oficinas_frota/edit/{id}", "method": "POST" },
      "delete": { "path": "/oficinas_frota/delete/{id}", "method": "DELETE" },
      "fields": [
        { "name": "cod_estabelecimento", "label": "Cod. Estabelecimento", "type": "text" },
        { "name": "cnpj", "label": "CNPJ", "type": "text" },
        { "name": "razao_social", "label": "Razão Social", "type": "text", "required": true },
        { "name": "nome_reduzido", "label": "Nome Reduzido", "type": "text", "required": true },
        { "name": "tipo_estabelecimento", "label": "Tipo Estabelecimento", "type": "text" },
        { "name": "endereco", "label": "Endereço", "type": "text" },
        { "name": "bairro", "label": "Bairro", "type": "text" },
        { "name": "cidade", "label": "Cidade", "type": "text" },
        { "name": "uf", "label": "UF", "type": "text", "maxLength": 2 },
        { "name": "fone_comercial", "label": "Telefone Comercial", "type": "text" },
        { "name": "descricao_grupo", "label": "Descrição do Grupo", "type": "text" }
      ]
    },
    "moki": {
      "list": { "path": "/moki_frota/apresentar", "method": "GET" },
      "create": { "path": "/moki_frota/cadastrar", "method": "POST" },
      "update": { "path": "/moki_frota/edit/{id}", "method": "POST" },
      "delete": { "path": "/moki_frota/delete/{id}", "method": "DELETE" },
      "fields": [
        { "name": "idmoki_frota", "label": "ID do Moki", "type": "number", "required": true },
        { "name": "origem", "label": "Origem", "type": "text" },
        { "name": "unidade", "label": "Unidade", "type": "text" },
        { "name": "cod_unidade", "label": "Cod. Unidade", "type": "text" },
        { "name": "nome_unidade", "label": "Nome Unidade", "type": "text" },
        { "name": "status_unidade", "label": "Status Unidade", "type": "text" },
        { "name": "checklist", "label": "Checklist", "type": "text" },
        { "name": "status_checklist", "label": "Status Checklist", "type": "text" },
        { "name": "data", "label": "Data", "type": "date" },
        { "name": "autor", "label": "Autor", "type": "text" },
        { "name": "status", "label": "Status", "type": "select", "options": ["Pendente", "Conforme", "Não Conforme", "Aprovado"] },
        { "name": "aprovacao", "label": "Aprovação (Obs)", "type": "text" }
      ]
    },
    "status": {
      "list": { "path": "/status_frota/apresentar", "method": "GET" },
      "create": { "path": "/status_frota/cadastrar", "method": "POST" },
      "update": { "path": "/status_frota/edit/{id}", "method": "POST" },
      "updateBatch": {
        "path": "/status_frota/edit/em_lote",
        "method": "POST",
        "description": "Atualiza status em lote ou individual de forma simplificada"
      },
      "delete": { "path": "/status_frota/delete/{id}", "method": "DELETE" },
      "fields": [
        { "name": "placa", "label": "Placa", "type": "autocomplete", "required": true },
        { "name": "placa_reserva", "label": "Placa Reserva", "type": "text" },
        { "name": "status_frota", "label": "Novo Status", "type": "select", "required": true },
        { "name": "motorista", "label": "Motorista", "type": "autocomplete" },
        { "name": "base", "label": "Base", "type": "text" },
        { "name": "id_rota", "label": "ID Rota", "type": "text" },
        { "name": "tipo_placa", "label": "Tipo Placa", "type": "text" },
        { "name": "categoria", "label": "Categoria", "type": "text" },
        { "name": "modelo", "label": "Modelo", "type": "text" },
        { "name": "uf", "label": "UF", "type": "text" },
        { "name": "proprietario", "label": "Proprietário", "type": "text" },
        { "name": "atuacao", "label": "Atuação", "type": "text" },
        { "name": "vecfleet", "label": "Vecfleet", "type": "text" },
        { "name": "manutencao", "label": "Manutenção (Info)", "type": "text" },
        { "name": "obs", "label": "Observações / Motivo", "type": "textarea" }
      ]
    },
    "availability": {
      "list": { "path": "/disponibilidade_frota/apresentar", "method": "GET" },
      "create": { "path": "/disponibilidade_frota/cadastrar", "method": "POST" },
      "update": { "path": "/disponibilidade_frota/edit/{id}", "method": "POST" },
      "delete": { "path": "/disponibilidade_frota/delete/{id}", "method": "DELETE" },
      "fields": [
        { "name": "placa", "label": "Placa", "type": "text", "required": true },
        { "name": "disponibilidade", "label": "Data de Disponibilidade", "type": "date" },
        { "name": "status_disponibilidade", "label": "Status", "type": "select", "options": ["Disponível", "Indisponível", "Reserva"] }
      ]
    },
    "config": {
      "lists": { "path": "/dashs_frota/listas", "method": "GET" },
      "items": { "path": "/dashs_frota/listas/{route}", "method": "GET" },
      "create": { "path": "/dashs_frota/listas/{route}", "method": "POST" },
      "update": { "path": "/dashs_frota/listas/{route}/{id}", "method": "POST" },
      "delete": { "path": "/dashs_frota/listas/{route}/{id}", "method": "DELETE" }
    }
  }
}
