/* BUSINESS & AI — Início: próximas tarefas por responsável */

const RESP_CONFIG = {
  JP: { label: 'João Paulino',  color: '#6366f1' },
  FC: { label: 'Fábio Costa',   color: '#0ea5e9' },
  WN: { label: 'Walter Nóia',  color: '#10b981' },
  MF: { label: 'Márcio Fojo',  color: '#f59e0b' },
};

const ESTADO_CONFIG = {
  em_curso:  { label: 'Em curso',  bg: 'rgba(14,165,233,0.14)',  color: 'var(--ai-500)' },
  pendente:  { label: 'Pendente',  bg: 'var(--surface-muted)',   color: 'var(--text-muted)' },
  concluido: { label: 'Concluído', bg: 'rgba(16,185,129,0.14)',  color: '#10b981' },
  bloqueado: { label: 'Bloqueado', bg: 'rgba(239,68,68,0.14)',   color: 'var(--danger)' },
};

const PRIOR_COLOR = { P1: '#ef4444', P2: '#f97316', P3: '#6366f1', P4: '#94a3b8' };

// Editar estes dados directamente para actualizar o roadmap
const INICIO_TASKS = [
  // João Paulino
  { id: 'jp-1', titulo: 'Business & AI · Departamento portal (dev)', resp: 'JP', prior: 'P1', estado: 'em_curso',  data: '2026-06-10', dep: null },
  { id: 'jp-2', titulo: 'Routing departamental heydigi.js',           resp: 'JP', prior: 'P1', estado: 'em_curso',  data: '2026-06-15', dep: null },
  { id: 'jp-3', titulo: 'Contexto dinâmico por sessão',               resp: 'JP', prior: 'P1', estado: 'pendente',  data: '2026-06-21', dep: 'jp-2' },
  { id: 'jp-4', titulo: 'Layouts Gestor SAT',                         resp: 'JP', prior: 'P1', estado: 'pendente',  data: '2026-06-30', dep: null },
  { id: 'jp-5', titulo: 'Integrar tools Python',                      resp: 'JP', prior: 'P2', estado: 'pendente',  data: '2026-07-15', dep: null },
  { id: 'jp-6', titulo: 'API Primavera v10',                          resp: 'JP', prior: 'P3', estado: 'bloqueado', data: '2026-09-30', dep: 'wn-f5' },
  // Fábio Costa
  { id: 'fc-1', titulo: 'FWs Marketing (5 frameworks)',               resp: 'FC', prior: 'P2', estado: 'em_curso',  data: '2026-06-30', dep: null },
  { id: 'fc-2', titulo: 'FWs Finance (4 frameworks)',                 resp: 'FC', prior: 'P2', estado: 'pendente',  data: '2026-07-15', dep: null },
  { id: 'fc-3', titulo: 'FWs Operations (4 frameworks)',              resp: 'FC', prior: 'P2', estado: 'pendente',  data: '2026-07-31', dep: null },
  { id: 'fc-4', titulo: 'SPs 18 sub-agentes autónomos',               resp: 'FC', prior: 'P3', estado: 'pendente',  data: '2026-09-30', dep: null },
  { id: 'fc-5', titulo: 'Piloto 2-3 comerciais',                      resp: 'FC', prior: 'P4', estado: 'pendente',  data: '2026-11-15', dep: 'fc-4' },
  // Walter Nóia
  { id: 'wn-1', titulo: 'Prep FileMaker · conta serviço API 4 tenants', resp: 'WN', prior: 'P1', estado: 'em_curso',  data: '2026-05-31', dep: null },
  { id: 'wn-2', titulo: 'Regras negócio FM · validações e duplicados',   resp: 'WN', prior: 'P1', estado: 'pendente',  data: '2026-06-07', dep: 'wn-1' },
  { id: 'wn-3', titulo: 'Setup Python + FastAPI · estrutura + uv',        resp: 'WN', prior: 'P2', estado: 'pendente',  data: '2026-06-14', dep: 'wn-2' },
  { id: 'wn-4', titulo: 'Auth JWT · middleware · tenant isolation',        resp: 'WN', prior: 'P2', estado: 'pendente',  data: '2026-06-21', dep: 'wn-3' },
  { id: 'wn-5', titulo: 'Repositório FM · GET/WRITE via FMRS_API_*',       resp: 'WN', prior: 'P2', estado: 'pendente',  data: '2026-06-30', dep: 'wn-4' },
  { id: 'wn-f4', titulo: '5 Endpoints (Entidades, Contactos, Oportunidades, Notas, Users)', resp: 'WN', prior: 'P2', estado: 'pendente', data: '2026-07-07', dep: 'wn-5' },
  { id: 'wn-f5', titulo: 'OpenAPI + Entrega ao João · Swagger publicado',  resp: 'WN', prior: 'P2', estado: 'pendente',  data: '2026-07-18', dep: 'wn-f4' },
  // Márcio Fojo
  { id: 'mf-1', titulo: 'Meta Ads API · credenciais e integração',   resp: 'MF', prior: 'P3', estado: 'pendente',  data: '2026-08-31', dep: null },
  { id: 'mf-2', titulo: 'Google Ads API · credenciais e integração',  resp: 'MF', prior: 'P3', estado: 'pendente',  data: '2026-08-31', dep: null },
  { id: 'mf-3', titulo: 'fal.ai AllDecor mockup',                    resp: 'MF', prior: 'P3', estado: 'pendente',  data: '2026-09-30', dep: 'jp-6' },
  { id: 'mf-4', titulo: 'BI Dashboard · KPIs grupo',                 resp: 'MF', prior: 'P4', estado: 'pendente',  data: '2026-11-30', dep: null },
];

const TaskRow = ({ task, allTasks }) => {
  const resp  = RESP_CONFIG[task.resp];
  const est   = ESTADO_CONFIG[task.estado];
  const depTask = task.dep ? allTasks.find(t => t.id === task.dep) : null;

  return (
    <div style={{
      display: 'flex', alignItems: 'center', gap: 12,
      padding: '10px 16px',
      borderBottom: '1px solid var(--border)',
    }}>
      {/* Prior badge */}
      <span style={{
        minWidth: 24, textAlign: 'center',
        fontSize: 9, fontWeight: 700, fontFamily: 'var(--font-mono)',
        color: PRIOR_COLOR[task.prior],
        border: `1px solid ${PRIOR_COLOR[task.prior]}`,
        borderRadius: 3, padding: '1px 4px',
        opacity: 0.85,
      }}>{task.prior}</span>

      {/* Título */}
      <span style={{ flex: 1, fontSize: 13, lineHeight: 1.3 }}>{task.titulo}</span>

      {/* Dep indicator */}
      {depTask && (
        <span style={{ fontSize: 10, color: 'var(--text-dim)', fontFamily: 'var(--font-mono)', whiteSpace: 'nowrap' }}>
          dep · {RESP_CONFIG[depTask.resp].label}
        </span>
      )}

      {/* Data */}
      <span style={{ fontSize: 11, color: 'var(--text-muted)', fontFamily: 'var(--font-mono)', whiteSpace: 'nowrap' }}>
        {task.data}
      </span>

      {/* Estado */}
      <span style={{
        fontSize: 10, fontWeight: 600, padding: '2px 8px', borderRadius: 4,
        background: est.bg, color: est.color, whiteSpace: 'nowrap',
      }}>{est.label}</span>
    </div>
  );
};

const RespGroup = ({ respKey, tasks }) => {
  const resp = RESP_CONFIG[respKey];
  const grouped = tasks.filter(t => t.resp === respKey);
  if (!grouped.length) return null;
  const emCurso = grouped.filter(t => t.estado === 'em_curso').length;

  return (
    <div className="card" style={{ marginBottom: 16, overflow: 'hidden' }}>
      <div style={{
        padding: '12px 16px',
        background: 'var(--surface-muted)',
        borderBottom: '1px solid var(--border)',
        display: 'flex', alignItems: 'center', gap: 10,
      }}>
        <span style={{
          width: 28, height: 28, borderRadius: 6,
          background: resp.color, color: '#fff',
          display: 'grid', placeItems: 'center',
          fontFamily: 'var(--font-display)', fontWeight: 700, fontSize: 11,
          flexShrink: 0,
        }}>{respKey}</span>
        <div style={{ flex: 1 }}>
          <div style={{ fontWeight: 600, fontSize: 13 }}>{resp.label}</div>
          <div style={{ fontSize: 11, color: 'var(--text-muted)', fontFamily: 'var(--font-mono)' }}>
            {grouped.length} tarefas · {emCurso} em curso
          </div>
        </div>
      </div>
      <div>
        {grouped.map(t => <TaskRow key={t.id} task={t} allTasks={tasks} />)}
      </div>
    </div>
  );
};

const BusinessAIInicioScreen = () => {
  return (
    <div className="scrollbar" style={{ flex: 1, overflowY: 'auto', padding: '24px 28px 80px' }}>
      <div className="font-mono" style={{ fontSize: 11, color: 'var(--text-dim)', letterSpacing: '0.08em', marginBottom: 6 }}>
        BUSINESS & AI · PRÓXIMAS TAREFAS
      </div>
      <h2 className="font-display" style={{ margin: '0 0 4px', fontSize: 26, fontWeight: 500, letterSpacing: '-0.01em' }}>
        Início
      </h2>
      <p style={{ fontSize: 13, color: 'var(--text-muted)', marginBottom: 24, lineHeight: 1.55 }}>
        Tarefas activas e imediatas por responsável. Dados actualizados manualmente.
      </p>

      {Object.keys(RESP_CONFIG).map(k => (
        <RespGroup key={k} respKey={k} tasks={INICIO_TASKS} />
      ))}
    </div>
  );
};
window.BusinessAIInicioScreen = BusinessAIInicioScreen;
