Deploy Inicial do SteelCheck com Docker Build Automatizado
This commit is contained in:
@@ -18,7 +18,7 @@ const App: React.FC = () => {
|
||||
const [provider, setProvider] = useState<AIProvider>('gemini');
|
||||
const [model, setModel] = useState<string>('gemini-2.5-flash');
|
||||
const [hasKey, setHasKey] = useState<boolean>(false);
|
||||
const [reportData, setReportData] = useState<ReportData | null>(null);
|
||||
const [reportsData, setReportsData] = useState<ReportData[] | null>(null);
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
@@ -40,7 +40,7 @@ const App: React.FC = () => {
|
||||
const handleFileChange = useCallback((selectedFile: File | null) => {
|
||||
setFile(selectedFile);
|
||||
if (!selectedFile) {
|
||||
setReportData(null);
|
||||
setReportsData(null);
|
||||
setError(null);
|
||||
}
|
||||
}, []);
|
||||
@@ -79,7 +79,7 @@ const App: React.FC = () => {
|
||||
}
|
||||
setIsLoading(true);
|
||||
setError(null);
|
||||
setReportData(null);
|
||||
setReportsData(null);
|
||||
try {
|
||||
const data = await analyzeCertificate({
|
||||
provider,
|
||||
@@ -88,7 +88,7 @@ const App: React.FC = () => {
|
||||
file,
|
||||
endpoint: provider === 'ollama' ? endpoint : undefined
|
||||
});
|
||||
setReportData(data);
|
||||
setReportsData(data);
|
||||
} catch (err) {
|
||||
if (err instanceof Error) {
|
||||
if (err.message.includes('API key') || err.message.includes('not valid') || err.message.includes('invalid')) {
|
||||
@@ -107,7 +107,7 @@ const App: React.FC = () => {
|
||||
|
||||
const handleReset = useCallback(() => {
|
||||
setFile(null);
|
||||
setReportData(null);
|
||||
setReportsData(null);
|
||||
setIsLoading(false);
|
||||
setError(null);
|
||||
}, []);
|
||||
@@ -120,8 +120,8 @@ const App: React.FC = () => {
|
||||
}, [handleReset]);
|
||||
|
||||
const handleExport = (action: 'preview' | 'download') => {
|
||||
if (reportData) {
|
||||
const fileName = `Relatorio_SteelCheck_${reportData.identification.certificateNumber || 'analise'}`;
|
||||
if (reportsData && reportsData.length > 0) {
|
||||
const fileName = `Relatorio_SteelCheck_${reportsData[0].identification.certificateNumber || 'analise'}`;
|
||||
exportAsPdf('printable-report-container', fileName, action);
|
||||
}
|
||||
};
|
||||
@@ -134,7 +134,7 @@ const App: React.FC = () => {
|
||||
<main className="container mx-auto p-4 sm:p-6 md:p-8 max-w-7xl">
|
||||
{!hasKey ? (
|
||||
<ApiKeySetup onKeySave={handleKeySave} />
|
||||
) : !reportData ? (
|
||||
) : !reportsData ? (
|
||||
<div className="max-w-2xl mx-auto pt-8">
|
||||
<div className="bg-white/70 dark:bg-slate-800/60 backdrop-blur-md border border-white/20 dark:border-slate-700/50 shadow-xl p-6 sm:p-10 rounded-2xl">
|
||||
<div className="text-center mb-10">
|
||||
@@ -191,14 +191,18 @@ const App: React.FC = () => {
|
||||
Baixar Relatório
|
||||
</button>
|
||||
</div>
|
||||
<ReportDisplay report={reportData} />
|
||||
<div className="flex flex-col gap-8">
|
||||
{reportsData.map((report, idx) => (
|
||||
<ReportDisplay key={idx} report={report} />
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</main>
|
||||
|
||||
{reportData && (
|
||||
{reportsData && (
|
||||
<div className="absolute -left-[9999px] top-0 opacity-0" aria-hidden="true">
|
||||
<PrintableReport report={reportData} />
|
||||
<PrintableReport reports={reportsData} />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user