fix(service-auto): PrimeVue Dropdown + document CALENDAR grant for ROA_WEB

ComandaNoua.vue folosea `primevue/select` (PrimeVue v4+), dar proiectul rulează
pe v3.48.0 unde componenta se numește `Dropdown`. Cauză a erorii 500 la load-ul
rutei /service-auto/comanda-noua: "Failed to resolve import primevue/select".

grants-audit.md: adăugat `GRANT SELECT ON {SCHEMA}.CALENDAR TO ROA_WEB` în
template-ul de onboarding §4.1 și în tabelul sumar §4.5. CALENDAR e accesat de
`shared/routes/calendar.py` pentru period selector-ul din AppHeader — necesar
pe orice server unde userul poate face login, nu doar service-auto.

DBA action separată: `GRANT SELECT ON MARIUSM_AUTO.CALENDAR TO ROA_WEB`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-04-12 21:01:41 +00:00
parent 32aca55c78
commit 574aca31e4
2 changed files with 10 additions and 7 deletions

View File

@@ -116,6 +116,8 @@ Onboarding-ul ROA_WEB = 1 script rulat după impdp:
GRANT EXECUTE ON FIRMA_NOUA.SP_CREEAZA_COMANDA_PROTOTIP TO ROA_WEB; 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.AUTO_VMASINICLIENTI TO ROA_WEB;
GRANT SELECT ON FIRMA_NOUA.DEV_TIP_DEVIZ 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)
-- adaugă orice alte SP/view-uri noi apărute de la ultimul onboarding -- adaugă orice alte SP/view-uri noi apărute de la ultimul onboarding
``` ```
@@ -194,6 +196,7 @@ ROLLBACK;
| Firmă nouă (`impdp`) | `onboarding_roa_web.sql` cu schema nouă | 1 script per firmă | | Firmă nouă (`impdp`) | `onboarding_roa_web.sql` cu schema nouă | 1 script per firmă |
| SP nou în toate schemele | `migration_YYYYMMDD_sp_noua_grants.sql` (loop V_NOM_FIRME) | 1 script per migrare | | 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 | | 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) |
--- ---

View File

@@ -17,7 +17,7 @@
<label style="font-weight: var(--font-medium); font-size: var(--text-sm); color: var(--text-color-secondary);"> <label style="font-weight: var(--font-medium); font-size: var(--text-sm); color: var(--text-color-secondary);">
Firmă * Firmă *
</label> </label>
<Select <Dropdown
v-model="form.id_firma" v-model="form.id_firma"
:options="firme" :options="firme"
option-label="firma" option-label="firma"
@@ -25,7 +25,7 @@
placeholder="Selectează firma" placeholder="Selectează firma"
:disabled="isSubmitting || loadingFirme" :disabled="isSubmitting || loadingFirme"
:loading="loadingFirme" :loading="loadingFirme"
fluid class="w-full"
/> />
</div> </div>
@@ -34,7 +34,7 @@
<label style="font-weight: var(--font-medium); font-size: var(--text-sm); color: var(--text-color-secondary);"> <label style="font-weight: var(--font-medium); font-size: var(--text-sm); color: var(--text-color-secondary);">
Tip comandă * Tip comandă *
</label> </label>
<Select <Dropdown
v-model="form.tip_id" v-model="form.tip_id"
:options="tipuriComanda" :options="tipuriComanda"
option-label="denumire" option-label="denumire"
@@ -42,7 +42,7 @@
placeholder="Selectează tipul comenzii" placeholder="Selectează tipul comenzii"
:disabled="isSubmitting || loadingTipuri" :disabled="isSubmitting || loadingTipuri"
:loading="loadingTipuri" :loading="loadingTipuri"
fluid class="w-full"
/> />
</div> </div>
@@ -51,7 +51,7 @@
<label style="font-weight: var(--font-medium); font-size: var(--text-sm); color: var(--text-color-secondary);"> <label style="font-weight: var(--font-medium); font-size: var(--text-sm); color: var(--text-color-secondary);">
Client / Mașină * Client / Mașină *
</label> </label>
<Select <Dropdown
ref="clientDropdownRef" ref="clientDropdownRef"
v-model="form.id_masiniclient" v-model="form.id_masiniclient"
:options="masini" :options="masini"
@@ -61,7 +61,7 @@
:disabled="isSubmitting || loadingMasini" :disabled="isSubmitting || loadingMasini"
:loading="loadingMasini" :loading="loadingMasini"
filter filter
fluid class="w-full"
/> />
</div> </div>
@@ -99,7 +99,7 @@
<script setup> <script setup>
import { ref, computed, onMounted, nextTick } from 'vue' import { ref, computed, onMounted, nextTick } from 'vue'
import { useToast } from 'primevue/usetoast' import { useToast } from 'primevue/usetoast'
import Select from 'primevue/select' import Dropdown from 'primevue/dropdown'
import Textarea from 'primevue/textarea' import Textarea from 'primevue/textarea'
import Button from 'primevue/button' import Button from 'primevue/button'
import Toast from 'primevue/toast' import Toast from 'primevue/toast'