victorafarias commited on
Commit
1f56a52
·
1 Parent(s): 411fbac

Correções e evoluções

Browse files
Files changed (1) hide show
  1. templates/index.html +14 -19
templates/index.html CHANGED
@@ -8,18 +8,14 @@
8
  </head>
9
  <body>
10
 
11
- <!-- Loader Overlay com Barra de Progresso -->
12
  <div id="loader-overlay" style="display: none;">
13
  <div class="loader-content">
14
  <div class="loader-spinner"></div>
15
  <p id="loader-message">Processando sua solicitação...</p>
16
- <div class="progress-bar-container">
17
- <div id="progress-bar" class="progress-bar"></div>
18
- </div>
19
  </div>
20
  </div>
21
 
22
- <!-- Novo Botão Flutuante de Merge -->
23
  <button id="merge-btn" class="floating-merge-btn" style="display: none;">Processar Merge</button>
24
 
25
  <div class="container">
@@ -29,13 +25,9 @@
29
  <p id="flow-description">GROK ➔ Claude Sonnet ➔ Gemini</p>
30
  </div>
31
  <div class="controls-container">
32
- <!-- Novo Seletor de Modo de Processamento -->
33
  <div class="mode-toggle" title="A versão 'Hierárquica' gerará um único no texto que passará por revisão em duas instâncias. Na versão 'Atômica', serão gerados 3 textos, um em cada modelo de IA; e depois um 4º texto será gerado fazendo um texto final consolidado dessas 3 versões.">
34
  <span>Hierárquico</span>
35
- <label class="switch">
36
- <input type="checkbox" id="processing-mode-switch">
37
- <span class="slider round"></span>
38
- </label>
39
  <span>Atômico</span>
40
  </div>
41
  <div class="mode-toggle">
@@ -49,7 +41,6 @@
49
 
50
  <div id="error-box-container"></div>
51
 
52
- <!-- Formulários -->
53
  <div id="real-form-container">
54
  <form id="request-form-real">
55
  <label for="solicitacao_usuario">Digite sua solicitação (ou arraste arquivos aqui):</label>
@@ -66,22 +57,21 @@
66
  </form>
67
  </div>
68
 
69
- <!-- Resultados -->
70
  <div id="results-container" class="results-container" style="display: none;">
71
  <div class="result-column"><div class="column-header"><h2>GROK</h2><button class="copy-btn" onclick="copyToClipboard('grok-output')">Copiar</button></div><div class="output-box" id="grok-output"></div></div>
72
  <div class="result-column"><div class="column-header"><h2>Claude Sonnet</h2><button class="copy-btn" onclick="copyToClipboard('sonnet-output')">Copiar</button></div><div class="output-box" id="sonnet-output"></div></div>
73
  <div class="result-column"><div class="column-header"><h2>Gemini</h2><button class="copy-btn" onclick="copyToClipboard('gemini-output')">Copiar</button></div><div class="output-box" id="gemini-output"></div></div>
74
  </div>
75
 
76
- <!-- Novo Container para Resultado Final do Merge -->
77
  <div id="final-result-container" style="display: none;">
78
- <h2>Texto Final</h2>
79
  <div class="output-box" id="final-output"></div>
80
  </div>
81
  </div>
82
 
83
  <script>
84
- // --- Variáveis Globais e Lógica de UI ---
85
  const processingModeSwitch = document.getElementById('processing-mode-switch');
86
  const modeSwitch = document.getElementById('mode-switch');
87
  const realContainer = document.getElementById('real-form-container');
@@ -104,10 +94,10 @@
104
  mockContainer.style.display = this.checked ? 'block' : 'none';
105
  });
106
  processingModeSwitch.addEventListener('change', function() {
107
- document.getElementById('flow-description').textContent = this.checked ? "GROK | Claude Sonnet | Gemini" : "GROK ➔ Claude Sonnet ➔ Gemini";
108
  });
109
 
110
- // --- Lógica de Upload ---
111
  ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
112
  textarea.addEventListener(eventName, preventDefaults, false);
113
  document.body.addEventListener(eventName, preventDefaults, false);
@@ -141,7 +131,7 @@
141
  });
142
  }
143
 
144
- // --- Lógica de Submissão Principal ---
145
  document.getElementById('request-form-real').addEventListener('submit', handleFormSubmit);
146
  document.getElementById('request-form-mock').addEventListener('submit', handleFormSubmit);
147
 
@@ -243,7 +233,7 @@
243
  }
244
  });
245
 
246
- // --- Função de Processamento de Stream Unificada ---
247
  function processStreamData(data, isMerge) {
248
  if (data.error) {
249
  showError(data.error);
@@ -255,7 +245,12 @@
255
  progressBar.style.width = data.progress + '%';
256
 
257
  if (isMerge && data.final_result) {
 
258
  finalOutput.innerHTML = data.final_result.content;
 
 
 
 
259
  finalResultContainer.style.display = 'block';
260
  } else if (data.partial_result) {
261
  resultsContainer.style.display = 'flex';
 
8
  </head>
9
  <body>
10
 
 
11
  <div id="loader-overlay" style="display: none;">
12
  <div class="loader-content">
13
  <div class="loader-spinner"></div>
14
  <p id="loader-message">Processando sua solicitação...</p>
15
+ <div class="progress-bar-container"><div id="progress-bar" class="progress-bar"></div></div>
 
 
16
  </div>
17
  </div>
18
 
 
19
  <button id="merge-btn" class="floating-merge-btn" style="display: none;">Processar Merge</button>
20
 
21
  <div class="container">
 
25
  <p id="flow-description">GROK ➔ Claude Sonnet ➔ Gemini</p>
26
  </div>
27
  <div class="controls-container">
 
28
  <div class="mode-toggle" title="A versão 'Hierárquica' gerará um único no texto que passará por revisão em duas instâncias. Na versão 'Atômica', serão gerados 3 textos, um em cada modelo de IA; e depois um 4º texto será gerado fazendo um texto final consolidado dessas 3 versões.">
29
  <span>Hierárquico</span>
30
+ <label class="switch"><input type="checkbox" id="processing-mode-switch"><span class="slider round"></span></label>
 
 
 
31
  <span>Atômico</span>
32
  </div>
33
  <div class="mode-toggle">
 
41
 
42
  <div id="error-box-container"></div>
43
 
 
44
  <div id="real-form-container">
45
  <form id="request-form-real">
46
  <label for="solicitacao_usuario">Digite sua solicitação (ou arraste arquivos aqui):</label>
 
57
  </form>
58
  </div>
59
 
 
60
  <div id="results-container" class="results-container" style="display: none;">
61
  <div class="result-column"><div class="column-header"><h2>GROK</h2><button class="copy-btn" onclick="copyToClipboard('grok-output')">Copiar</button></div><div class="output-box" id="grok-output"></div></div>
62
  <div class="result-column"><div class="column-header"><h2>Claude Sonnet</h2><button class="copy-btn" onclick="copyToClipboard('sonnet-output')">Copiar</button></div><div class="output-box" id="sonnet-output"></div></div>
63
  <div class="result-column"><div class="column-header"><h2>Gemini</h2><button class="copy-btn" onclick="copyToClipboard('gemini-output')">Copiar</button></div><div class="output-box" id="gemini-output"></div></div>
64
  </div>
65
 
66
+ <!-- Container do Resultado Final com ID no título -->
67
  <div id="final-result-container" style="display: none;">
68
+ <h2 id="final-result-title">Texto Final</h2>
69
  <div class="output-box" id="final-output"></div>
70
  </div>
71
  </div>
72
 
73
  <script>
74
+ // --- Variáveis Globais e Lógica de UI (sem alterações) ---
75
  const processingModeSwitch = document.getElementById('processing-mode-switch');
76
  const modeSwitch = document.getElementById('mode-switch');
77
  const realContainer = document.getElementById('real-form-container');
 
94
  mockContainer.style.display = this.checked ? 'block' : 'none';
95
  });
96
  processingModeSwitch.addEventListener('change', function() {
97
+ document.getElementById('flow-description').textContent = this.checked ? "GROK | Claude Sonnet | Gemini (Paralelo)" : "GROK ➔ Claude Sonnet ➔ Gemini";
98
  });
99
 
100
+ // --- Lógica de Upload (sem alterações) ---
101
  ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
102
  textarea.addEventListener(eventName, preventDefaults, false);
103
  document.body.addEventListener(eventName, preventDefaults, false);
 
131
  });
132
  }
133
 
134
+ // --- Lógica de Submissão Principal (sem alterações) ---
135
  document.getElementById('request-form-real').addEventListener('submit', handleFormSubmit);
136
  document.getElementById('request-form-mock').addEventListener('submit', handleFormSubmit);
137
 
 
233
  }
234
  });
235
 
236
+ // --- Função de Processamento de Stream ATUALIZADA ---
237
  function processStreamData(data, isMerge) {
238
  if (data.error) {
239
  showError(data.error);
 
245
  progressBar.style.width = data.progress + '%';
246
 
247
  if (isMerge && data.final_result) {
248
+ const finalTitle = document.getElementById('final-result-title');
249
  finalOutput.innerHTML = data.final_result.content;
250
+ // ATUALIZAÇÃO: Modifica o título com a contagem de palavras
251
+ if (data.final_result.word_count) {
252
+ finalTitle.textContent = `Texto Final (${data.final_result.word_count} palavras)`;
253
+ }
254
  finalResultContainer.style.display = 'block';
255
  } else if (data.partial_result) {
256
  resultsContainer.style.display = 'flex';