'use client';

/**
 * Bloco topo do hub Visão Geral — só `sistema_customizado` (TASK-PSC-028 / 033).
 * Layout: cobertura KPI primeiro (acima da dobra); md+ 14/10 checklist + saúde; xs–sm stack.
 * Padding inferior extra em xs para CTAs não ficarem sob a bottom bar do ProjetoLayout.
 */

import { Col, Row } from 'antd';

import type { Projeto } from '@/types';

import { ScCoberturaRequisitoTesteCard } from './ScCoberturaRequisitoTesteCard';
import { ScOnboardingChecklistCard } from './ScOnboardingChecklistCard';
import { ScSaudeSistemaCard } from './ScSaudeSistemaCard';
import { useScProntidaoHub } from './useScProntidaoHub';
import styles from './ScProntidaoHubBlock.module.scss';

export type ScProntidaoHubBlockProps = {
    projetoId: string;
    projeto: Projeto;
    tecnologiasCount?: number;
};

/** True quando o hub deve mostrar o bloco tipológico SC. */
export function isSistemaCustomizadoProjeto(projeto: Projeto | null | undefined): boolean {
    return projeto?.categoria_projeto?.codigo === 'sistema_customizado';
}

/**
 * Checklist onboarding C7 + Saúde tipológica + KPI cobertura requisito→teste (TASK-PSC-033).
 */
export function ScProntidaoHubBlock({
    projetoId,
    projeto,
    tecnologiasCount = 0,
}: ScProntidaoHubBlockProps) {
    const {
        checklist,
        tipologicoChecks,
        saudeMessage,
        saudeAggregated,
        addonInactive,
        isLoading,
        healthError,
    } = useScProntidaoHub({
        projetoId,
        projeto,
        tecnologiasCount,
        enabled: true,
    });

    return (
        <div className={styles.hubBlock}>
            <Row gutter={[24, 16]}>
                <Col xs={24}>
                    <ScCoberturaRequisitoTesteCard projetoId={projetoId} />
                </Col>
                <Col xs={24} md={14}>
                    <ScOnboardingChecklistCard
                        projetoId={projetoId}
                        checklist={checklist}
                        loading={isLoading}
                    />
                </Col>
                <Col xs={24} md={10}>
                    <ScSaudeSistemaCard
                        checks={tipologicoChecks}
                        message={saudeMessage}
                        aggregated={saudeAggregated}
                        addonInactive={addonInactive}
                        healthError={healthError}
                        loading={isLoading}
                    />
                </Col>
            </Row>
        </div>
    );
}
