| {{ t('analytics_col_project') }} | {{ t('analytics_col_sessions') }} | {{ t('analytics_col_handoff') }} | {{ t('analytics_col_dissat') }} |
|---|---|---|---|
| {{ proj.project_id }} | {{ proj.sessions }} ↑{{ proj.sessions_change_pct }}% ↓{{ Math.abs(proj.sessions_change_pct) }}% | {{ proj.handoff_rate }}% | {{ proj.dissatisfaction_rate }}% |
|
{{ proj.project_id }} {{ t('analytics_detail') }}
{{ t('loading') }}
{{ ['today', '1d'].includes(analytics.period) ? t('analytics_hourly_sessions') : t('analytics_daily_sessions') }}
{{ t('analytics_response_dist') }}
{{ t('analytics_session_summary') }}
{{ t('analytics_total') }}: {{ analytics.detail.session_summary.total }} |
AI: {{ analytics.detail.session_summary.ai_handled }}
({{ analytics.detail.session_summary.total > 0 ? Math.round(analytics.detail.session_summary.ai_handled / analytics.detail.session_summary.total * 100) : 0 }}%) |
{{ t('analytics_human') }}: {{ analytics.detail.session_summary.human_handled }} |
{{ t('analytics_dissat') }}: {{ analytics.detail.session_summary.dissatisfied }}
({{ analytics.detail.session_summary.dissatisfaction_rate }}%)
↑{{ analytics.detail.session_summary.dissat_change }}%
↓{{ Math.abs(analytics.detail.session_summary.dissat_change) }}%
|
|||
| {{ t('analytics_col_project') }} | {{ t('vip_diag_total') }} | {{ t('vip_diag_uid') }} | {{ t('vip_diag_known') }} | {{ t('vip_diag_high') }} | {{ t('vip_diag_low') }} | {{ t('vip_diag_missing') }} | {{ t('vip_diag_no_uid') }} |
|---|---|---|---|---|---|---|---|
| {{ row.project_id }} | {{ row.total_sessions }} | {{ row.uid_sessions }} | {{ row.vip_known_sessions }} | {{ row.high_vip_sessions }} ≥{{ row.vip_threshold }} | {{ row.low_vip_sessions }} | {{ row.vip_missing_sessions }} | {{ row.no_uid_sessions }} |
| {{ t('agent_perf_col_agent') }} | {{ t('agent_perf_col_sessions') }} | {{ t('agent_perf_col_rating') }} | {{ t('agent_perf_col_dissat') }} | {{ t('agent_perf_col_unresolved') }} | {{ t('agent_perf_col_hours') }} |
|---|---|---|---|---|---|
| {{ ag.agent_username }} | {{ ag.session_count }} | {{ formatRating(ag) }} | {{ ag.dissatisfied }} | {{ ag.unresolved }} | {{ formatResponseTimeSummary(ag.response_time_dist) }} |
{{ ppJson(item.ocr_result_json).text || ppJson(item.ocr_result_json).error || '-' }}
{{ t('engineering_waiting') }}
{{ item.engineering_confirmation.correct_answer }}
{{ item.engineering_confirmation.reason }}
| {{ t('auto_change_col_landing') }} | {{ t('auto_change_col_question') }} | {{ t('auto_change_col_source') }} | {{ t('auto_change_col_time') }} | {{ t('auto_change_col_state') }} | ||
|---|---|---|---|---|---|---|
| {{ t('auto_change_landing_' + row.landing) }} | {{ row.target_question || '-' }} | #{{ row.annotation_id }} · {{ row.project_id }} | {{ rvTime(row.created_at) }} |
{{ t('auto_change_state_undone') }} · {{ row.undone_by }}
{{ t('auto_change_state_refused') }}
{{ t('auto_change_state_active') }}
{{ row.undo_note }}
|
||
|
{{ t('effect_loading') }}
{{ t('effect_hint') }}
{{ t('effect_source_question') }}: {{ effectByChange[row.id].user_message }}
{{ t('effect_not_comparable') }}
{{ side === 'before' ? t('effect_before') : t('effect_after') }}
{{ rvTime(effectByChange[row.id][side].start) }} → {{ rvTime(effectByChange[row.id][side].end) }}
{{ effectByChange[row.id][side].similar_messages }}
{{ t('effect_similar') }}
{{ effectByChange[row.id][side].fail_annotated }}
{{ t('effect_fail') }}
{{ t('effect_partial', {
days: effectByChange[row.id][side].covered_days,
window: effectByChange[row.id][side].window_days }) }}
{{ t('effect_elapsed', {
days: effectByChange[row.id][side].elapsed_days,
window: effectByChange[row.id][side].window_days }) }}
{{ t('effect_complete') }}
{{ t('effect_threshold') }} {{ effectByChange[row.id].similarity_threshold }}
· {{ t('effect_retention', { days: effectByChange[row.id].retention_days }) }}
|
||||||
{{ annDisp(a).entry_text }}
| {{ t('col_name') }} | Chat ID | {{ t('col_role') }} | {{ t('col_language') }} | {{ t('col_status') }} | {{ t('col_projects') }} | {{ t('col_actions') }} |
|---|---|---|---|---|---|---|
| {{ user.name }} | {{ user.chat_id }} | {{ t('role_' + user.role) || user.role }} | — | {{ user.online_status === 'online' ? t('status_online') : t('status_offline') }} — | {{ t('no_projects') }} | |
{{ t('edit_projects_for') }} {{ user.name }} |
||||||