modificari in curs nu stiu care este faza
This commit is contained in:
149
docs/service-auto/pack-serii-verification.md
Normal file
149
docs/service-auto/pack-serii-verification.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# 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**
|
||||
|
||||
```sql
|
||||
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`](./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)
|
||||
|
||||
```sql
|
||||
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`](./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)
|
||||
|
||||
---
|
||||
|
||||
## 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).
|
||||
Reference in New Issue
Block a user