{% import '_macros.html' as ui %}
{% if message %}
{{ message }}
{% endif %}
{# US-005 (5.5): antet standard + link Ajutor ca
nativ (fara JS). Toata proza care inainte se repeta inline (scopul maparilor, Auto/Manual) traieste acum AICI, o singura data, ascunsa implicit. #} {# US-010: sectiunea de ajutor (details.ajutor-mapari) eliminata. Empty-state „Nicio operatie nemapata" eliminat — sectiunea ramane goala (fara text). #}

De rezolvat

{% if pending %}
{% for e in pending %} {% set top = e.suggestions[0] if e.suggestions else None %} {% set preselect = top.cod_prestatie if (top and top.score >= 60) else '' %} {# data-dt-row = haystack de cautare (randul contine un {% endfor %}
Operatie Sugestii Cod RAR In coada
{{ e.cod_op_service }} {{ e.blocked }} blocate
{{ e.denumire or '(fara denumire)' }}
{% if e.suggestions %} {% for s in e.suggestions[:3] %} {{ s.cod_prestatie }} ({{ s.score|round|int }}%){% if not loop.last %}, {% endif %} {% endfor %} {% else %}—{% endif %} {{ ui.autosend_toggle(form_id="map-rez-" ~ loop.index, checked=True) }}
{% endif %}

Mapari operatii salvate

{% if not saved_mappings %}
Nicio mapare salvata inca. Pe masura ce mapezi operatii, ele apar aici si le poti edita oricand.
{% else %} {# US-005 (5.5): proza explicativa mutata in panoul Ajutor de la "De rezolvat" (o singura data). #}
{% for m in saved_mappings %} {# data-dt-row = haystack de cautare (randul contine un {% endfor %}
Operatie Cod RAR In coada Actiuni
{{ m.cod_op_service }}
acum: {{ m.cod_prestatie }}{% if m.nume_prestatie %} — {{ m.nume_prestatie }}{% endif %}
{{ ui.autosend_toggle(form_id="map-salv-" ~ loop.index, checked=m.auto_send) }} {# US-011: butoane icon mereu vizibile (fara kebab). SVG aria-hidden; aria-label pe buton. data-dirty-form e citit de JS din base.html: la schimbarea select-ului din acelasi rand, JS adauga clasa "dirty" pe butonul de salvare (fundal --accent = modificari nesalvate). #}
{% endif %}

Reguli automate (text)

O regula leaga orice operatie al carei text contine (nu egal, ci substring) un cuvant de un cod RAR. Util pentru operatii fara cod intern: ex. orice operatie care contine „verificare" primeste codul ales. Match insensibil la majuscule/diacritice. In coada: implicit oprit — regula rezolva codul dar tine randul pentru verificare umana pana activezi „In coada".

{% if not text_rules %}
Inca nu ai reguli. Ex: operatia contine «verificare» → OE-2. Mapeaza automat operatii similare fara cod intern. Adauga prima regula mai jos.
{% endif %}
{% for r in text_rules %} {% endfor %} {# Rand de adaugare (mereu prezent ca placeholder, inclusiv in empty state). #} {# Preview pre-salvare (US-009): cate operatii nemapate potriveste pattern-ul. #}
Daca operatia contine Cod RAR In coada Actiuni
contine «{{ r.pattern }}»
{{ r.cod_prestatie }} {% if r.auto_send %}Auto (in coada){% else %}Manual (verificare){% endif %}
{{ ui.autosend_toggle(form_id="rt-add", checked=False) }}

Formate de coloane salvate

{% if not column_formats %}
Niciun format de coloane salvat inca. La primul import, maparea coloanelor fisierului se retine aici si se reaplica automat la fisierele cu acelasi antet.
{% else %}

Antetele de fisier recunoscute. Un fisier cu alte coloane = format nou separat.

{% for f in column_formats %} {% endfor %}
Coloane Mapari (coloana → camp) Format data
{{ f.columns | length }} coloane {% for col, camp in f.mappings.items() %} {{ col }} → {{ camp }}{% if not loop.last %}; {% endif %} {% endfor %}
{% endif %}