feat(5.20): US-004/005/006/009 ingestie+API+worker+import pe mediu RAR
US-004: rezolva_rar_env (cerere>default cont>ancora globala) + MediuIndisponibil + cod RAR_MEDIU_INDISPONIBIL. US-005: camp rar_env pe POST /v1/prezentari + /valideaza (Literal), echo in SubmissionResult/ValidareResult/GET, build_key + INSERT env-aware. US-006: AccountSessions re-cheiat (account_id, rar_env); RarClient base_url per env; creds din slotul env; purge + recover_orphans scoped pe env (E1/1a, 1b/E6); claim_one propaga rar_env (1c/E8); keepalive pe ancora globala (M2). US-009: selector mediu la import (>=2 medii), eticheta la 1, banner la 0; commit seteaza rar_env pe submissions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,14 @@
|
||||
Preview —
|
||||
<span class="muted" style="font-weight:400;">{{ filename or ("import #" ~ import_id) }}</span>
|
||||
</h2>
|
||||
{# Badge mediu RAR (US-009): vizibil intotdeauna in preview (claritate tinta) #}
|
||||
{% if rar_env %}
|
||||
<span class="pill" style="font-size:var(--fs-xs);
|
||||
{% if rar_env == 'prod' %}background:color-mix(in srgb,#B4452F 15%,var(--card)); border-color:#B4452F; color:#B4452F; font-weight:700;
|
||||
{% else %}background:color-mix(in srgb,var(--accent) 12%,var(--card)); border-color:var(--accent); color:var(--accent);{% endif %}">
|
||||
{{ "PRODUCTIE" if rar_env == "prod" else "Testare" }}
|
||||
</span>
|
||||
{% endif %}
|
||||
<span class="muted" style="margin-left:auto; font-size:var(--fs-sm);">{{ total }} randuri</span>
|
||||
</div>
|
||||
|
||||
@@ -178,6 +186,8 @@
|
||||
hx-target="#import-section"
|
||||
hx-swap="outerHTML">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token or '' }}">
|
||||
{# Mediu RAR ales la upload — propagar la commit (US-009) #}
|
||||
<input type="hidden" name="rar_env" value="{{ rar_env or '' }}">
|
||||
<div class="sticky-bar">
|
||||
<div style="flex:1; min-width:280px;">
|
||||
<!-- Banner declarant — direct deasupra input-ului N -->
|
||||
|
||||
@@ -32,6 +32,38 @@
|
||||
hx-indicator="#upload-spinner">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token or '' }}">
|
||||
|
||||
{# Indicator mediu RAR (US-009, PRD 5.20): vizibil inainte de drop-zone #}
|
||||
{% set medii_rar = medii | default([]) %}
|
||||
{% if medii_rar | length == 0 %}
|
||||
{# Banner avertisment — non-blocant (upload continua; commit foloseste ancora globala) #}
|
||||
<div style="margin-bottom:10px; padding:8px 14px; border-radius:6px;
|
||||
background:color-mix(in srgb, var(--warn, #e6b34a) 12%, var(--card));
|
||||
border:1px solid var(--warn, #e6b34a); font-size:13px;" role="note">
|
||||
<strong>Niciun mediu RAR configurat.</strong>
|
||||
Trimiterea va folosi configuratia globala. Pentru a activa Testare sau Productie,
|
||||
<a href="?tab=cont" style="color:var(--accent);">configureaza credentialele RAR</a>.
|
||||
</div>
|
||||
{% elif medii_rar | length == 1 %}
|
||||
{# Eticheta statica (un singur mediu disponibil) #}
|
||||
<input type="hidden" name="rar_env" value="{{ medii_rar[0] }}">
|
||||
<div style="margin-bottom:10px; font-size:var(--fs-sm); color:var(--muted);">
|
||||
Mediu RAR:
|
||||
<strong>{{ "Testare" if medii_rar[0] == "test" else "Productie" }}</strong>
|
||||
</div>
|
||||
{% else %}
|
||||
{# Selector (doua medii disponibile) #}
|
||||
<div style="margin-bottom:10px; display:flex; align-items:center; gap:10px;">
|
||||
<label for="rar-env-select"
|
||||
style="font-size:var(--fs-sm); color:var(--muted); white-space:nowrap;">
|
||||
Mediu RAR:
|
||||
</label>
|
||||
<select id="rar-env-select" name="rar_env">
|
||||
<option value="test" {% if env_default == "test" %}selected{% endif %}>Testare</option>
|
||||
<option value="prod" {% if env_default == "prod" %}selected{% endif %}>Productie</option>
|
||||
</select>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if sheets %}
|
||||
<div style="margin-bottom:12px;">
|
||||
<label for="sheet-select"
|
||||
|
||||
Reference in New Issue
Block a user