{% if page == "login" %}
{{ t(request, 'portal.login_header') }}
{% if error %}
{{ error }}
{% endif %} {% if oidc_enabled %} {{ t(request, 'portal.sso_login') }}

{{ t(request, 'lbl.or') }}
{% endif %}
{% elif page == "forgot_password" %}
{{ t(request, 'portal.forgot_header') }}
{% if sent %}
{{ t(request, 'info.reset_sent') }}
{{ t(request, 'btn.back_to_login') }} {% else %} {% if error %}
{{ error }}
{% endif %}

{{ t(request, 'info.forgot_pw_hint') }}

{% endif %}
{% elif page == "reset_password" %}
{{ t(request, 'portal.reset_header') }}
{% if done %}
{{ t(request, 'msg.pw_changed') }}
{{ t(request, 'btn.to_login') }} {% elif not token_valid %}
{{ error or t(request, 'msg.reset_link_invalid') }}
{{ t(request, 'btn.new_reset_link') }} {% else %} {% if error %}
{{ error }}
{% endif %}
{% endif %}
{% elif page == "change_password" %}
{{ t(request, 'portal.pw_change_required') }}

{{ t(request, 'portal.pw_change_hint') }}

{% if error %}
{{ error }}
{% endif %}
{% else %}
{% if flash %}
{{ flash }}
{% endif %} {# ─── DASHBOARD ─────────────────────────────────────────────────────── #} {% if page == "dashboard" %}
{{ t(request, 'page.user_dashboard') }}
{% set daily_pct = (redis.daily_used / budget.daily_limit * 100) if budget.daily_limit else 0 %} {% set month_pct = (redis.monthly_used / budget.monthly_limit * 100) if budget.monthly_limit else 0 %} {% set total_pct = (redis.total_used / budget.total_limit * 100) if budget.total_limit else 0 %}
{{ t(request, 'lbl.today') }}
{{ "{:,}".format(redis.daily_used) }}
{% if budget.daily_limit %}{{ "{:,}".format(budget.daily_limit) }}{% else %}∞{% endif %} {{ t(request, 'lbl.tokens') }} {% if budget.daily_limit %} · {{ "{:,}".format([budget.daily_limit - redis.daily_used, 0]|max) }} {{ t(request, 'portal.remaining_col') | lower }} {% endif %}
{{ "{:,}".format(redis.get('daily_input', 0)) }} In {{ "{:,}".format(redis.get('daily_output', 0)) }} Out
{% if budget.daily_limit %}
{{ "%.1f"|format(daily_pct) }}%
{% else %}
{% endif %}
{{ t(request, 'lbl.this_month') }}
{{ "{:,}".format(redis.monthly_used) }}
{% if budget.monthly_limit %}{{ "{:,}".format(budget.monthly_limit) }}{% else %}∞{% endif %} {{ t(request, 'lbl.tokens') }} {% if budget.monthly_limit %} · {{ "{:,}".format([budget.monthly_limit - redis.monthly_used, 0]|max) }} {{ t(request, 'portal.remaining_col') | lower }} {% endif %}
{{ "{:,}".format(redis.get('monthly_input', 0)) }} In {{ "{:,}".format(redis.get('monthly_output', 0)) }} Out
{% if budget.monthly_limit %}
{{ "%.1f"|format(month_pct) }}%
{% else %}
{% endif %}
{{ t(request, 'lbl.total_budget') }}
{{ "{:,}".format(redis.total_used) }}
{% if budget.total_limit %}{{ "{:,}".format(budget.total_limit) }}{% else %}∞{% endif %} {{ t(request, 'lbl.tokens') }} {% if budget.total_limit %} · {{ "{:,}".format([budget.total_limit - redis.total_used, 0]|max) }} {{ t(request, 'portal.remaining_col') | lower }} {% endif %}
{{ "{:,}".format(redis.get('total_input', 0)) }} In {{ "{:,}".format(redis.get('total_output', 0)) }} Out
{% if budget.total_limit %}
{{ "%.1f"|format(total_pct) }}%
{% endif %}
{% if summary.daily %}
{{ t(request, 'portal.chart_14d') }}
{% endif %}
{{ t(request, 'portal.active_keys') }} {{ t(request, 'portal.manage') }}
{% for k in keys if k.is_active %} {% else %} {% endfor %}
Key-PrefixLabel{{ t(request, 'lbl.last_used') }}
{{ k.key_prefix }}... {{ k.label or '—' }} {{ k.last_used_at[:16] if k.last_used_at else t(request, 'lbl.never') }}
{{ t(request, 'portal.no_keys_hint') | safe }}
{{ t(request, 'portal.my_expert_config') }}
{% if user_templates %} {% for tmpl in user_templates %}
{{ tmpl.name }}
{% if tmpl.description %}

{{ tmpl.description }}

{% endif %} {% if tmpl.experts %} {% for cat, cat_cfg in tmpl.experts.items() %} {% endfor %}
{{ t(request, 'portal.category_col') }}{{ t(request, 'portal.models_col') }}
{{ cat }} {% if cat_cfg.models is defined %} {% for m in cat_cfg.models %} {{ m.model }}@{{ m.endpoint }} {% if m.get('role','primary') == 'always' %}{% elif m.get('role','primary') == 'fallback' %}{% else %}{% endif %} {% endfor %} {% else %} {{ cat_cfg.model }}@{{ cat_cfg.endpoint }} {% endif %}
{% else %}

{{ t(request, 'portal.no_experts') }}

{% endif %} {% endfor %} {% else %}
{{ t(request, 'portal.no_template_assigned') }}
{% endif %}
{% if can_create_templates or can_create_cc_profiles %}
{{ t(request, 'portal.expert_tools_header') }}

{{ t(request, 'portal.expert_tools_desc') | safe }}

{% if can_create_templates %} {{ t(request, 'portal.my_templates_link') }} {% endif %} {% if can_create_cc_profiles %} {{ t(request, 'portal.cc_profiles_link') }} {% endif %}
{% endif %} {# ─── BILLING ───────────────────────────────────────────────────────── #} {% elif page == "billing" %}
{{ t(request, 'page.billing') }}
{% set now_utc = now() if now is defined else none %}
{{ t(request, 'portal.budget_status') }} {{ budget.budget_type or 'subscription' }}
{{ t(request, 'portal.period_col') }}{{ t(request, 'portal.total_col') }}InputOutput{{ t(request, 'portal.limit_col') }}{{ t(request, 'portal.remaining_col') }}{{ t(request, 'portal.progress_col') }}{{ t(request, 'portal.reset_col') }}
{{ t(request, 'portal.period_daily') }} {{ "{:,}".format(redis.daily_used) }} {{ "{:,}".format(redis.get('daily_input', 0)) }} {{ "{:,}".format(redis.get('daily_output', 0)) }} {% if budget.daily_limit %}{{ "{:,}".format(budget.daily_limit) }}{% else %}{% endif %} {% if budget.daily_limit %}{{ "{:,}".format([budget.daily_limit - redis.daily_used, 0]|max) }}{% else %}{% endif %} {% if budget.daily_limit %} {% set pct = (redis.daily_used / budget.daily_limit * 100)|round(1) %}
{{ pct }}% {% endif %}
{{ t(request, 'portal.period_monthly') }} {{ "{:,}".format(redis.monthly_used) }} {{ "{:,}".format(redis.get('monthly_input', 0)) }} {{ "{:,}".format(redis.get('monthly_output', 0)) }} {% if budget.monthly_limit %}{{ "{:,}".format(budget.monthly_limit) }}{% else %}{% endif %} {% if budget.monthly_limit %}{{ "{:,}".format([budget.monthly_limit - redis.monthly_used, 0]|max) }}{% else %}{% endif %} {% if budget.monthly_limit %} {% set pct = (redis.monthly_used / budget.monthly_limit * 100)|round(1) %}
{{ pct }}% {% endif %}
{{ t(request, 'portal.period_total') }} {{ "{:,}".format(redis.total_used) }} {{ "{:,}".format(redis.get('total_input', 0)) }} {{ "{:,}".format(redis.get('total_output', 0)) }} {% if budget.total_limit %}{{ "{:,}".format(budget.total_limit) }}{% else %}{% endif %} {% if budget.total_limit %}{{ "{:,}".format([budget.total_limit - redis.total_used, 0]|max) }}{% else %}{% endif %} {{ t(request, 'portal.no_reset') }}
{% if summary.by_model %}
{{ t(request, 'portal.usage_by_model') }}
{% for row in summary.by_model %} {% endfor %}
{{ t(request, 'portal.col_model') }}{{ t(request, 'portal.filter_mode') }}{{ t(request, 'portal.total_col') }}InputOutput{{ t(request, 'portal.requests_col') }}
{{ row.model }} {{ row.moe_mode }} {{ "{:,}".format(row.tokens) }} {{ "{:,}".format(row.get('prompt_tokens', 0)) }} {{ "{:,}".format(row.get('completion_tokens', 0)) }} {{ row.requests }}
{% endif %}
{{ t(request, 'portal.total_requests') }}
{{ summary.total.requests }}
{{ t(request, 'portal.total_tokens_card') }}
{{ "{:,}".format(summary.total.tokens) }}
{{ "{:,}".format(summary.total.get('prompt_tokens', 0)) }} In {{ "{:,}".format(summary.total.get('completion_tokens', 0)) }} Out
{{ t(request, 'portal.month_tokens') }}
{{ "{:,}".format(summary.month.tokens) }}
{{ "{:,}".format(summary.month.get('prompt_tokens', 0)) }} In {{ "{:,}".format(summary.month.get('completion_tokens', 0)) }} Out
{# ─── USAGE HISTORY ─────────────────────────────────────────────────── #} {% elif page == "usage" %}
{{ t(request, 'page.usage') }}
Live Monitor 0 active
Active Requests

No active requests


Recently Completed 0

No recent activity

{% for row in usage %} {% else %} {% endfor %}
{{ t(request, 'portal.col_timestamp') }} {{ t(request, 'portal.col_session') }} {{ t(request, 'portal.col_model') }} {{ t(request, 'portal.col_api_key') }} {{ t(request, 'portal.filter_mode') }} {{ t(request, 'portal.col_prompt') }} {{ t(request, 'portal.col_completion') }} {{ t(request, 'portal.total_col') }} Status
{{ row.requested_at[:16].replace("T"," ") }} {{ (row.session_id or '')[:8] }}…
{{ row.model }} {% if row.notes %} {{ row.notes }} {% else %} {% endif %}
{% if row.key_label %} {{ row.key_label }} {% elif row.key_prefix %} …{{ row.key_prefix[-6:] }} {% else %} {% endif %} {{ row.moe_mode }} {{ "{:,}".format(row.prompt_tokens) }} {{ "{:,}".format(row.completion_tokens) }} {{ "{:,}".format(row.total_tokens) }} {% if row.status == "ok" %} ok {% else %} {{ row.status[:8] }} {% endif %}
{{ t(request, 'portal.no_entries') }}
{# ─── API KEYS ──────────────────────────────────────────────────────── #} {% elif page == "keys" %}
{{ t(request, 'page.api_keys') }}
{% if request.session.get("new_api_key") %}
{{ t(request, 'portal.new_key_banner') }}:
{{ request.session.get("new_api_key") }}
{% endif %}
{{ t(request, 'portal.my_api_keys') }}
{% for k in keys %} {% else %} {% endfor %}
Key-PrefixLabelCC Profile{{ t(request, 'portal.col_created') }}{{ t(request, 'lbl.last_used') }}Status
{{ k.key_prefix }}... {{ k.label or '—' }} {% if available_cc_profiles %} {% else %} {% endif %} {{ k.created_at[:10] }} {{ k.last_used_at[:16] if k.last_used_at else t(request, 'lbl.never') }} {% if k.is_active %} {{ t(request, 'status.active') }} {% else %} {{ t(request, 'status.locked') }} {% endif %} {% if k.is_active %}
{% endif %}
{{ t(request, 'portal.no_api_keys') }}
{{ t(request, 'portal.create_key_title') }}

{{ t(request, 'portal.key_note') }}

{% set api_base = public_api_url or "https://api.moe-intern/v1" %}
{{ t(request, 'portal.api_usage_title') }} {% if public_api_url %} {{ public_api_url }} {% endif %}

{{ t(request, 'portal.api_bearer_desc') }}

curl {{ api_base }}/chat/completions \
  -H "Authorization: Bearer moe-sk-xxxxxxxx..." \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen2.5-coder:32b","messages":[{"role":"user","content":"Hallo!"}]}'

{{ t(request, 'portal.api_x_key_desc') | safe }}

curl {{ api_base }}/messages \
  -H "x-api-key: moe-sk-xxxxxxxx..." \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen2.5-coder:32b","max_tokens":1024,"messages":[{"role":"user","content":"Hallo!"}]}'
{# ─── PROFILE ───────────────────────────────────────────────────────── #} {% elif page == "profile" %}
{{ t(request, 'page.profile_pw') }}
{{ t(request, 'portal.my_data') }}
{# ── Account ── #}

{# ── Persönliche Daten / Personal data ── #}

{{ t(request, 'section.personal_data') }}


{# ── Passwort ── #}

{{ t(request, 'portal.change_pw_hint') }}

{{ t(request, 'portal.timezone_header') }}

{{ t(request, 'portal.timezone_desc') }}

{{ t(request, 'portal.saved') }}
{{ t(request, 'portal.alerts_header') }}
50%75%99%
{{ t(request, 'portal.alert_email_hint') }}
{# ─── MEMORY PREFERENCES ───────────────────────────────────────────── #}
{{ t(request, 'portal.memory_header') }}

{{ t(request, 'portal.memory_desc') }}

{{ t(request, 'portal.memory_prefer_fresh_hint') }}
{{ t(request, 'portal.memory_share_with_team_hint') }}
{# ─── MY TEMPLATES ─────────────────────────────────────────────────── #} {% elif page == "templates" %}
{{ t(request, 'portal.my_templates_title') }}

{{ t(request, 'portal.my_templates_desc') | safe }}

{% if granted_templates %}
{{ t(request, 'portal.admin_templates') }} {{ granted_templates|length }} {{ t(request, 'portal.admin_read_only') }}
{% for tmpl in granted_templates %}
{{ tmpl.name }} {% if tmpl.description %}{{ tmpl.description }}{% endif %}
ID: {{ tmpl.id }}
{% endfor %}
{% endif %}
{{ t(request, 'portal.own_count').replace('{n}', my_templates|length|string) }}
{% for tmpl in my_templates %}
{{ tmpl.name }} {% if tmpl.description %}{{ tmpl.description }}{% endif %} {% if tmpl.get('is_active', 1) == 0 %} {{ t(request, 'portal.deactivated') }} {% endif %}
ID: {{ tmpl.id }}
{% if tmpl.get('is_active', 1) != 0 %} {% endif %}
{% else %}
{{ t(request, 'portal.no_user_templates') }}
{% endfor %}
{{ t(request, 'portal.tmpl_edit_title') }}
{{ t(request, 'portal.tmpl_overrides_lbl') }} ({{ t(request, 'portal.tmpl_overrides_hint') }})
ctx (tokens)
ctx (tokens)
{{ t(request, 'section.pipeline_toggles') if t(request,'section.pipeline_toggles') != 'section.pipeline_toggles' else 'Pipeline Toggles' }}
{{ t(request, 'section.context_window') if t(request,'section.context_window') != 'section.context_window' else 'Context Window' }}
{{ t(request, 'tip.compression_toggle') if t(request,'tip.compression_toggle') != 'tip.compression_toggle' else 'Limits context size to prevent token overflow.' }}
0 = auto
0 = {{ t(request, 'label.global_default') if t(request,'label.global_default') != 'label.global_default' else 'global default' }}
0 = {{ t(request, 'label.global_default') if t(request,'label.global_default') != 'label.global_default' else 'global default' }}
{{ t(request, 'portal.tmpl_expert_cats') }}
{# ─── CC PROFILES ──────────────────────────────────────────────────── #} {% elif page == "cc_profiles" %}
{{ t(request, 'portal.my_cc_profiles') }}

{{ t(request, 'portal.cc_profiles_desc') }}

{% if my_cc_profiles %}
{% for prof in my_cc_profiles %} {% set cfg = prof.config %}
{{ prof.name }} {% if prof.is_default %} {{ t(request, 'portal.cc_default_badge') }} {% endif %} {% if prof.source == 'admin' %} {{ t(request, 'portal.cc_granted_badge') }} {% endif %} {% if prof.get('is_active', 1) == 0 %} {{ t(request, 'portal.deactivated') }} {% endif %}
ID: {{ prof.id }}
{% if not prof.is_default %} {% else %} {% endif %} {% if prof.editable and prof.get('is_active', 1) != 0 %} {% endif %} {% if prof.editable %} {% endif %}
{{ cfg.moe_mode or 'native' }} {{ cfg.tool_model or '—' }}@{{ cfg.tool_endpoint or '—' }} {% if cfg.tool_choice and cfg.tool_choice != 'auto' %} choice: {{ cfg.tool_choice }} {% endif %} {% if cfg.stream_think %} stream_think {% endif %}
{% if cfg.system_prompt_prefix %}
{{ cfg.system_prompt_prefix[:80] }}{% if cfg.system_prompt_prefix|length > 80 %}…{% endif %}
{% endif %}
{% endfor %}
{% else %}

{{ t(request, 'portal.no_cc_profiles') }}

{% endif %} {% elif page == "connections" %}
{{ t(request, 'portal.my_connections_title') }}

{{ t(request, 'portal.my_connections_desc') | safe }}

{% if connections %}
{% for conn in connections %}
{{ conn.display_name or conn.name }} {{ conn.name }} {{ conn.api_type }}
{{ conn.url }}
{{ t(request, 'portal.conn_usage_hint') | replace('{name}', conn.name) | safe }}
{% endfor %}
{% else %}

{{ t(request, 'portal.my_connections_desc') | safe }}

{% endif %} {% elif page == "audit_log" %}
{{ t(request, 'portal.audit_log.title') }}

{{ t(request, 'portal.audit_log.subtitle') }}

{% if not log_enabled %}
{{ t(request, 'portal.audit_log.disabled') }}
{% else %}
{{ t(request, 'portal.audit_log.col_time') }} {{ t(request, 'portal.audit_log.col_model') }} {{ t(request, 'portal.audit_log.col_mode') }} {{ t(request, 'portal.audit_log.col_prompt') }} {{ t(request, 'portal.audit_log.col_tokens') }} {{ t(request, 'portal.audit_log.col_latency') }}
Loading…
{{ t(request, 'portal.audit_log.retention_title') }}

{{ t(request, 'portal.audit_log.retention_hint').replace('{max}', retention_max|string) }}

{{ t(request, 'portal.audit_log.retention_days') }}
{% endif %} {% endif %}
{% endif %} {% if page == "dashboard" and summary.daily %} {% endif %}