e80ccb8bdf
Three issues from the v0.2.0 user test:
1. Sides flipped relative to expectation
In our Hebrew/RTL CRM the user reads primary content (the answer or
the hit list) on the visual right and the supporting reference
(the PDF) on the visual left — that's how Hebrew layouts stage
"main + sidebar". v0.1.10's _buildSplitShell forced direction:ltr on
the splitter container (correct, for mouseX math) but laid the
children in the order [primary, handle, reference], which under LTR
put primary on the LEFT and PDF on the RIGHT. Fixed by renaming the
helper params to {primaryHtml, referenceHtml} and ordering the
children as [reference, handle, primary] — visual LEFT is now the
PDF, visual RIGHT is the answer/list. Default split moved from 42%
to 58% so the reference pane (now on the left) keeps the same
absolute width the PDF column had under v0.1.9's bootstrap rows.
2. No way to start a new query
afterRender replays _lastSearch / _lastAsk on every remount, which
means the prior result hangs around forever. Added a "חיפוש חדש" /
"שאלה חדשה" button next to the submit button. clearResults() cancels
any in-flight request (closes the EventSource for ask, drops
_activeSearch reference for search), removes the cached entry from
sessionStorage, empties the results pane, and refocuses the input.
3. Stale results from another session
Cached results now auto-expire after 30 minutes — _loadJson checks
completedAt against STALE_AFTER_MS and silently drops anything
older. So coming back tomorrow the KB tab opens clean instead of
showing yesterday's answer to whatever you asked then.
Refs Task Master #4, #6
64 lines
3.1 KiB
Smarty
64 lines
3.1 KiB
Smarty
<div class="kb-page" dir="rtl">
|
|
<div class="page-header">
|
|
<h3>בסיס ידע — ביטוח לאומי</h3>
|
|
</div>
|
|
|
|
<ul class="nav nav-tabs" style="margin-bottom:12px;">
|
|
<li class="{{#ifEqual mode 'search'}}active{{/ifEqual}}">
|
|
<a href="#" role="button" data-action="switchMode" data-mode="search">חיפוש</a>
|
|
</li>
|
|
<li class="{{#ifEqual mode 'ask'}}active{{/ifEqual}}">
|
|
<a href="#" role="button" data-action="switchMode" data-mode="ask">שאל את שירה</a>
|
|
</li>
|
|
<li class="{{#ifEqual mode 'browse'}}active{{/ifEqual}}">
|
|
<a href="#" role="button" data-action="switchMode" data-mode="browse">עיון</a>
|
|
</li>
|
|
</ul>
|
|
|
|
{{#ifEqual mode 'search'}}
|
|
<div class="kb-search-box" style="margin-bottom:12px;">
|
|
<div class="form-inline" style="display:flex;gap:8px;flex-wrap:wrap;">
|
|
<input type="text" class="form-control" data-name="query"
|
|
placeholder="מונחי חיפוש…"
|
|
style="flex:1 1 320px;min-width:280px;" />
|
|
<select class="form-control" data-name="kind" style="flex:0 0 auto;">
|
|
<option value="any">כל הסוגים</option>
|
|
<option value="law">חוק</option>
|
|
<option value="regulation">תקנות</option>
|
|
<option value="circular">חוזרים</option>
|
|
</select>
|
|
<button type="button" class="btn btn-primary" data-action="submit">חפש</button>
|
|
<button type="button" class="btn btn-default" data-action="clearResults"
|
|
title="התחל חיפוש חדש (מנקה את התוצאות הקודמות)">חיפוש חדש</button>
|
|
</div>
|
|
<div class="small text-muted" style="margin-top:6px;">
|
|
חיפוש Hybrid: וקטורי + מילולי + rerank. מחזיר עד 8 קטעים רלוונטיים.
|
|
</div>
|
|
</div>
|
|
{{/ifEqual}}
|
|
|
|
{{#ifEqual mode 'ask'}}
|
|
<div class="kb-search-box" style="margin-bottom:12px;">
|
|
<div class="form-inline" style="display:flex;gap:8px;flex-wrap:wrap;">
|
|
<input type="text" class="form-control" data-name="query"
|
|
placeholder="שאלה בשפה חופשית…"
|
|
style="flex:1 1 320px;min-width:280px;" />
|
|
<button type="button" class="btn btn-primary" data-action="submit">שאל את שירה</button>
|
|
<button type="button" class="btn btn-default" data-action="clearResults"
|
|
title="התחל שאלה חדשה (מנקה את התשובה הקודמת)">שאלה חדשה</button>
|
|
</div>
|
|
<div class="small text-muted" style="margin-top:6px;">
|
|
שירה תחפש בבסיס הידע ותחזיר תשובה מסוכמת עם ציטוטים.
|
|
</div>
|
|
</div>
|
|
{{/ifEqual}}
|
|
|
|
{{#ifEqual mode 'browse'}}
|
|
<div class="kb-sources panel panel-default" style="padding:12px;">
|
|
<div class="text-muted">טוען מקורות…</div>
|
|
</div>
|
|
{{/ifEqual}}
|
|
|
|
<div class="kb-results" style="margin-top:12px;"></div>
|
|
</div>
|