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 viaIdUtil2IdGrupUtil) - plaja
PL_INF/PL_SUP(ex. 1..999999) - sucursală (
0pentru 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/comenzicu payload valid (masina+tip deviz) pe tenantmariusm_test, userMARIUS M/pass123, firmaMARIUSM AUTO- Așteptat: HTTP 200 +
pc_nrgenerat (prefix + număr +/+ nr. înmatriculare)
6. Decizie pe AUTHID-related grants
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).