Add committee position field to analyst template and fix UI

- Add "עמדת ועדת הערר" placeholder to legal-analyst agent template
  for each legal issue, to be filled by the chair as guidance for the
  writing agent
- Fix green checkmark not showing for proofread documents (treat
  'proofread' status same as 'completed')
- Show time alongside date in local files listing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-09 18:00:01 +00:00
parent b409f1c7eb
commit ecda95d610
2 changed files with 8 additions and 4 deletions

View File

@@ -97,6 +97,7 @@ tools:
- **חולשות** — מה חלש? מה לא מגובה בראיות? - **חולשות** — מה חלש? מה לא מגובה בראיות?
- **הזדמנויות** — איפה יש פתח? מה הוועדה יכולה להישען עליו? - **הזדמנויות** — איפה יש פתח? מה הוועדה יכולה להישען עליו?
6. **שאלות משפטיות** — צמד שאלות (ראה שלב 4) 6. **שאלות משפטיות** — צמד שאלות (ראה שלב 4)
7. **עמדת ועדת הערר** — שדה ריק שיו"ר הוועדה ימלא ידנית. **חובה להוסיף לכל סוגיה!** עמדה זו תשמש כהנחיה מחייבת לסוכן הכתיבה.
### שלב 4: הפקת שאלות מחקר ### שלב 4: הפקת שאלות מחקר
@@ -165,7 +166,7 @@ tools:
1. ... 1. ...
## 5. טענות סף ## 5. טענות סף
[אם קיימות — כולל שאלות משפטיות לכל טענה] [אם קיימות — כולל שאלות משפטיות + עמדת ועדת הערר לכל טענה]
## 6. סוגיות להכרעה ## 6. סוגיות להכרעה
@@ -193,6 +194,9 @@ tools:
**תקדימים מהקורפוס הפנימי:** **תקדימים מהקורפוס הפנימי:**
- [אם נמצאו] - [אם נמצאו]
**עמדת ועדת הערר:**
[ימולא ע"י יו"ר הוועדה — עמדה/הנחיה לגבי סוגיה זו שתשמש את סוכן הכתיבה]
--- ---
### סוגיה 2: ... ### סוגיה 2: ...

View File

@@ -871,7 +871,7 @@ async function loadCaseView(caseNumber) {
</div>`; </div>`;
for (const doc of groups[type]) { for (const doc of groups[type]) {
let statusHtml; let statusHtml;
if (doc.extraction_status === 'completed') { if (doc.extraction_status === 'completed' || doc.extraction_status === 'proofread') {
statusHtml = '<span class="doc-status completed">&#10003;</span>'; statusHtml = '<span class="doc-status completed">&#10003;</span>';
} else if (doc.extraction_status === 'processing') { } else if (doc.extraction_status === 'processing') {
statusHtml = '<span class="doc-status processing"></span>'; statusHtml = '<span class="doc-status processing"></span>';
@@ -891,7 +891,7 @@ async function loadCaseView(caseNumber) {
document.getElementById('caseDocsList').innerHTML = html; document.getElementById('caseDocsList').innerHTML = html;
// Auto-refresh while documents are still processing // Auto-refresh while documents are still processing
if (data.documents?.some(d => d.extraction_status !== 'completed')) { if (data.documents?.some(d => d.extraction_status !== 'completed' && d.extraction_status !== 'proofread')) {
if (!window._docPollTimer) { if (!window._docPollTimer) {
window._docPollTimer = setInterval(() => loadCaseView(caseNumber), 5000); window._docPollTimer = setInterval(() => loadCaseView(caseNumber), 5000);
} }
@@ -940,7 +940,7 @@ async function loadLocalFiles(caseNumber) {
<div class="local-file-group-header">${FOLDER_LABELS[folder] || folder} (${data[folder].length})</div>`; <div class="local-file-group-header">${FOLDER_LABELS[folder] || folder} (${data[folder].length})</div>`;
for (const f of data[folder]) { for (const f of data[folder]) {
const date = new Date(f.modified_at * 1000); const date = new Date(f.modified_at * 1000);
const dateStr = date.toLocaleDateString('he-IL'); const dateStr = date.toLocaleDateString('he-IL') + ' ' + date.toLocaleTimeString('he-IL', {hour: '2-digit', minute: '2-digit'});
const url = API + '/cases/' + encodeURIComponent(caseNumber) + '/local-files/' + encodeURIComponent(folder) + '/' + encodeURIComponent(f.filename); const url = API + '/cases/' + encodeURIComponent(caseNumber) + '/local-files/' + encodeURIComponent(folder) + '/' + encodeURIComponent(f.filename);
html += `<a href="${url}" target="_blank" style="text-decoration:none;color:inherit"> html += `<a href="${url}" target="_blank" style="text-decoration:none;color:inherit">
<div class="local-file-item"> <div class="local-file-item">