<?php
require_once __DIR__.'/../config/config.php';require_once __DIR__.'/../config/database.php';require_once __DIR__.'/../includes/functions.php';require_once __DIR__.'/../includes/admin_functions.php';afAdminRequireAuth();
if($_SERVER['REQUEST_METHOD']==='POST'){
 try{
  if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))throw new RuntimeException('Sessão expirada.');
  $saved=afPrivacySaveRiskAssessment($pdo,afAdminId(),$_POST);
  afAdminLog($pdo,'minor_risk_assessment_saved','risk_assessment',(int)($saved['id']??0),['status'=>$saved['status']??'draft','version'=>$saved['version_key']??'']);
  setFlash('success','Relatório de riscos salvo.');
 }catch(Throwable $e){setFlash('error',$e->getMessage());}
 header('Location: '.SITE_URL.'/pages/admin-relatorio-riscos.php');exit;
}
$current=afPrivacyLatestRiskAssessment($pdo);$gate=afPrivacyMinorReleaseReady($pdo);
$gateLabels=[
 'RISK_GATE_DISABLED'=>'Gate de riscos desativado',
 'CONTROLLER_DATA_REQUIRED'=>'Dados do controlador pendentes',
 'RISK_ASSESSMENT_REQUIRED'=>'Relatório aprovado pendente',
 'LEGAL_REVIEW_EVIDENCE_REQUIRED'=>'Evidência jurídica pendente',
 'LEGAL_REVIEW_EXPIRED'=>'Revisão jurídica vencida',
 'RISK_ASSESSMENT_APPROVED'=>'Liberação jurídica vigente',
];
$gateLabel=$gateLabels[$gate['code']]??$gate['code'];
$pageTitle='Admin • Riscos de menores';$showNav=false;$bodyClass='admin-body';$adminPage='riscos';require __DIR__.'/../includes/header.php';
?>
<div class="admin-shell"><?php require __DIR__.'/../includes/admin_nav.php';?><main class="admin-main"><header class="admin-topbar"><div><small>PROTEÇÃO DE DADOS E MENORES</small><h1>Relatório de riscos</h1></div><span class="admin-count"><?=$gate['ready']?'LIBERAÇÃO APROVADA':'MENORES BLOQUEADOS'?></span></header><?=renderFlash()?>
<div class="admin-warning"><b>Este painel não substitui advogado nem garante risco jurídico zero.</b> A aprovação só deve ocorrer após revisão jurídica real, com identificação do profissional, referência do parecer e data de nova revisão. O sistema mantém menores bloqueados se faltarem dados do controlador, evidência jurídica ou se a revisão estiver vencida.</div>
<section class="admin-kpi-grid privacy-admin-kpis"><article><span><?=$gate['ready']?'✅':'🔒'?></span><div><small>GATE DE LANÇAMENTO</small><strong><?=$gate['ready']?'Pronto':'Bloqueado'?></strong><em><?=esc($gateLabel)?></em></div></article><article><span>📄</span><div><small>VERSÃO</small><strong><?=esc($current['version_key']??'—')?></strong><em><?=esc($current['status']??'sem relatório')?></em></div></article><article><span>⚖️</span><div><small>REVISÃO JURÍDICA</small><strong><?=!empty($current['legal_reviewed_at'])?'Confirmada':'Pendente'?></strong><em><?=!empty($current['legal_reviewed_at'])?date('d/m/Y H:i',strtotime($current['legal_reviewed_at'])):'obrigatória'?></em></div></article><article><span>👤</span><div><small>RESPONSÁVEL</small><strong><?=esc($current['reviewer_name']??'—')?></strong><em><?=!empty($current['approved_at'])?date('d/m/Y H:i',strtotime($current['approved_at'])):'não aprovado'?></em></div></article></section>
<section class="admin-panel"><header><div><small>NOVA VERSÃO</small><h2>Avaliação de riscos e medidas</h2></div></header><form method="post" class="risk-assessment-form"><?=camposCsrf()?>
<div class="admin-config-grid"><label><span>Versão</span><input name="version_key" value="<?=esc(date('Y.m.d'))?>" required></label><label><span>Status</span><select name="status"><option value="draft">Rascunho</option><option value="in_review">Em revisão</option><option value="approved">Aprovado</option><option value="rejected">Rejeitado</option></select></label><label style="grid-column:1/-1"><span>Título</span><input name="title" value="Relatório de riscos para contas de menores" required></label><label><span>Profissional da revisão jurídica</span><input name="legal_reviewer_name" maxlength="180" placeholder="Nome completo"></label><label><span>Registro profissional</span><input name="legal_reviewer_registration" maxlength="80" placeholder="Ex.: OAB/UF 00000"></label><label><span>Referência do parecer ou contrato</span><input name="legal_review_reference" maxlength="255" placeholder="Protocolo interno, parecer ou documento"></label><label><span>Próxima revisão jurídica</span><input type="date" name="next_review_at" min="<?=date('Y-m-d',strtotime('+1 day'))?>" value="<?=date('Y-m-d',strtotime('+1 year'))?>"></label></div>
<label><span>Escopo avaliado</span><textarea name="scope" rows="5" required placeholder="Descreva idade, câmera, Battle, ranking, contatos, painel dos pais e fluxos de privacidade."></textarea></label>
<label><span>Riscos identificados</span><textarea name="risks" rows="7" required placeholder="Liste riscos de exposição, terceiros na câmera, falsidade etária, contato indevido, localização, transmissão e acesso por API."></textarea></label>
<label><span>Medidas implementadas</span><textarea name="mitigations" rows="7" required placeholder="Descreva bloqueios, declaração, e-mail, código familiar, conferência ao vivo/presencial sem gravação, impressão HMAC do documento, consentimentos, motor central, câmera segura, auditoria, moderação e supervisão."></textarea></label>
<label><span>Riscos residuais</span><textarea name="residual_risks" rows="5" placeholder="Indique riscos que permanecem e como serão monitorados."></textarea></label>
<label class="legal-confirm-check"><input type="checkbox" name="legal_reviewed" value="1"><span>Confirmo que esta versão passou por revisão jurídica real, que a referência acima é autêntica e que a aprovação permanece válida até a data informada.</span></label>
<button class="admin-primary" type="submit">SALVAR NOVA VERSÃO</button></form></section>
<?php if($current):?><section class="admin-panel"><header><div><small>ÚLTIMA VERSÃO</small><h2><?=esc($current['title'])?></h2></div><span class="admin-pill"><?=esc($current['status'])?></span></header><div class="risk-summary"><?php if(!empty($current['legal_reviewer_name'])):?><h3>Revisão jurídica</h3><p><?=esc($current['legal_reviewer_name'])?> • <?=esc($current['legal_reviewer_registration']??'')?> • referência <?=esc($current['legal_review_reference']??'')?><?=!empty($current['next_review_at'])?' • válida até '.date('d/m/Y',strtotime($current['next_review_at'])):''?></p><?php endif?><h3>Escopo</h3><p><?=nl2br(esc($current['scope_text']))?></p><h3>Riscos</h3><p><?=nl2br(esc($current['risks_text']))?></p><h3>Medidas</h3><p><?=nl2br(esc($current['mitigations_text']))?></p><?php if(!empty($current['residual_risks_text'])):?><h3>Riscos residuais</h3><p><?=nl2br(esc($current['residual_risks_text']))?></p><?php endif?></div></section><?php endif?>
</main></div><script src="<?=SITE_URL?>/assets/js/admin.js?v=14.1"></script><?php require __DIR__.'/../includes/footer.php';?>
