START TRANSACTION;

/*
  Seed rápido de tarefas para configuração de login social.

  Ajuste estes valores antes de executar, se necessário:
  - @criador_id: usuário que ficará como criador das tarefas
  - @id_contrato: contrato vinculado; deixe NULL se quiser tarefa sem contrato
  - @dominio_base: domínio final usado nas callbacks
*/

SET @criador_id   := 22178;
SET @id_contrato  := NULL;
SET @dominio_base := 'https://app.tiix.com.br';

SET @resp_google   := 22170; /* Danylton Lima */
SET @resp_apple    := 22175; /* Pedro Barbosa */
SET @resp_facebook := 22174; /* Lucas Chacon */

SET @inicio_hoje   := CURDATE();
SET @prazo_google  := DATE_ADD(CURDATE(), INTERVAL 5 DAY);
SET @prazo_apple   := DATE_ADD(CURDATE(), INTERVAL 5 DAY);
SET @prazo_meta    := DATE_ADD(CURDATE(), INTERVAL 5 DAY);

/* =========================================================
   TAREFA 1 - GOOGLE / DANYLTON
   ========================================================= */
INSERT INTO wpjy_tarefas (
  id_contrato,
  titulo,
  descricao,
  status,
  prioridade,
  tipo,
  data_inicio,
  data_fim_prevista,
  progresso,
  visibilidade,
  etiquetas,
  criador_id,
  responsavel_id
) VALUES (
  @id_contrato,
  'Google Console: gerar dados de integração para login social',
  CONCAT(
    'Objetivo:', CHAR(10),
    'Criar e/ou configurar a integração do Google para login social web e entregar os dados necessários para uso no sistema.', CHAR(10), CHAR(10),
    'Entregáveis esperados:', CHAR(10),
    '1. Projeto válido no Google Cloud vinculado ao login social do sistema.', CHAR(10),
    '2. Google Auth Platform configurado com Branding e Audience.', CHAR(10),
    '3. OAuth Client do tipo Web application criado.', CHAR(10),
    '4. Client ID e Client Secret validados.', CHAR(10),
    '5. Redirect URIs cadastradas exatamente como abaixo:', CHAR(10),
    '   - ', @dominio_base, '/cliente/auth-social?provider=google&action=callback', CHAR(10),
    '   - ', @dominio_base, '/parceiro/auth-social?provider=google&action=callback', CHAR(10),
    '6. Evidência de testes e confirmação de onde a credencial ficou armazenada com segurança.', CHAR(10), CHAR(10),
    'Passo a passo sugerido:', CHAR(10),
    '1. Acessar o Google Cloud Console com a conta proprietária da integração.', CHAR(10),
    '2. Criar um projeto novo ou validar um projeto existente exclusivo para login social.', CHAR(10),
    '3. Abrir Google Auth Platform e configurar Branding: nome do app, e-mail de suporte e contato do desenvolvedor.', CHAR(10),
    '4. Configurar Audience conforme o estágio do ambiente; manter em teste se ainda não for produção aberta.', CHAR(10),
    '5. Criar client OAuth em Clients > Create client > Web application.', CHAR(10),
    '6. Cadastrar as duas redirect URIs de cliente e parceiro exatamente iguais às URLs finais do sistema.', CHAR(10),
    '7. Copiar Client ID e Client Secret.', CHAR(10),
    '8. Preencher os dados no sistema em /adm/social-auth-config no bloco Google.', CHAR(10),
    '9. Testar callback e autenticação em cliente e parceiro.', CHAR(10), CHAR(10),
    'Critérios de aceite:', CHAR(10),
    '- Client ID e Client Secret gerados e entregues.', CHAR(10),
    '- Callback sem erro de redirect_uri_mismatch.', CHAR(10),
    '- Login Google funcionando ou, se houver impedimento externo, bloqueio documentado com evidência.', CHAR(10), CHAR(10),
    'Orientações de execução, timer e status:', CHAR(10),
    '- Ao começar, abrir a tarefa, mudar o status para em_andamento e ligar o timer.', CHAR(10),
    '- Se ficar aguardando acesso, aprovação, domínio ou permissão da conta Google, parar o timer, registrar comentário com o bloqueio e mudar status para bloqueada.', CHAR(10),
    '- Quando retomar, voltar para em_andamento e religar o timer.', CHAR(10),
    '- Ao finalizar, parar o timer, revisar checklist, registrar comentário final com o resumo do que foi criado, onde ficaram as credenciais e o resultado dos testes, e então mudar o status para concluida.', CHAR(10), CHAR(10),
    'Observações importantes:', CHAR(10),
    '- Usar apenas os escopos básicos: openid, email e profile.', CHAR(10),
    '- Comparar a URL cadastrada caractere por caractere caso haja erro de callback.', CHAR(10),
    '- Não expor secret em comentários públicos; informar apenas o local seguro onde foi salvo.'
  ),
  'aberta',
  'alta',
  'tarefa',
  @inicio_hoje,
  @prazo_google,
  0,
  'equipe',
  'login-social,google,oauth,integracao',
  @criador_id,
  @resp_google
);

SET @tarefa_google := LAST_INSERT_ID();

INSERT INTO wpjy_tarefas_atribuidos (id_tarefa, alvo_tipo, alvo_id, papel, created_at)
VALUES (@tarefa_google, 'usuario', @resp_google, 'responsavel', NOW());

INSERT INTO wpjy_tarefas_checklist (id_tarefa, titulo, feito, ordem, created_at) VALUES
(@tarefa_google, 'Abrir a tarefa, alterar status para em_andamento e ligar o timer no início da execução', 0, 1, NOW()),
(@tarefa_google, 'Acessar o Google Cloud Console com a conta dona da integração', 0, 2, NOW()),
(@tarefa_google, 'Criar ou validar o projeto da integração no Google Cloud', 0, 3, NOW()),
(@tarefa_google, 'Configurar Branding e Audience no Google Auth Platform', 0, 4, NOW()),
(@tarefa_google, 'Criar OAuth Client do tipo Web application', 0, 5, NOW()),
(@tarefa_google, CONCAT('Cadastrar callback cliente: ', @dominio_base, '/cliente/auth-social?provider=google&action=callback'), 0, 6, NOW()),
(@tarefa_google, CONCAT('Cadastrar callback parceiro: ', @dominio_base, '/parceiro/auth-social?provider=google&action=callback'), 0, 7, NOW()),
(@tarefa_google, 'Copiar e validar Client ID e Client Secret', 0, 8, NOW()),
(@tarefa_google, 'Preencher o bloco Google em /adm/social-auth-config', 0, 9, NOW()),
(@tarefa_google, 'Testar login social Google em cliente', 0, 10, NOW()),
(@tarefa_google, 'Testar login social Google em parceiro', 0, 11, NOW()),
(@tarefa_google, 'Registrar comentário final com evidências, local seguro das credenciais e encerrar timer antes de concluir', 0, 12, NOW());

INSERT INTO wpjy_tarefas_log (id_tarefa, user_id, acao, de_val, para_val, created_at)
VALUES
(@tarefa_google, @criador_id, 'criada', NULL, 'Tarefa criada via SQL para integração Google login social', NOW()),
(@tarefa_google, @criador_id, 'atribuido', NULL, CAST(@resp_google AS CHAR), NOW());

/* =========================================================
   TAREFA 2 - APPLE / PEDRO BARBOSA
   ========================================================= */
INSERT INTO wpjy_tarefas (
  id_contrato,
  titulo,
  descricao,
  status,
  prioridade,
  tipo,
  data_inicio,
  data_fim_prevista,
  progresso,
  visibilidade,
  etiquetas,
  criador_id,
  responsavel_id
) VALUES (
  @id_contrato,
  'Apple Developer: gerar dados de integração para login social',
  CONCAT(
    'Objetivo:', CHAR(10),
    'Provisionar a integração Apple Sign in para uso no login social web e entregar os dados técnicos necessários para o sistema.', CHAR(10), CHAR(10),
    'Entregáveis esperados:', CHAR(10),
    '1. Validação de existência de App ID primário com Sign in with Apple habilitado.', CHAR(10),
    '2. Services ID criado/configurado para o website.', CHAR(10),
    '3. Domínios e return URLs cadastrados corretamente.', CHAR(10),
    '4. Chave privada .p8 gerada e guardada em local seguro.', CHAR(10),
    '5. Team ID, Key ID e Services ID entregues para configuração.', CHAR(10),
    '6. Dados prontos para preenchimento em /adm/social-auth-config.', CHAR(10), CHAR(10),
    'Dados que precisam ser entregues ao final:', CHAR(10),
    '- client_id = Services ID', CHAR(10),
    '- team_id = Team ID', CHAR(10),
    '- key_id = Key ID', CHAR(10),
    '- private_key = conteúdo do arquivo .p8 salvo em cofre/local seguro', CHAR(10),
    '- return URLs cadastradas:', CHAR(10),
    '   - ', @dominio_base, '/cliente/auth-social?provider=apple&action=callback', CHAR(10),
    '   - ', @dominio_base, '/parceiro/auth-social?provider=apple&action=callback', CHAR(10), CHAR(10),
    'Passo a passo sugerido:', CHAR(10),
    '1. Acessar Apple Developer com perfil Account Holder ou Admin.', CHAR(10),
    '2. Validar se existe App ID primário com Sign in with Apple habilitado.', CHAR(10),
    '3. Se não existir, registrar bloqueio imediatamente com o que falta e quem precisa atuar.', CHAR(10),
    '4. Criar um Services ID para o website.', CHAR(10),
    '5. Configurar Sign in with Apple no Services ID, vinculando ao App ID primário.', CHAR(10),
    '6. Informar domínio/subdomínio e cadastrar as duas return URLs de cliente e parceiro.', CHAR(10),
    '7. Criar a chave privada em Keys, marcar Sign in with Apple e associar ao App ID correto.', CHAR(10),
    '8. Fazer download do .p8, guardar em local seguro e copiar Key ID e Team ID.', CHAR(10),
    '9. Preencher o bloco Apple em /adm/social-auth-config.', CHAR(10),
    '10. Validar o fluxo completo de autenticação.', CHAR(10), CHAR(10),
    'Critérios de aceite:', CHAR(10),
    '- Services ID criado e funcional.', CHAR(10),
    '- Team ID, Key ID e private key disponíveis em local seguro.', CHAR(10),
    '- Return URLs configuradas sem erro de domínio ou callback.', CHAR(10),
    '- Teste Apple concluído ou bloqueio formalmente registrado com dependência explícita.', CHAR(10), CHAR(10),
    'Orientações de execução, timer e status:', CHAR(10),
    '- Ao iniciar, mudar status para em_andamento e ligar o timer.', CHAR(10),
    '- Se depender de acesso Apple, App ID prévio, aprovação administrativa ou credencial de outra pessoa, parar o timer, comentar o bloqueio e mudar status para bloqueada.', CHAR(10),
    '- Ao retomar, recolocar em em_andamento e religar o timer.', CHAR(10),
    '- Ao concluir, parar o timer, marcar checklist, registrar comentário com o que foi provisionado e onde o .p8 ficou armazenado, e então mudar para concluida.', CHAR(10), CHAR(10),
    'Observações importantes:', CHAR(10),
    '- O nome do usuário pode vir apenas no primeiro consentimento.', CHAR(10),
    '- O e-mail pode ser mascarado pelo relay da Apple.', CHAR(10),
    '- O download do .p8 normalmente ocorre uma única vez; tratar esse arquivo como credencial crítica.'
  ),
  'aberta',
  'alta',
  'tarefa',
  @inicio_hoje,
  @prazo_apple,
  0,
  'equipe',
  'login-social,apple,oauth,integracao',
  @criador_id,
  @resp_apple
);

SET @tarefa_apple := LAST_INSERT_ID();

INSERT INTO wpjy_tarefas_atribuidos (id_tarefa, alvo_tipo, alvo_id, papel, created_at)
VALUES (@tarefa_apple, 'usuario', @resp_apple, 'responsavel', NOW());

INSERT INTO wpjy_tarefas_checklist (id_tarefa, titulo, feito, ordem, created_at) VALUES
(@tarefa_apple, 'Abrir a tarefa, alterar status para em_andamento e ligar o timer no início da execução', 0, 1, NOW()),
(@tarefa_apple, 'Acessar Apple Developer com perfil Account Holder ou Admin', 0, 2, NOW()),
(@tarefa_apple, 'Validar App ID primário com Sign in with Apple habilitado', 0, 3, NOW()),
(@tarefa_apple, 'Criar ou validar Services ID para uso web', 0, 4, NOW()),
(@tarefa_apple, CONCAT('Cadastrar return URL cliente: ', @dominio_base, '/cliente/auth-social?provider=apple&action=callback'), 0, 5, NOW()),
(@tarefa_apple, CONCAT('Cadastrar return URL parceiro: ', @dominio_base, '/parceiro/auth-social?provider=apple&action=callback'), 0, 6, NOW()),
(@tarefa_apple, 'Criar chave .p8 com Sign in with Apple e guardar em local seguro', 0, 7, NOW()),
(@tarefa_apple, 'Capturar Services ID, Team ID e Key ID', 0, 8, NOW()),
(@tarefa_apple, 'Preencher o bloco Apple em /adm/social-auth-config', 0, 9, NOW()),
(@tarefa_apple, 'Testar login social Apple e validar callback', 0, 10, NOW()),
(@tarefa_apple, 'Registrar comentário final com evidências, local seguro do .p8 e encerrar timer antes de concluir', 0, 11, NOW());

INSERT INTO wpjy_tarefas_log (id_tarefa, user_id, acao, de_val, para_val, created_at)
VALUES
(@tarefa_apple, @criador_id, 'criada', NULL, 'Tarefa criada via SQL para integração Apple login social', NOW()),
(@tarefa_apple, @criador_id, 'atribuido', NULL, CAST(@resp_apple AS CHAR), NOW());

/* =========================================================
   TAREFA 3 - FACEBOOK / LUCAS CHACON
   ========================================================= */
INSERT INTO wpjy_tarefas (
  id_contrato,
  titulo,
  descricao,
  status,
  prioridade,
  tipo,
  data_inicio,
  data_fim_prevista,
  progresso,
  visibilidade,
  etiquetas,
  criador_id,
  responsavel_id
) VALUES (
  @id_contrato,
  'Meta/Facebook: gerar dados de integração para login social',
  CONCAT(
    'Objetivo:', CHAR(10),
    'Criar e configurar o app do Meta for Developers para autenticação web e entregar App ID e App Secret prontos para uso no login social do sistema.', CHAR(10), CHAR(10),
    'Entregáveis esperados:', CHAR(10),
    '1. App criado no Meta for Developers com foco em autenticação.', CHAR(10),
    '2. Produto/Use case de Facebook Login habilitado.', CHAR(10),
    '3. Web OAuth Login ativo.', CHAR(10),
    '4. Valid OAuth Redirect URIs cadastradas corretamente.', CHAR(10),
    '5. App ID e App Secret copiados com segurança.', CHAR(10),
    '6. Bloco Facebook preenchido em /adm/social-auth-config.', CHAR(10), CHAR(10),
    'Redirect URIs obrigatórias:', CHAR(10),
    '   - ', @dominio_base, '/cliente/auth-social?provider=facebook&action=callback', CHAR(10),
    '   - ', @dominio_base, '/parceiro/auth-social?provider=facebook&action=callback', CHAR(10), CHAR(10),
    'Passo a passo sugerido:', CHAR(10),
    '1. Acessar Meta for Developers com a conta responsável.', CHAR(10),
    '2. Concluir onboarding de developer, se necessário.', CHAR(10),
    '3. Criar app com caso de uso voltado à autenticação/account creation.', CHAR(10),
    '4. Habilitar Facebook Login ou o fluxo equivalente na interface atual da Meta.', CHAR(10),
    '5. Confirmar Web OAuth Login e Client OAuth Login ativos.', CHAR(10),
    '6. Ativar regras seguras de redirect, especialmente HTTPS em produção.', CHAR(10),
    '7. Cadastrar as duas Valid OAuth Redirect URIs do sistema.', CHAR(10),
    '8. Coletar App ID e App Secret em Settings > Basic.', CHAR(10),
    '9. Preencher o bloco Facebook em /adm/social-auth-config.', CHAR(10),
    '10. Executar testes de autenticação e documentar resultado.', CHAR(10), CHAR(10),
    'Critérios de aceite:', CHAR(10),
    '- App ID e App Secret entregues.', CHAR(10),
    '- Redirect sem erro de URL inválida.', CHAR(10),
    '- Login funcionando em ambiente previsto ou bloqueio documentado.', CHAR(10),
    '- Se o app ficar em modo desenvolvimento, isso deve estar registrado no comentário final com impacto e próximos passos.', CHAR(10), CHAR(10),
    'Orientações de execução, timer e status:', CHAR(10),
    '- Ao iniciar, mudar status para em_andamento e ligar o timer.', CHAR(10),
    '- Se depender de aprovação da conta, business manager, review, tester ou acesso ao portal Meta, parar o timer, registrar comentário com o bloqueio e alterar status para bloqueada.', CHAR(10),
    '- Ao retomar, voltar para em_andamento e religar o timer.', CHAR(10),
    '- Ao finalizar, parar o timer, concluir checklist, registrar comentário final com credenciais entregues, modo do app e resultado do teste, e então mudar o status para concluida.', CHAR(10), CHAR(10),
    'Observações importantes:', CHAR(10),
    '- O Facebook pode não retornar e-mail para todos os usuários.', CHAR(10),
    '- Se a URL de callback divergir um caractere, o login pode ser bloqueado.', CHAR(10),
    '- Em modo desenvolvimento, normalmente apenas admins/testers do app conseguem autenticar.'
  ),
  'aberta',
  'alta',
  'tarefa',
  @inicio_hoje,
  @prazo_meta,
  0,
  'equipe',
  'login-social,facebook,meta,oauth,integracao',
  @criador_id,
  @resp_facebook
);

SET @tarefa_facebook := LAST_INSERT_ID();

INSERT INTO wpjy_tarefas_atribuidos (id_tarefa, alvo_tipo, alvo_id, papel, created_at)
VALUES (@tarefa_facebook, 'usuario', @resp_facebook, 'responsavel', NOW());

INSERT INTO wpjy_tarefas_checklist (id_tarefa, titulo, feito, ordem, created_at) VALUES
(@tarefa_facebook, 'Abrir a tarefa, alterar status para em_andamento e ligar o timer no início da execução', 0, 1, NOW()),
(@tarefa_facebook, 'Acessar Meta for Developers com a conta proprietária da integração', 0, 2, NOW()),
(@tarefa_facebook, 'Criar ou validar app para autenticação/login social', 0, 3, NOW()),
(@tarefa_facebook, 'Habilitar Facebook Login ou use case equivalente na interface atual', 0, 4, NOW()),
(@tarefa_facebook, 'Validar Client OAuth Login e Web OAuth Login habilitados', 0, 5, NOW()),
(@tarefa_facebook, CONCAT('Cadastrar callback cliente: ', @dominio_base, '/cliente/auth-social?provider=facebook&action=callback'), 0, 6, NOW()),
(@tarefa_facebook, CONCAT('Cadastrar callback parceiro: ', @dominio_base, '/parceiro/auth-social?provider=facebook&action=callback'), 0, 7, NOW()),
(@tarefa_facebook, 'Capturar App ID e App Secret com segurança', 0, 8, NOW()),
(@tarefa_facebook, 'Preencher o bloco Facebook em /adm/social-auth-config', 0, 9, NOW()),
(@tarefa_facebook, 'Testar login social Facebook e validar callback', 0, 10, NOW()),
(@tarefa_facebook, 'Registrar comentário final com evidências, modo do app e encerrar timer antes de concluir', 0, 11, NOW());

INSERT INTO wpjy_tarefas_log (id_tarefa, user_id, acao, de_val, para_val, created_at)
VALUES
(@tarefa_facebook, @criador_id, 'criada', NULL, 'Tarefa criada via SQL para integração Facebook login social', NOW()),
(@tarefa_facebook, @criador_id, 'atribuido', NULL, CAST(@resp_facebook AS CHAR), NOW());

COMMIT;
