feat(service-auto): phase 2 — comenzi browse, id_sucursala, cache, migrare SQL
Backend: - GET /api/service-auto/comenzi cu paginare server-side, filtre dată/status - ComandaRequest.id_sucursala (Optional) + FirmaItem.id_mama - get_firme() expune id_mama din V_NOM_FIRME - callproc SP_CREEAZA_COMANDA_PROTOTIP cu 7 argumente (+ p_id_sucursala) - Cache TTL in-process: tip_deviz 24h, masini 5min Frontend: - ComenziBrowseView.vue — DataTable lazy + filtre + status badges - ComandaNoua.vue — company store integration, idSucursala computed - service-auto/stores/sharedStores.js (createCompaniesStore factory) - HamburgerMenu: secțiune Service Auto (Comenzi + Comandă Nouă) - router: /service-auto/comenzi SQL: - migrations/ff_2026_04_12_01_AUTO.sql — idempotent (COLUMNEXIST guard + CREATE OR REPLACE SP) - onboarding_roa_web.sql — versioned, parametrizat cu :SCHEMA_NAME - .claude/rules/oracle-migrations.md — convenție ff_YYYY_MM_DD_NN_MODULE.sql Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -117,7 +117,11 @@ GRANT EXECUTE ON FIRMA_NOUA.SP_CREEAZA_COMANDA_PROTOTIP TO ROA_WEB;
|
||||
GRANT SELECT ON FIRMA_NOUA.AUTO_VMASINICLIENTI TO ROA_WEB;
|
||||
GRANT SELECT ON FIRMA_NOUA.DEV_TIP_DEVIZ TO ROA_WEB;
|
||||
GRANT SELECT ON FIRMA_NOUA.CALENDAR TO ROA_WEB;
|
||||
-- CALENDAR folosit de shared/routes/calendar.py (period selector AppHeader)
|
||||
-- CALENDAR: period selector AppHeader (shared/routes/calendar.py)
|
||||
GRANT SELECT ON FIRMA_NOUA.DEV_ORDL TO ROA_WEB;
|
||||
-- DEV_ORDL: GET /api/service-auto/comenzi (list comenzi)
|
||||
GRANT SELECT ON FIRMA_NOUA.NOM_LUCRARI TO ROA_WEB;
|
||||
-- NOM_LUCRARI: JOIN cu DEV_ORDL pentru nrord (get_comenzi)
|
||||
-- adaugă orice alte SP/view-uri noi apărute de la ultimul onboarding
|
||||
```
|
||||
|
||||
@@ -197,6 +201,7 @@ ROLLBACK;
|
||||
| SP nou în toate schemele | `migration_YYYYMMDD_sp_noua_grants.sql` (loop V_NOM_FIRME) | 1 script per migrare |
|
||||
| View/tabelă nouă expusă | același pattern ca SP | 1 script per migrare |
|
||||
| Expunere `CALENDAR` pentru period selector | `GRANT SELECT {SCHEMA}.CALENDAR TO ROA_WEB` per schemă | 1 linie per schemă (parte din onboarding §4.1) |
|
||||
| Expunere `DEV_ORDL` + `NOM_LUCRARI` pentru GET /comenzi | `GRANT SELECT {SCHEMA}.DEV_ORDL/NOM_LUCRARI TO ROA_WEB` per schemă | 2 linii per schemă (parte din onboarding §4.1) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
63
docs/service-auto/migrations/ff_2026_04_12_01_AUTO.sql
Normal file
63
docs/service-auto/migrations/ff_2026_04_12_01_AUTO.sql
Normal file
@@ -0,0 +1,63 @@
|
||||
-- adaugare coloana DEV_ORDL.id_sucursala + upgrade SP_CREEAZA_COMANDA_PROTOTIP
|
||||
|
||||
-- Rulat conectat ca schema tinta (ex: MARIUSM_AUTO), O SINGURA DATA per schema
|
||||
|
||||
BEGIN
|
||||
IF PACK_MIGRARE.COLUMNEXIST('DEV_ORDL','ID_SUCURSALA')=0 THEN
|
||||
EXECUTE IMMEDIATE 'ALTER TABLE DEV_ORDL ADD (id_sucursala NUMBER(10))';
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE SP_CREEAZA_COMANDA_PROTOTIP(
|
||||
p_tip IN NUMBER,
|
||||
p_id_masiniclient IN NUMBER,
|
||||
p_solicitari IN VARCHAR2,
|
||||
p_id_firma IN NUMBER,
|
||||
p_id_sucursala IN NUMBER DEFAULT NULL,
|
||||
p_id_ordl OUT NUMBER,
|
||||
p_nrord OUT VARCHAR2
|
||||
) AS
|
||||
v_id_lucrare NUMBER;
|
||||
v_seq NUMBER;
|
||||
v_exists NUMBER;
|
||||
v_now DATE := SYSDATE;
|
||||
BEGIN
|
||||
v_seq := SEQ_NR_LUCRARE.NEXTVAL;
|
||||
p_nrord := 'P' || LPAD(p_id_firma, 2, '0') || '-' || v_seq;
|
||||
|
||||
SELECT COUNT(*) INTO v_exists
|
||||
FROM NOM_LUCRARI
|
||||
WHERE sters = 0 AND nrord = p_nrord;
|
||||
IF v_exists > 0 THEN
|
||||
RAISE_APPLICATION_ERROR(-20001,
|
||||
'Mai exista o comanda cu numarul ' || p_nrord);
|
||||
END IF;
|
||||
|
||||
INSERT INTO NOM_LUCRARI (nrord, id_mod)
|
||||
VALUES (p_nrord, 1200)
|
||||
RETURNING id_lucrare INTO v_id_lucrare;
|
||||
|
||||
INSERT INTO DEV_ORDL (
|
||||
an, luna,
|
||||
id_lucrare,
|
||||
datai, dataoraad,
|
||||
id_util_ad,
|
||||
id_masiniclient,
|
||||
id_tip,
|
||||
solicitari_client,
|
||||
id_sucursala
|
||||
) VALUES (
|
||||
EXTRACT(YEAR FROM v_now), EXTRACT(MONTH FROM v_now),
|
||||
v_id_lucrare,
|
||||
v_now, v_now,
|
||||
0,
|
||||
p_id_masiniclient,
|
||||
p_tip,
|
||||
p_solicitari,
|
||||
p_id_sucursala
|
||||
) RETURNING id_ordl INTO p_id_ordl;
|
||||
END SP_CREEAZA_COMANDA_PROTOTIP;
|
||||
/
|
||||
|
||||
exec pack_migrare.UpdateVersiune('ff_2026_04_12_01_AUTO'); commit;
|
||||
24
docs/service-auto/onboarding_roa_web.sql
Normal file
24
docs/service-auto/onboarding_roa_web.sql
Normal file
@@ -0,0 +1,24 @@
|
||||
-- =============================================================================
|
||||
-- File purpose : Script de onboarding ROA_WEB pentru o schemă nouă
|
||||
-- When to run : Rulat ca CONTAFIN_ORACLE după impdp pentru fiecare firmă nouă
|
||||
-- Usage : Înlocuiește :SCHEMA_NAME cu schema reală (ex: MARIUSM_AUTO)
|
||||
-- Version : 2026-04-12
|
||||
-- Prerequisite : ROA_WEB user creat (onboarding_roa_web_user.sql)
|
||||
-- =============================================================================
|
||||
|
||||
GRANT EXECUTE ON :SCHEMA_NAME.SP_CREEAZA_COMANDA_PROTOTIP TO ROA_WEB;
|
||||
GRANT SELECT ON :SCHEMA_NAME.AUTO_VMASINICLIENTI TO ROA_WEB;
|
||||
GRANT SELECT ON :SCHEMA_NAME.DEV_TIP_DEVIZ TO ROA_WEB;
|
||||
GRANT SELECT ON :SCHEMA_NAME.CALENDAR TO ROA_WEB; -- period selector AppHeader
|
||||
GRANT SELECT ON :SCHEMA_NAME.DEV_ORDL TO ROA_WEB; -- GET /api/service-auto/comenzi
|
||||
GRANT SELECT ON :SCHEMA_NAME.NOM_LUCRARI TO ROA_WEB; -- JOIN cu DEV_ORDL pentru nrord
|
||||
|
||||
-- =============================================================================
|
||||
-- ROA_WEB user creation (one-time, run as SYS or CONTAFIN_ORACLE)
|
||||
-- =============================================================================
|
||||
-- Rulat O SINGURĂ DATĂ la setup inițial, NU pentru fiecare firmă nouă.
|
||||
-- Pentru fiecare firmă nouă se rulează doar secțiunea de GRANT-uri de mai sus.
|
||||
|
||||
CREATE USER ROA_WEB IDENTIFIED BY "<REPLACE_WITH_STRONG_PASSWORD_FROM_VAULT>";
|
||||
GRANT CREATE SESSION TO ROA_WEB;
|
||||
-- Fără alte privilegii sistem. Accesul la date = exclusiv prin granturi per-obiect.
|
||||
Reference in New Issue
Block a user