/**
 * Utility para gerenciar status de backend das telas do Workspace
 * 
 * Status possíveis:
 * - 'active': Backend completo e funcional
 * - 'demo': Endpoints disponíveis, mas integração parcial (dados de demonstração)
 * - 'construction': Backend não disponível ainda (em construção)
 */

/**
 * Status possíveis para uma tela
 * @typedef {'construction' | 'demo' | 'active'} BackendStatus
 */

/**
 * Mapeamento de telas e seus status de backend
 * Baseado nas rotas disponíveis no backend e na lógica antiga do financeiro
 * 
 * Rotas disponíveis no backend:
 * - Conciliação: /categorias/transacoes/pendentes, /categorias/cruzamentos, /categorias/cruzamentos/detalhes, /categorias/cruzamentos/detalhes/descricao
 * - Receitas: /boletos/status, /empresas_financeiro, /servicos/list
 * - Despesas: /contas_a_pagar/apresentar, /extrato/apresentar, /extrato/fluxo, /categorias/apresentar
 * 
 * @type {Record<string, BackendStatus>}
 */
const SCREEN_STATUS_MAP = {
  dashboard: 'construction', // Backend não disponível ainda - aguardando consolidação
  entradas: 'demo', // Endpoints disponíveis, mas integração parcial (boletos, clientes, serviços)
  saidas: 'demo', // Endpoints disponíveis, mas integração parcial (contas a pagar, extrato)
  'fluxo-de-caixa': 'demo', // Combina receitas/despesas do /extrato/apresentar; planejado zerado
  conciliacao: 'active', // ✅ Backend completo e funcional - rotas específicas disponíveis
  config: 'construction' // Backend não disponível ainda - módulo de permissões em desenvolvimento
};

/**
 * Retorna o status de backend de uma tela
 * @param {string} screen - Nome da tela (ex: 'entradas', 'saidas', 'conciliacao')
 * @returns {BackendStatus} Status da tela
 */
export const getBackendStatus = (screen) => {
  return SCREEN_STATUS_MAP[screen] || 'construction';
};

/**
 * Verifica se uma tela tem dados de backend disponíveis
 * @param {string} screen - Nome da tela
 * @returns {boolean} True se a tela tem backend ativo
 */
export const hasBackendData = (screen) => {
  return getBackendStatus(screen) === 'active';
};

/**
 * Verifica se uma tela está em modo de demonstração
 * @param {string} screen - Nome da tela
 * @returns {boolean} True se a tela está em modo demo
 */
export const isDemoMode = (screen) => {
  return getBackendStatus(screen) === 'demo';
};

/**
 * Verifica se uma tela está em construção
 * @param {string} screen - Nome da tela
 * @returns {boolean} True se a tela está em construção
 */
export const isUnderConstruction = (screen) => {
  return getBackendStatus(screen) === 'construction';
};
