Commit Graph

63 Commits

Author SHA1 Message Date
BFLOWS
7c508e743b feat(ar1-admin): pagina superadmin Configurazione AR1 (pattern Rendicontazione)
Seconda voce sidebar per superadmin, pattern identico a Rendicontazione:
- benef (APPLY_CALLS) -> 'Dichiarazione AR1' -> /ar1 (compilazione)
- superadmin (MANAGE_TENDERS) -> 'Configurazione AR1' -> /ar1-admin (config)

service/ar1Service.js: +11 metodi admin (adminList/Get Templates, adminUpdateLayout,
adminNewVersion, adminGet/Update Policy, CRUD PecSchedule, adminBulkRecompilation).

pages/Ar1AdminConfig.js (532 LOC): 4 tab PrimeReact TabView:
  1. Template AR1: DataTable 3 varianti, badge status ACTIVE/DRAFT/ARCHIVED,
     drawer detail con textarea JSON layout_config editabile + save,
     bottone 'nuova versione' con modale (semver regex + activate_now)
  2. Policy: form con InputNumber/InputSwitch/Checkbox per 6 campi policy
     (validity_days 30-1825, popup_dismiss_hours 1-168, popup_force_on_expired,
     auto_archive_on_company_document, company_document_category_id, allow_bulk)
  3. Regole Reminder PEC: DataTable CRUD con dialog edit, Chips, InputSwitch
  4. Invio Massivo PEC: 4 filtri (only_expired, only_missing, company_ids Chips,
     expired_before Calendar) + dry-run counter + confirm dialog + submit live

Sidebar: voce id=23 'Configurazione AR1' icon 'pi pi-cog' href '/ar1-admin'
permessi MANAGE_TENDERS (accanto a 'Rendicontazione').

Routes: /ar1-admin solo ROLE_SUPER_ADMIN, altri ruoli -> PageNotFound.

Parse check @babel/parser+JSX: 4 OK / 0 FAIL. Webpack compiled 1 warning (vecchio,
unrelated).
2026-04-23 11:06:18 +02:00
BFLOWS
46ee801bd0 feat(ar1): modulo Dichiarazione AR1 Adeguata Verifica D.Lgs.231/2007
Nuovo modulo FE speculare a rendicontazione. Integrazione con microservizio
ar1-compiler (AX41:18091, 26 endpoint live, JWT HS512 condiviso con GEPAFIN-BE).

FILE CREATI (1159 LOC):

src/modules/ar1/service/ar1Service.js (166 LOC)
  Client HTTP pattern 1:1 da rendicontazioneService.js. Metodi:
  - getStatusForCompany (pubblico, per compliance modal)
  - createDraft / getForm / listFormsForCompany / updateQuadri
  - submitForSignature / deleteForm
  - generatePdf / downloadPdfUnsigned / downloadPdfSigned
  - uploadSignature (multipart) / reVerifySignature
  - archiveToCompanyDocument (manuale, solitamente auto)

src/modules/ar1/components/Ar1StatusTag.js (26 LOC)
  Badge PrimeReact Tag per 9 stati (MISSING/DRAFT/AWAITING_SIGNATURE/SIGNED/
  VERIFIED/VALID/APPROACHING/EXPIRED/SUPERSEDED) con severity+icon specifici.

src/modules/ar1/components/Ar1ComplianceModal.js (137 LOC)
  Dialog al login se azienda ha AR1 MISSING/EXPIRED (bloccante, no dismiss)
  o APPROACHING (dismissable 24h via sessionStorage). CTA 'Compila ora'
  naviga a /ar1. Da montare nel layout principale con <Ar1ComplianceModal
  companyId={userCompanyId} />.

src/modules/ar1/pages/Ar1Home.js (248 LOC)
  Pagina principale beneficiario. Card status con countdown + CTA dinamici
  (Compila/Riprendi/Firma/Rinnova). DataTable storico con azioni per riga
  (riprendi, firma, elimina, scarica firmato). Dialog scelta variante per
  nuovo form (A1/A2/A3).

src/modules/ar1/pages/Ar1Wizard.js (372 LOC)
  Wizard data-driven: legge schema_snapshot del form e genera step/field
  dinamicamente. Un step PrimeReact Steps per ogni quadro. Auto-save onBlur
  via PUT /quadri. 7 renderer type-aware:
    - text/email (uppercase CF regex)
    - textarea
    - date (Calendar it-IT)
    - checkbox
    - radio (opzioni string o {label,value})
    - enum (Dropdown)
    - yes_no_with_note (RadioButton SI/NO + textarea condizionale)
  Handler row_type per Quadro B titolari effettivi (array fino a max_rows).
  Handler upload_slots per Quadro F allegati. Nested_full per Quadro C LR
  e D esecutore con sezione 'Dettaglio aggiuntivo'.
  Solo DRAFT editabile, AWAITING_SIGNATURE+ in sola lettura.
  Submit finale invia PUT /quadri + PUT /submit-for-signature e naviga
  a /ar1/signature/:id.

src/modules/ar1/pages/Ar1Signature.js (210 LOC)
  Pagina firma:
    Step 1: genera PDF + download unsigned (filename AR1_A1_da-firmare.pdf)
    Step 2: FileUpload PDF firmato (.pdf PAdES o .p7m CAdES, 50MB max)
            → DocVerify call (toast 'Verifica in corso, fino a 60s')
            → 4 outcome con toast specifici:
                VERIFIED → success + redirect Home
                SIGNED_NOT_VERIFIED → warn 'verifica manuale'
                SIGNED_DOCVERIFY_UNAVAILABLE → warn 'DocVerify down'
                NO_SIGNATURE_DETECTED → error 'Firmare prima il PDF'
  Card 'Dettagli verifica' con firmatario/CF/metodo/scadenza se VERIFIED.

INTEGRAZIONE (pattern identico a rendicontazione):

src/layouts/DefaultLayout/components/AppSidebar/index.js
  Aggiunta voce sidebar:
    label: 'Dichiarazione AR1', icon: 'pi pi-id-card', href: '/ar1', id: 22,
    enable: intersection(permissions, ['APPLY_CALLS', 'APPLY_CONFIDI_CALLS']).length

src/routes.js
  Import Ar1Home/Ar1Wizard/Ar1Signature.
  3 route con pattern ruoli:
    /ar1 → BENEFICIARY/SUPER_ADMIN: Ar1Home, altri: PageNotFound
    /ar1/wizard/:formId → BENEFICIARY/SUPER_ADMIN: Ar1Wizard
    /ar1/signature/:formId → BENEFICIARY/SUPER_ADMIN: Ar1Signature

.env
  + REACT_APP_AR1_API_URL=http://78.46.41.91:18091
  + REACT_APP_RENDICONTAZIONE_API_URL=http://78.46.41.91:18090

VALIDAZIONE:
8 file @babel/parser parse-check con plugin JSX: 8 OK / 0 FAIL.

PROSSIMI STEP (non in questo commit):
- Rinaldo integra Ar1ComplianceModal nel layout principale post-login
- Rinaldo deploya DocVerify sul server BFLOWS/Gepafin e configura
  AR1_DOCVERIFY_URL nel microservizio ar1-compiler (senza DocVerify,
  degrada gracefully a SIGNED senza VERIFIED)
- BE Spring Ar1AmendmentPoller (4.5h, bundle in /tmp/rinaldo-bundle-ar1.zip)
2026-04-23 10:36:17 +02:00
BFLOWS Sandbox
115f31bdef feat(rendicontazione): lato istruttore - queue + review + soccorso istruttorio
Backend (rendicontazione-api):
- 4 nuove colonne su remission_practice: assigned_instructor_id, reviewed_at,
  reviewed_by, rejection_reason, approved_remission
- Nuova tabella remission_amendment_request (id, practice_id, request_text,
  scope jsonb, deadline, status AWAITING/RESPONSE_RECEIVED/CLOSED/EXPIRED,
  response_text, audit cols)
- Router instructor.py con 8 endpoint:
  GET /instructor/queue (SUBMITTED pool + UNDER_REVIEW/AWAITING_AMENDMENT assigned,
  o tutto se manager/superadmin)
  GET /instructor/{id} (practice + gate_check + amendments)
  POST /instructor/{id}/claim (SUBMITTED -> UNDER_REVIEW)
  POST /instructor/{id}/approve (approved_remission opz, default = remission_due calcolato)
  POST /instructor/{id}/reject (rejection_reason min 10 char)
  POST /instructor/{id}/amendment (crea soccorso: request_text + deadline)
  POST /instructor/{id}/amendment/{aid}/close (chiude soccorso, pratica torna UNDER_REVIEW)
  POST /instructor/{id}/amendment/{aid}/respond-beneficiary (benef risponde)
- GET /{id} ora ritorna anche amendments (per beneficiario)

Frontend:
- Pagina IstruttoriaQueue (125 righe): coda pratiche con stato, istruttore
  assegnato, erogato, remission_due calcolata, azioni contestuali
- Pagina IstruttoriaPratica (483 righe): dettaglio pratica readonly per istruttore,
  riepilogo esteso, amendments panel con chiudi, gate check, fatture/ULA/docs,
  3 Dialog per approva/respingi/soccorso
- PraticaRendicontazioneEdit esteso con sezione 'Richieste di soccorso istruttorio'
  visibile al beneficiario + Dialog rispondi con request_text dell'istruttore
- Sidebar: voce 'Istruttoria rendicontazioni' per EVALUATE_APPLICATIONS
  (pre_instructor + instructor_manager)
- Routes /istruttoria e /istruttoria/:id con gate sui tre ruoli

Test end-to-end OK: benef crea+submit, istruttore claim+amendment, benef risponde,
istruttore chiude+approva -> APPROVED remission 8500 EUR su NAPOLI SAS (erogato 17000).

Utenti sandbox creati:
- istruttore@sandbox.local / istruttore123 (ROLE_PRE_INSTRUCTOR)
- manager@sandbox.local / manager123 (ROLE_INSTRUCTOR_MANAGER)
2026-04-18 10:15:22 +02:00
BFLOWS Sandbox
9c483ade34 feat(rendicontazione): lato beneficiario - lista pratiche + compilazione + submit
- Nuova pagina RendicontazioniMie: dashboard beneficiario con pratiche esistenti
  + applications CONTRACT_SIGNED ready_to_start in tabella unificata
- Nuova pagina PraticaRendicontazioneEdit: form compilazione completo
  + riepilogo finanziario live (erogato, totale, cap, remissione spettante)
  + requisiti per invio con semafori live (gate check refresh on mount)
  + sezione regime IVA con update inline
  + fatture per categoria con dialog add + tabella + delete (per B1/B2/B3)
  + dipendenti ULA con dialog add (CF, contratto, FTE, periodo, allegato)
  + documenti richiesti con upload simulato (prompt nome file)
  + submit con confermazione, disabilitato finche' gate non passa
- Nuova pagina DevSwitchUser: impersonate sandbox-only per superadmin
- Voce sidebar "Le mie rendicontazioni" per ROLE_BENEFICIARY
- Voce sidebar "Dev: cambia utente" per ROLE_SUPER_ADMIN
- Service esteso con 12 metodi pratiche + impersonate
2026-04-18 09:50:53 +02:00
BFLOWS Sandbox
8888e0326d feat(rendicontazione): editor schema con form strutturato + dashboard + integrazione microservizio
- Aggiunta voce 'Rendicontazione' in AppSidebar (id 21, icon pi-receipt)
- Nuova pagina RendicontazioneHome: dashboard con tabella bandi + stato schema
  (Non creato / Bozza / Pubblicato) + azioni Crea/Modifica per ciascuno
- Nuova pagina BandoRendicontazioneSchemaEdit: form strutturato 6 sezioni
  (importi/periodo, IVA, categorie, ULA, documenti, regole gate) con
  salva bozza + pubblica, read-only dopo pubblicazione
- Nuovo service modules/rendicontazione/service/rendicontazioneService.js
  (client fetch verso rendicontazione-api, JWT dallo store Zustand)
- 2 nuove route /rendicontazione e /bandi/:id/rendicontazione-schema
  (gate su ROLE_SUPER_ADMIN)
- Bottone 'Schema rendicontazione' aggiunto in BandoEdit come shortcut
- Patch NotificationsSidebar per disabilitare WSS se REACT_APP_ENABLE_WEBSOCKET=0
  (evita errori CORS in sandbox senza RabbitMQ)

UI coerente col codebase: appPage/appPageSection/appForm/appForm__cols/
fieldsRepeater, p-fluid per width input, h1+p in header con border-left
2026-04-18 09:37:08 +02:00
Vitalii Kiiko
0e258febe2 - added UI for management of email templates; 2026-04-01 11:06:22 +02:00
Vitalii Kiiko
6eea331530 - added new root manage UIs; 2026-03-24 16:51:14 +01:00
Vitalii Kiiko
431f628217 - added v1 of admin page; 2026-03-20 16:57:16 +01:00
Vitalii Kiiko
a44ef1cdee - saving progress; 2025-11-10 09:17:43 +01:00
Vitalii Kiiko
31206a82cc - updates; 2025-10-23 13:56:14 +02:00
Vitalii Kiiko
5d40ff4ae1 - added re-admit btn and functionality; 2025-05-14 15:40:34 +02:00
Vitalii Kiiko
6cf6c82ff5 - fixed issues displaying 404 error related html in some pages; 2025-04-29 15:56:11 +02:00
Vitalii Kiiko
ba290e9c03 - fixed adding company getting data populated;
- reverted to non paginated tables for displaying confidi calls;
2025-04-29 14:37:54 +02:00
Vitalii Kiiko
713af3ac32 - re added tables with pagination; 2025-03-31 16:14:27 +02:00
Vitalii Kiiko
a9a92baf18 - added pages for CONFIDI user; 2025-03-06 15:20:42 +01:00
Vitalii Kiiko
d4195d210b - saving progress; 2025-02-13 09:02:57 +01:00
Vitalii Kiiko
8f27e7f29b - saving progress; 2025-02-12 12:31:56 +01:00
Vitalii Kiiko
7fa06b5b8c - saving progress; 2025-02-10 14:35:51 +01:00
Vitalii Kiiko
457194812b - added updating status for initiating evaluation process;
- fixed issues with displaying and calcuating decimals in appl form;
2025-01-29 11:00:55 +01:00
Vitalii Kiiko
a98e4bef5d - saving progress; 2025-01-28 14:20:28 +01:00
Vitalii Kiiko
10331cf92a - added codice ateco as dynamic data;
- stat charts to admin dashboard page;
2025-01-13 15:38:23 +01:00
Vitalii Kiiko
9b4db1b884 Merge branch 'develop' into feature/93-user-details-page 2025-01-02 12:37:21 +01:00
Vitalii Kiiko
63cb275ae9 - added preview of application for beneficiary;
- added isRequestedAmount setting;
2025-01-02 12:34:07 +01:00
Vitalii Kiiko
77500eee40 - merged with develop; 2025-01-02 08:40:22 +01:00
Vitalii Kiiko
3ff69de35d - fixed access for evaluation page;
- changed labels;
2024-12-27 14:38:06 +01:00
Vitalii Kiiko
143a92c9a1 - saving progress; 2024-12-23 15:47:15 +01:00
Vitalii Kiiko
9c92d95a0e - added new role;
- added logic of statuses for amendment;
2024-12-20 17:09:49 +01:00
Vitalii Kiiko
d38616fc48 - saving progress; 2024-12-19 17:06:12 +01:00
Vitalii Kiiko
cf5ff862b7 - saving progress; 2024-11-20 12:07:09 +01:00
Vitalii Kiiko
095ecf03e3 Feature: preview application by ID by admin
- added ApplicationPreview page for admin;
- added a new table to admin dashboard with applications in draft;
2024-11-13 13:52:48 +01:00
Vitalii Kiiko
2797a58661 - added amendemnt page for beneficiary;
- fixed styles in all tables;
- fixed displaying requested files list;
- fixed page of creating a new amendment;
2024-11-08 16:08:08 +01:00
Vitalii Kiiko
5e44b1f268 - page benficiary domanda/soccorso;
- fixed fetching data in overview tables for beneficiary/pre instructor;
- fixed styles;
2024-11-07 16:19:09 +01:00
Vitalii Kiiko
780cb633a2 - saving progress; 2024-10-29 17:18:07 +01:00
Vitalii Kiiko
bcf22876fe - saving progress; 2024-10-29 16:05:23 +01:00
Vitalii Kiiko
6e607dc9cf - saving progress; 2024-10-29 09:56:03 +01:00
Vitalii Kiiko
fb39d0f66d - added evaluation single page new sections; 2024-10-25 17:26:10 +02:00
Vitalii Kiiko
05918f2ae8 - updated sviluppumbria logo;
- updated templates for pre instructor;
2024-10-25 14:50:05 +02:00
Vitalii Kiiko
36b9ebb165 - updated tables and fixed some bugs; 2024-10-24 17:33:13 +02:00
Vitalii Kiiko
490b567a63 - added Manage applications page and table of submitted appls; 2024-10-23 16:07:56 +02:00
Vitalii Kiiko
c05c0edcc2 - updated Users page; 2024-10-17 11:26:51 +02:00
Vitalii Kiiko
487c6d0715 - added instructor dashboard page; 2024-10-16 11:48:05 +02:00
Vitalii Kiiko
2faa5762a0 - added page reset password; 2024-10-15 11:08:23 +02:00
Vitalii Kiiko
8cac4ea23e - added add company page;
- connected api for delega download, upload and deleting;
2024-10-09 17:33:06 +02:00
Vitalii Kiiko
cb9327a740 - added Table field; 2024-10-02 16:06:21 +02:00
Vitalii Kiiko
8ee159824f - added page 'manage users';
- changed field type for 'reuqested documents';
- added disable state logic for 'edit form' btn for unsaved call;
2024-09-30 09:53:12 +02:00
Vitalii Kiiko
4be858ca74 updated 2024-09-27 12:51:29 +02:00
Vitalii Kiiko
478af11cb9 - updated login page;
- updated registration page;
- created profile page;
- created company profile page;
2024-09-27 09:09:48 +02:00
Vitalii Kiiko
1bd00def4b - test of spid login; 2024-09-26 09:58:08 +02:00
Vitalii Kiiko
25b1b5ae7d - added login and loginAdmin;
- fixed bug with saving application data;
2024-09-25 16:25:09 +02:00
Vitalii Kiiko
2341b9ff62 - added 'bandi disponibili' page;
- improved some styles and displaying data in tables;
2024-09-23 16:55:28 +02:00