/* Wood OS — Mock data */

const MOCK = {
  user: {
    name: "Eduardo Marques",
    role: "Gerente operacional",
    email: "eduardo@marcenarianorte.com.br",
    company: "Marcenaria Norte LTDA",
    plan: "Profissional"
  },

  metrics: {
    activeRequests: 38,
    activeProjects: 12,
    onTime: 92,
    revenue: 184500,
    teams: 4,
    vehicles: 6,
  },

  requests: [
    { id: "WO-2814", title: "Painel ripado sala de estar", client: "Apto Vieira Souto 1102", priority: "alta", status: "producao", progress: 62, deadline: "2026-05-22", createdAt: "2026-05-08", project: "Cobertura Vieira Souto", responsible: "Ricardo Tavares", items: 4, attachments: 3, urgent: true, notes: "Cliente confirmou MDF Freijó. Pé direito 3,1m." },
    { id: "WO-2813", title: "Bancada de cozinha em quartzo", client: "Resid. Anésio Cordeiro", priority: "alta", status: "analise", progress: 30, deadline: "2026-05-25", createdAt: "2026-05-07", project: "Casa Anésio", responsible: "Marcos Lima", items: 2, attachments: 5, urgent: true },
    { id: "WO-2812", title: "Estante modular biblioteca", client: "Escritório Falcão", priority: "media", status: "producao", progress: 78, deadline: "2026-05-30", createdAt: "2026-05-05", project: "Reforma Falcão", responsible: "Tiago Carvalho", items: 8, attachments: 2 },
    { id: "WO-2811", title: "Mesa de jantar 10 lugares", client: "Família Pessoa", priority: "media", status: "pronto", progress: 100, deadline: "2026-05-18", createdAt: "2026-05-03", project: "Apto Leblon", responsible: "Ricardo Tavares", items: 1, attachments: 4 },
    { id: "WO-2810", title: "Closet master MDF", client: "Apartamento 2204", priority: "baixa", status: "pendente", progress: 12, deadline: "2026-06-05", createdAt: "2026-05-02", project: "Edif. Marbella", responsible: "Marcos Lima", items: 6, attachments: 1 },
    { id: "WO-2809", title: "Estante TV ripado vertical", client: "Sala Sr. Brasil", priority: "media", status: "producao", progress: 45, deadline: "2026-05-28", createdAt: "2026-05-01", project: "Casa Brasil", responsible: "Tiago Carvalho", items: 1, attachments: 2 },
    { id: "WO-2808", title: "Reforma de cozinha completa", client: "Apto Ipanema 802", priority: "alta", status: "atrasado", progress: 70, deadline: "2026-05-12", createdAt: "2026-04-22", project: "Ipanema 802", responsible: "Ricardo Tavares", items: 14, attachments: 8, urgent: true, notes: "Atraso por chegada de tampo. Renegociado." },
    { id: "WO-2807", title: "Painel acústico ripado escritório", client: "Falcão & Associados", priority: "media", status: "finalizado", progress: 100, deadline: "2026-04-30", createdAt: "2026-04-15", project: "Reforma Falcão", responsible: "Marcos Lima", items: 3, attachments: 2 },
    { id: "WO-2806", title: "Cabeceira estofada king", client: "Suíte Pessoa", priority: "baixa", status: "entregue", progress: 100, deadline: "2026-04-25", createdAt: "2026-04-10", project: "Apto Leblon", responsible: "Tiago Carvalho", items: 1, attachments: 3 },
    { id: "WO-2805", title: "Mesa lateral em nogueira", client: "Estúdio Bartira", priority: "baixa", status: "cancelado", progress: 0, deadline: "2026-04-22", createdAt: "2026-04-05", project: "Loft Bartira", responsible: "Marcos Lima", items: 1, attachments: 0 },
  ],

  projects: [
    { id: "PRJ-031", name: "Cobertura Vieira Souto", client: "Família Vieira", address: "Ipanema, Rio de Janeiro", status: "producao", progress: 62, deadline: "2026-06-18", team: "Time Marcenaria A", requestsCount: 8, urgent: 2, budget: 248000 },
    { id: "PRJ-030", name: "Apto Leblon 1101", client: "Renato Pessoa", address: "Leblon, Rio de Janeiro", status: "pronto", progress: 96, deadline: "2026-05-20", team: "Time Marcenaria B", requestsCount: 6, urgent: 0, budget: 156000 },
    { id: "PRJ-029", name: "Reforma Falcão & Associados", client: "Falcão & Associados", address: "Centro, Niterói", status: "producao", progress: 71, deadline: "2026-07-02", team: "Time Marcenaria A", requestsCount: 11, urgent: 1, budget: 312000 },
    { id: "PRJ-028", name: "Casa Anésio Cordeiro", client: "Anésio Cordeiro", address: "Itaipava, Petrópolis", status: "analise", progress: 22, deadline: "2026-08-15", team: "Time Marcenaria C", requestsCount: 4, urgent: 2, budget: 198000 },
    { id: "PRJ-027", name: "Edif. Marbella", client: "Construtora Olympus", address: "Barra, Rio de Janeiro", status: "pendente", progress: 8, deadline: "2026-09-10", team: "Time Logística A", requestsCount: 2, urgent: 0, budget: 540000 },
    { id: "PRJ-026", name: "Loft Bartira", client: "Estúdio Bartira", address: "Botafogo, Rio de Janeiro", status: "entregue", progress: 100, deadline: "2026-04-30", team: "Time Marcenaria B", requestsCount: 5, urgent: 0, budget: 92000 },
  ],

  teams: [
    { id: "TM-A", name: "Time Marcenaria A", leader: "Ricardo Tavares", load: 87, members: 6, role: "Marcenaria fina", activeProjects: 3, status: "ativo",
      avatars: ["Ricardo Tavares", "Antônio Lopes", "João Vinícius", "Marcelo Reis", "Cleyton Brito", "Hélio Sales"] },
    { id: "TM-B", name: "Time Marcenaria B", leader: "Tiago Carvalho", load: 72, members: 5, role: "Mobiliário sob medida", activeProjects: 2, status: "ativo",
      avatars: ["Tiago Carvalho", "Diego Antunes", "Bruno Marcos", "Hugo Lima", "Jorge Henrique"] },
    { id: "TM-C", name: "Time Marcenaria C", leader: "Marcos Lima", load: 54, members: 4, role: "Montagem em obra", activeProjects: 2, status: "ativo",
      avatars: ["Marcos Lima", "Pedro Henrique", "Lucas Tavares", "André Sodré"] },
    { id: "TM-L", name: "Time Logística A", leader: "Vanderlei Souza", load: 38, members: 3, role: "Logística e entregas", activeProjects: 4, status: "ativo",
      avatars: ["Vanderlei Souza", "Igor Cravo", "Reinaldo Bahia"] },
  ],

  inventory: [
    { id: "ORD-1208", item: "Chapas MDF Freijó 18mm", supplier: "MadeireirA Boavista", qty: 24, unit: "un", value: 4320, status: "pendente", priority: "alta", category: "MDF", date: "2026-05-12", project: "Cobertura Vieira Souto" },
    { id: "ORD-1207", item: "Dobradiças amortecidas Blum", supplier: "Ferragens Mestre", qty: 80, unit: "un", value: 1680, status: "producao", priority: "media", category: "Ferragem", date: "2026-05-11", project: "Reforma Falcão" },
    { id: "ORD-1206", item: "Verniz acetinado 18L", supplier: "Sherwin Williams", qty: 4, unit: "balde", value: 2840, status: "entregue", priority: "baixa", category: "Acabamento", date: "2026-05-09", project: "Apto Leblon" },
    { id: "ORD-1205", item: "Tampo quartzo branco siena", supplier: "Marmoraria Carioca", qty: 1, unit: "peça", value: 7200, status: "atrasado", priority: "alta", category: "Tampos", date: "2026-05-04", project: "Casa Anésio" },
    { id: "ORD-1204", item: "Puxadores escovados 192mm", supplier: "Ferragens Mestre", qty: 36, unit: "un", value: 540, status: "pronto", priority: "media", category: "Ferragem", date: "2026-05-08", project: "Cobertura Vieira Souto" },
    { id: "ORD-1203", item: "Ripado carvalho 25x50mm", supplier: "Madeireira Floresta", qty: 240, unit: "m", value: 6960, status: "producao", priority: "alta", category: "Madeira", date: "2026-05-10", project: "Casa Brasil" },
    { id: "ORD-1202", item: "Adesivo Cascola líquido", supplier: "Casa do Marceneiro", qty: 12, unit: "L", value: 480, status: "entregue", priority: "baixa", category: "Acabamento", date: "2026-05-06", project: "Apto Leblon" },
  ],

  vehicles: [
    { id: "VEI-101", model: "Mercedes Sprinter 415", plate: "RIO-2A18", driver: "Vanderlei Souza", status: "ativo", load: 78, km: 142800, lastService: "2026-04-10", nextService: "2026-06-05", project: "Cobertura Vieira Souto" },
    { id: "VEI-102", model: "Iveco Daily 70C17", plate: "RIO-3B92", driver: "Igor Cravo", status: "ativo", load: 45, km: 98400, lastService: "2026-03-22", nextService: "2026-06-22", project: "Reforma Falcão" },
    { id: "VEI-103", model: "VW Delivery 9.170", plate: "RIO-7K04", driver: "Reinaldo Bahia", status: "manutencao", load: 0, km: 215600, lastService: "2026-05-13", nextService: "2026-08-13", project: null },
    { id: "VEI-104", model: "Renault Master L3H2", plate: "RIO-4M61", driver: "—", status: "inativo", load: 0, km: 56200, lastService: "2026-02-18", nextService: "2026-05-18", project: null },
    { id: "VEI-105", model: "Fiat Ducato Cargo", plate: "RIO-9L33", driver: "Diego Antunes", status: "ativo", load: 62, km: 78900, lastService: "2026-04-28", nextService: "2026-07-28", project: "Apto Leblon" },
    { id: "VEI-106", model: "Mercedes Atego 1719", plate: "RIO-1Z57", driver: "—", status: "ativo", load: 12, km: 188400, lastService: "2026-05-02", nextService: "2026-08-02", project: "Casa Anésio" },
  ],

  logistics: [
    { id: "LOG-505", type: "saida", title: "Entrega painel ripado", project: "Cobertura Vieira Souto", local: "Av. Vieira Souto, 1102", time: "08:30", date: "2026-05-15", responsible: "Vanderlei Souza", vehicle: "RIO-2A18", status: "ativo", urgent: true },
    { id: "LOG-504", type: "entrada", title: "Recebimento tampo quartzo", project: "Casa Anésio Cordeiro", local: "Galpão sede – Doca 2", time: "10:00", date: "2026-05-15", responsible: "Igor Cravo", vehicle: "RIO-3B92", status: "pendente" },
    { id: "LOG-503", type: "saida", title: "Montagem closet", project: "Apto Leblon 1101", local: "Av. Visconde de Albuquerque", time: "13:00", date: "2026-05-15", responsible: "Diego Antunes", vehicle: "RIO-9L33", status: "pendente" },
    { id: "LOG-502", type: "saida", title: "Retorno equipe Falcão", project: "Reforma Falcão", local: "Rua da Conceição, 142", time: "17:30", date: "2026-05-15", responsible: "Vanderlei Souza", vehicle: "RIO-2A18", status: "pendente" },
    { id: "LOG-501", type: "entrada", title: "Devolução chapas excedentes", project: "Reforma Falcão", local: "Galpão sede – Doca 1", time: "09:00", date: "2026-05-14", responsible: "Reinaldo Bahia", vehicle: "RIO-7K04", status: "finalizado" },
    { id: "LOG-500", type: "saida", title: "Entrega mesa jantar 10 lug.", project: "Apto Leblon 1101", local: "Av. Visconde de Albuquerque", time: "14:00", date: "2026-05-14", responsible: "Diego Antunes", vehicle: "RIO-9L33", status: "finalizado" },
  ],

  history: [
    { id: "EVT-9001", type: "request", title: "Solicitação WO-2814 movida para Produção", project: "Cobertura Vieira Souto", user: "Ricardo Tavares", time: "Hoje, 14:32" },
    { id: "EVT-9000", type: "logistics", title: "Carga saiu para Av. Vieira Souto 1102", project: "Cobertura Vieira Souto", user: "Vanderlei Souza", time: "Hoje, 13:18" },
    { id: "EVT-8999", type: "inventory", title: "Recebimento ORD-1206 verniz acetinado", project: "Apto Leblon 1101", user: "Almoxarifado", time: "Hoje, 11:02" },
    { id: "EVT-8998", type: "team", title: "Time Marcenaria A reatribuído", project: "Cobertura Vieira Souto", user: "Eduardo Marques", time: "Hoje, 09:45" },
    { id: "EVT-8997", type: "vehicle", title: "VEI-103 entrou em manutenção", project: null, user: "Sistema", time: "Ontem, 17:30" },
    { id: "EVT-8996", type: "project", title: "Loft Bartira finalizado e entregue", project: "Loft Bartira", user: "Marcos Lima", time: "Ontem, 16:14" },
    { id: "EVT-8995", type: "request", title: "WO-2808 marcada como atrasada", project: "Ipanema 802", user: "Sistema", time: "Ontem, 11:00" },
    { id: "EVT-8994", type: "inventory", title: "Pedido ORD-1208 enviado a fornecedor", project: "Cobertura Vieira Souto", user: "Eduardo Marques", time: "Ontem, 10:22" },
    { id: "EVT-8993", type: "team", title: "Tiago Carvalho promovido a líder do Time B", project: null, user: "Eduardo Marques", time: "12 mai, 15:20" },
    { id: "EVT-8992", type: "request", title: "WO-2811 marcada como pronta para entrega", project: "Apto Leblon 1101", user: "Ricardo Tavares", time: "12 mai, 14:00" },
  ],

  /* ========= Admin SaaS ========= */
  admin: {
    metrics: {
      mrr: 184200,
      arr: 2210400,
      tenants: 142,
      activeTenants: 128,
      trialTenants: 18,
      newThisMonth: 12,
      churn: 1.8,
      activeUsers: 1842,
      growth: 14.6,
    },
    tenants: [
      { id: "T-014", name: "Marcenaria Norte LTDA", owner: "Eduardo Marques", users: 24, plan: "Profissional", status: "ativo", mrr: 1490, joined: "2024-08-12", lastActive: "5 min", health: 96, region: "Rio de Janeiro" },
      { id: "T-013", name: "MadeireirA Boavista", owner: "Augusto Reis", users: 38, plan: "Enterprise", status: "ativo", mrr: 3290, joined: "2024-04-02", lastActive: "1h", health: 92, region: "São Paulo" },
      { id: "T-012", name: "Móveis Catarinense", owner: "Lara Schmidt", users: 12, plan: "Profissional", status: "ativo", mrr: 1490, joined: "2025-01-22", lastActive: "12 min", health: 88, region: "Florianópolis" },
      { id: "T-011", name: "Bartira Estúdio", owner: "Camila Bartira", users: 8, plan: "Starter", status: "trial", mrr: 0, joined: "2026-05-02", lastActive: "20 min", health: 64, region: "Rio de Janeiro" },
      { id: "T-010", name: "Carpintaria Real", owner: "José Pereira", users: 16, plan: "Profissional", status: "ativo", mrr: 1490, joined: "2025-09-18", lastActive: "1d", health: 81, region: "Belo Horizonte" },
      { id: "T-009", name: "Olympus Movelaria", owner: "Hélio Camargo", users: 58, plan: "Enterprise", status: "ativo", mrr: 4890, joined: "2024-02-10", lastActive: "3h", health: 94, region: "São Paulo" },
      { id: "T-008", name: "Marcenaria do Sul", owner: "Paulo Henrique", users: 6, plan: "Starter", status: "ativo", mrr: 490, joined: "2025-11-08", lastActive: "2h", health: 72, region: "Porto Alegre" },
      { id: "T-007", name: "ArtCedro Marcenaria", owner: "Vanessa Castro", users: 9, plan: "Profissional", status: "suspenso", mrr: 0, joined: "2025-06-30", lastActive: "12d", health: 28, region: "Salvador" },
      { id: "T-006", name: "Falcão Arquitetura", owner: "Bernardo Falcão", users: 22, plan: "Enterprise", status: "ativo", mrr: 3290, joined: "2024-12-15", lastActive: "30 min", health: 89, region: "Niterói" },
      { id: "T-005", name: "Madeira Premium SP", owner: "Otávio Lima", users: 11, plan: "Profissional", status: "trial", mrr: 0, joined: "2026-05-10", lastActive: "1h", health: 58, region: "São Paulo" },
    ],
    plans: [
      { id: "starter", name: "Starter", price: 490, mrr: 12740, users: 326, color: "#6B5C46", features: ["Até 10 usuários", "3 obras simultâneas", "Suporte por email"] },
      { id: "pro", name: "Profissional", price: 1490, mrr: 86420, users: 982, color: "#10B981", features: ["Usuários ilimitados", "Obras ilimitadas", "Painel Admin", "API + Integrações", "Suporte prioritário"] },
      { id: "enterprise", name: "Enterprise", price: 3290, mrr: 85040, users: 534, color: "#022C22", features: ["SLA dedicado", "SSO + auditoria", "Suporte 24/7", "Customizações", "Onboarding assistido"] },
    ],
    auditLogs: [
      { id: "L-7821", action: "Tenant criado", target: "Bartira Estúdio", actor: "Sistema (signup)", severity: "info", time: "há 8 min" },
      { id: "L-7820", action: "Upgrade de plano: Starter → Profissional", target: "Móveis Catarinense", actor: "Lara Schmidt", severity: "success", time: "há 32 min" },
      { id: "L-7819", action: "Pagamento falhou (cartão expirado)", target: "ArtCedro Marcenaria", actor: "Stripe webhook", severity: "error", time: "há 1h" },
      { id: "L-7818", action: "Impersonação iniciada", target: "Marcenaria Norte LTDA", actor: "admin@woodos.app", severity: "warning", time: "há 2h" },
      { id: "L-7817", action: "Feature flag ativada: timeline-v2", target: "Olympus Movelaria", actor: "admin@woodos.app", severity: "info", time: "há 4h" },
      { id: "L-7816", action: "Tenant suspenso (inadimplência)", target: "ArtCedro Marcenaria", actor: "Sistema (billing)", severity: "warning", time: "há 1d" },
      { id: "L-7815", action: "API key gerada", target: "Falcão Arquitetura", actor: "Bernardo Falcão", severity: "info", time: "há 1d" },
      { id: "L-7814", action: "Convite de usuário enviado", target: "Marcenaria Norte LTDA", actor: "Eduardo Marques", severity: "info", time: "há 2d" },
    ],
    features: [
      { key: "timeline-v2", name: "Timeline Operacional v2", description: "Nova timeline de carga/descarga com agrupamento por obra", coverage: 38, status: "beta" },
      { key: "ai-planner", name: "Planejamento por IA", description: "Sugestões automáticas de alocação de equipes e veículos", coverage: 8, status: "alpha" },
      { key: "mobile-app", name: "Aplicativo mobile (iOS/Android)", description: "Versão nativa para equipes de obra e motoristas", coverage: 65, status: "ga" },
      { key: "client-portal", name: "Portal do Cliente", description: "Acompanhamento de obras pelos clientes finais", coverage: 22, status: "beta" },
    ],
    tickets: [
      { id: "T-3421", title: "Erro ao subir anexos > 10MB", tenant: "Marcenaria Norte LTDA", priority: "alta", status: "aberto", time: "há 12 min" },
      { id: "T-3420", title: "Integração WhatsApp não envia", tenant: "Olympus Movelaria", priority: "alta", status: "em andamento", time: "há 1h" },
      { id: "T-3419", title: "Como exportar relatório de obra?", tenant: "Móveis Catarinense", priority: "baixa", status: "aberto", time: "há 3h" },
      { id: "T-3418", title: "Faturamento duplicado de maio", tenant: "Falcão Arquitetura", priority: "media", status: "resolvido", time: "há 1d" },
    ],
  }
};

const fmtBR = (n) => new Intl.NumberFormat("pt-BR").format(n);
const fmtBRL = (n) => new Intl.NumberFormat("pt-BR", { style: "currency", currency: "BRL", maximumFractionDigits: 0 }).format(n);
const fmtDate = (s) => {
  const [y, m, d] = (s || "").split("-");
  if (!d) return s;
  return `${d}/${m}/${y.slice(2)}`;
};
const fmtDateLong = (s) => {
  const date = new Date(s);
  return date.toLocaleDateString("pt-BR", { day: "2-digit", month: "short", year: "numeric" });
};
const daysUntil = (s) => {
  const t = new Date(s).getTime();
  const now = new Date("2026-05-15").getTime();
  return Math.round((t - now) / 86400000);
};

window.MOCK = MOCK;
window.fmtBR = fmtBR;
window.fmtBRL = fmtBRL;
window.fmtDate = fmtDate;
window.fmtDateLong = fmtDateLong;
window.daysUntil = daysUntil;
