Files
roa2web-service-auto/docs/service-auto/pack-serii-verification.md
2026-06-05 15:00:42 +00:00

5.2 KiB

PACK_SERII_NUMERE — Verificare live + unblock serii tipDoc=20

Data verificare: 2026-04-14 Executat de: teammate pack-serii-verifier (task #4, branch feat/service-auto) Mediu: Oracle 10.0.20.121:1521/ROA, schema MARIUSM_AUTO, user ROA_WEB


1. AUTHID — DEFINER verificat live

SELECT OBJECT_NAME, PROCEDURE_NAME, AUTHID
  FROM ALL_PROCEDURES
 WHERE OWNER = 'MARIUSM_AUTO'
   AND OBJECT_NAME = 'PACK_SERII_NUMERE';

Rezultat:

OBJECT_NAME PROCEDURE_NAME AUTHID
PACK_SERII_NUMERE (null, package-level) DEFINER

Concluzie: HANDOFF-ul era corect. Pachetul rulează cu privilegiile owner-ului (MARIUSM_AUTO), deci GRANT EXECUTE pentru ROA_WEB este suficient. Nu sunt necesare granturi suplimentare pe SERII / PLAJE_NUMERE / SERII_NUMERE.

Status obiect: VALID, created 2025-09-30, last DDL 2026-04-13 19:11.


2. DDL export

DBMS_METADATA.GET_DDL('PACKAGE', …)ORA-31603: ROA_WEB nu are SELECT_CATALOG_ROLE. Fallback la ALL_SOURCE a reușit pentru PACKAGE SPEC (12 825 caractere) dar nu și pentru PACKAGE BODY (0 caractere — ROA_WEB nu are SELECT pe source-ul body-ului).

  • Spec salvat: PACK_SERII_NUMERE.pck
  • Body-ul va trebui exportat manual de DBA (ex: de pe cont MARIUSM_AUTO) dacă e nevoie pentru audit complet.

Tabele referite în spec (nume reale)

Contrar denumirilor din HANDOFF (SER_SERII/SER_PLAJE), tabelele efective sunt:

Referit în spec ca Rol
SERII Master pentru serii (PREFIX, AN2CARACTERE, ISAUTOFACTURA, ISBENEFICIARI, ISTERTI, ISFURNIZORI)
PLAJE_NUMERE Plaje numere (ID_TIPDOC, ID_TIPENTITATE, ID_ENTITATE, ID_SERIE, ID_SUCURSALA, PL_INF, PL_SUP, DATAI, DATAS, INACTIV)
SERII_NUMERE Numere alocate (ID_NUMAR, NUMAR) — destinația lui aloca_numar

3. TIP_DOC=20 — valid, dar fără configurare

Testarea indirectă, prin pachet (ROA_WEB nu are SELECT pe tabele, dar poate apela procedurile pachetului via EXECUTE + DEFINER):

PACK_SERII_NUMERE.verifica_tipdoc(V_ID_TIPDOC=20, V_REZULTAT OUT) → 0 (OK)

→ TIP_DOC=20 este acceptat de pachet (deși nu apare ca named constant nTip… în spec — există o „gaură" între nTipNrDispPlata := 19 și nTipNrOrdinPlata := 21, dar array-urile interne tabela_tipdoc / tabela_numere au 26 elemente, deci indicele 20 e legal).

PACK_SERII_NUMERE.verifica_cursor_serii(V_ID_TIPDOC=20, V_ID_UTIL=1, V_ID_SUCURSALA=0, …)
→ ORA-20000: Nu exista plaje de serii comenzi auto pentru aceste configurari!
  at PACK_SERII_NUMERE line 1071

Aceasta este exact eroarea care blochează happy-path POST /api/service-auto/comenzi (mapată la HTTP 422 „Nu s-au configurat valori…"). Cauza: nu există niciun rând în SERII + PLAJE_NUMERE pentru TIP_DOC=20 care să matchuiască user-ul 1.


4. Granturi efective ROA_WEB (live)

SELECT TABLE_NAME, PRIVILEGE FROM USER_TAB_PRIVS
 WHERE GRANTEE='ROA_WEB' AND OWNER='MARIUSM_AUTO';
TABLE_NAME PRIVILEGE
AUTO_VMASINICLIENTI SELECT
CALENDAR SELECT
DEV_NOM_ASIGURATORI SELECT
DEV_NOM_INSPECTORI SELECT
DEV_NOM_NORME SELECT
DEV_ORDL SELECT
DEV_TIP_DEVIZ SELECT
NOM_LUCRARI SELECT
NOM_PARTENERI SELECT, INSERT
PACK_AUTO EXECUTE
PACK_SERII_NUMERE EXECUTE
SP_CREEAZA_COMANDA_PROTOTIP EXECUTE

Granturile sunt aliniate cu docs/service-auto/onboarding_roa_web.sql. SERII / PLAJE_NUMERE / SERII_NUMERE NU sunt în listă — nici nu trebuie să fie, deoarece pachetul e DEFINER.


5. Unblock plan — 3 pași

Pasul 1 — DBA (MARIUSM_AUTO sau DBA) rulează migrația

Fișierul migrations/ff_2026_04_14_01_AUTO.sql conține un template cu placeholders pentru:

  • nume serie (ex. DEV01)
  • lungime numerică (ex. 6 → numere 1..999999)
  • user/grup alocat (<V_ID_UTIL> — tipic admin MARIUSM_AUTO; pachetul îl transformă intern în grup via IdUtil2IdGrupUtil)
  • plaja PL_INF/PL_SUP (ex. 1..999999)
  • sucursală (0 pentru toate sucursalele sau ID specific)

Migrația folosește procedurile publice ale pachetului (adauga_serie + adauga_plaja) pentru a respecta validările interne — NU face INSERT direct în SERII / PLAJE_NUMERE. DBA-ul trebuie doar să înlocuiască placeholders și să ruleze.

Pasul 2 — Verificare de regresie (re-rulare probe)

După configurare, DBA sau teammate QA poate re-rula scriptul de probe și să confirme că:

PACK_SERII_NUMERE.verifica_cursor_serii(20, 1, 0, …) → rezultat=0 (fără ORA-20000)

Pasul 3 — Smoke test happy-path

  • POST /api/service-auto/comenzi cu payload valid (masina+tip deviz) pe tenant mariusm_test, user MARIUS M/pass 123, firma MARIUSM AUTO
  • Așteptat: HTTP 200 + pc_nr generat (prefix + număr + / + nr. înmatriculare)

NU este necesar niciun grant suplimentar pe SERII/PLAJE_NUMERE/SERII_NUMERE. DEFINER rights sunt suficiente. Dacă pe viitor observăm ORA-01031 la apel pachet, atunci revedem (dar acum happy-path dă 422 nu 500, deci privilege ≠ cauza).