|
@@ -18,7 +18,7 @@ const ExtractionStatusView = ({ progress, logs, onClose, isDone }) => {
|
|
|
{/* Header */}
|
|
{/* Header */}
|
|
|
<div style={styles.extractionHeader}>
|
|
<div style={styles.extractionHeader}>
|
|
|
<div>
|
|
<div>
|
|
|
- <h2 style={styles.pageTitle}>Analyse Multi-Agents</h2>
|
|
|
|
|
|
|
+ <h2 style={styles.pageTitle}>Extraction en cours</h2>
|
|
|
<p style={styles.pageSubtitle}>
|
|
<p style={styles.pageSubtitle}>
|
|
|
{isDone ? "Extraction terminée." : "Traitement des rapports Solvabilité II en cours..."}
|
|
{isDone ? "Extraction terminée." : "Traitement des rapports Solvabilité II en cours..."}
|
|
|
</p>
|
|
</p>
|
|
@@ -42,7 +42,7 @@ const ExtractionStatusView = ({ progress, logs, onClose, isDone }) => {
|
|
|
borderColor: allDone
|
|
borderColor: allDone
|
|
|
? (hasError ? "#ef4444" : "rgba(16,185,129,0.35)")
|
|
? (hasError ? "#ef4444" : "rgba(16,185,129,0.35)")
|
|
|
: C.border,
|
|
: C.border,
|
|
|
- borderWidth: hasError ? 2 : 1, // Optionnel : épaissir un peu si erreur
|
|
|
|
|
|
|
+ borderWidth: hasError ? 1 : 1,
|
|
|
}}>
|
|
}}>
|
|
|
{/* Company header */}
|
|
{/* Company header */}
|
|
|
<div style={styles.companyStatusHeader}>
|
|
<div style={styles.companyStatusHeader}>
|
|
@@ -392,8 +392,8 @@ export default function App() {
|
|
|
<div style={styles.sidebarHeader}>
|
|
<div style={styles.sidebarHeader}>
|
|
|
{!sidebarCollapsed && (
|
|
{!sidebarCollapsed && (
|
|
|
<span style={styles.brandText}>
|
|
<span style={styles.brandText}>
|
|
|
- <span style={styles.brandAccent}>SFCR</span>
|
|
|
|
|
- <span style={styles.brandSub}>·extract</span>
|
|
|
|
|
|
|
+ <span style={styles.brandAccent}>FORSIDES</span>
|
|
|
|
|
+ <span style={styles.brandSub}>·Dataltist</span>
|
|
|
</span>
|
|
</span>
|
|
|
)}
|
|
)}
|
|
|
<button
|
|
<button
|
|
@@ -408,12 +408,14 @@ export default function App() {
|
|
|
{[
|
|
{[
|
|
|
{ id: "search", icon: "⊕", label: "Search Sources" },
|
|
{ id: "search", icon: "⊕", label: "Search Sources" },
|
|
|
{ id: "extraction", icon: "⊞", label: "Extraction" },
|
|
{ id: "extraction", icon: "⊞", label: "Extraction" },
|
|
|
|
|
+ { id: "analyse", icon: "⊗", label: "Analyse QRT's" },
|
|
|
].map((item) => (
|
|
].map((item) => (
|
|
|
<button
|
|
<button
|
|
|
key={item.id}
|
|
key={item.id}
|
|
|
onClick={() => {
|
|
onClick={() => {
|
|
|
setActiveNav(item.id);
|
|
setActiveNav(item.id);
|
|
|
if (item.id === "search") setIsExtracting(false);
|
|
if (item.id === "search") setIsExtracting(false);
|
|
|
|
|
+ if (item.id === "analyse") setIsExtracting(false);
|
|
|
}}
|
|
}}
|
|
|
style={{
|
|
style={{
|
|
|
...styles.navBtn,
|
|
...styles.navBtn,
|
|
@@ -431,7 +433,8 @@ export default function App() {
|
|
|
|
|
|
|
|
<div style={styles.sidebarFooter}>
|
|
<div style={styles.sidebarFooter}>
|
|
|
{!sidebarCollapsed && (
|
|
{!sidebarCollapsed && (
|
|
|
- <span style={styles.footerBadge}>Beta</span>
|
|
|
|
|
|
|
+ <span style={styles.footerBadge}>Forsides</span>
|
|
|
|
|
+
|
|
|
)}
|
|
)}
|
|
|
</div>
|
|
</div>
|
|
|
</aside>
|
|
</aside>
|
|
@@ -446,7 +449,15 @@ export default function App() {
|
|
|
Section dédiée à la recherche de sources SFCR.
|
|
Section dédiée à la recherche de sources SFCR.
|
|
|
</p>
|
|
</p>
|
|
|
</div>
|
|
</div>
|
|
|
- ) : isExtracting ? (
|
|
|
|
|
|
|
+ ) : activeNav === "analyse" ? (
|
|
|
|
|
+ <div style={styles.placeholderPanel}>
|
|
|
|
|
+ <div style={styles.placeholderIcon}>⊗</div>
|
|
|
|
|
+ <h2 style={styles.placeholderTitle}>Analyse QRT's</h2>
|
|
|
|
|
+ <p style={styles.placeholderDesc}>
|
|
|
|
|
+ Section dédiée à l'analyse des QRT.
|
|
|
|
|
+ </p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ ): isExtracting ? (
|
|
|
<ExtractionStatusView
|
|
<ExtractionStatusView
|
|
|
progress={progress}
|
|
progress={progress}
|
|
|
logs={logs}
|
|
logs={logs}
|
|
@@ -731,23 +742,6 @@ export default function App() {
|
|
|
</section>
|
|
</section>
|
|
|
)}
|
|
)}
|
|
|
|
|
|
|
|
- {/* 04. PROMPT */}
|
|
|
|
|
- <section style={styles.card}>
|
|
|
|
|
- <div style={styles.cardHeader}>
|
|
|
|
|
- <span style={styles.cardBadge}>04</span>
|
|
|
|
|
- <h2 style={styles.cardTitle}>Prompt d'extraction</h2>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div style={styles.promptWrapper}>
|
|
|
|
|
- <textarea
|
|
|
|
|
- style={styles.promptInput}
|
|
|
|
|
- placeholder="Instructions spécifiques..."
|
|
|
|
|
- value={prompt}
|
|
|
|
|
- onChange={(e) => setPrompt(e.target.value)}
|
|
|
|
|
- rows={4}
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
- </section>
|
|
|
|
|
-
|
|
|
|
|
{/* RECAPITULATIF */}
|
|
{/* RECAPITULATIF */}
|
|
|
{selectedCompanies.length > 0 && (
|
|
{selectedCompanies.length > 0 && (
|
|
|
<section style={styles.summaryCard}>
|
|
<section style={styles.summaryCard}>
|
|
@@ -759,6 +753,17 @@ export default function App() {
|
|
|
</span>
|
|
</span>
|
|
|
<span style={styles.summaryItemLabel}>Entreprise(s)</span>
|
|
<span style={styles.summaryItemLabel}>Entreprise(s)</span>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+
|
|
|
|
|
+ <div style={styles.summaryItem}>
|
|
|
|
|
+ <span style={styles.summaryNum}>
|
|
|
|
|
+ {yearMode === "global"
|
|
|
|
|
+ ? globalSections.length
|
|
|
|
|
+ : "Varié"}
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <span style={styles.summaryItemLabel}>Année(s)</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
<div style={styles.summaryItem}>
|
|
<div style={styles.summaryItem}>
|
|
|
<span style={styles.summaryNum}>
|
|
<span style={styles.summaryNum}>
|
|
|
{sectionMode === "global"
|
|
{sectionMode === "global"
|
|
@@ -770,6 +775,27 @@ export default function App() {
|
|
|
</div>
|
|
</div>
|
|
|
</section>
|
|
</section>
|
|
|
)}
|
|
)}
|
|
|
|
|
+
|
|
|
|
|
+ {/* 04. PROMPT */}
|
|
|
|
|
+ {selectedCompanies.length == 0 && (
|
|
|
|
|
+ <section style={styles.card}>
|
|
|
|
|
+ <div style={styles.cardHeader}>
|
|
|
|
|
+ <span style={styles.cardBadge}>04</span>
|
|
|
|
|
+ <h2 style={styles.cardTitle}>Prompt d'extraction</h2>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div style={styles.promptWrapper}>
|
|
|
|
|
+ <textarea
|
|
|
|
|
+ style={styles.promptInput}
|
|
|
|
|
+ placeholder="Instructions spécifiques..."
|
|
|
|
|
+ value={prompt}
|
|
|
|
|
+ onChange={(e) => setPrompt(e.target.value)}
|
|
|
|
|
+ rows={4}
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ </section> ) }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|