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