feat: restructure Completari + rename Contestatie → Litigii + remove ac-prelungire

- Remove ac-prelungire backward deadline (redundant with AC validity tracker)
- Completari: now 2 beneficiary reminders (L350=60z, L50=3luni) instead of 4 mixed entries
- Rename contestatie → litigii ("Litigii / Sanctiuni / Contestatii")
- Add new litigii deadlines: prescriptie contraventie (3 ani), plangere PV (15z), CNSC (10z)
- Update existing: plangere prealabila, actiune instanta, atacare urbanism labels

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
AI Assistant
2026-03-11 00:08:24 +02:00
parent a2b9ff75b5
commit 1c5ad7c988
3 changed files with 69 additions and 81 deletions
@@ -212,7 +212,7 @@ export function DeadlineAddDialog({
<p className="text-[11px] text-muted-foreground">
{direction === "iesit"
? "Categoriile afisate sunt pentru demersuri depuse de noi (iesiri) — termene pe care le urmarim la institutii."
: "Categoriile afisate sunt pentru acte administrative primite (intrari) — termene de contestare/raspuns."}
: "Categoriile afisate sunt pentru acte administrative primite (intrari) — termene de litigii, sanctiuni si contestatii."}
</p>
</div>
</div>
@@ -446,67 +446,39 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [
},
// ═══════════════════════════════════════════════════════════════
// COMPLETARI
// COMPLETARI — reminder-uri pt beneficiar (termen depunere completari)
// ═══════════════════════════════════════════════════════════════
{
id: "completare-notificare-5",
label: "Solicitare completari (fara comisie)",
id: "completare-beneficiar-l350",
label: "Termen completari beneficiar (L350 — 60 zile)",
description:
"Pentru avizele care nu trec prin comisii, solicitarea de completari dupa primele 5 zile lucratoare nu este permisa.",
days: 5,
dayType: "working",
startDateLabel: "Data depunerii documentatiei",
requiresCustomStartDate: false,
tacitApprovalApplicable: false,
category: "completari",
legalReference: "Norme metodologice Legea 50/1991",
directionFilter: ["iesit"],
},
{
id: "completare-beneficiar-60",
label: "Termen beneficiar depunere completari",
description:
"Beneficiarul are 60 zile de la primirea notificarii pentru a depune documentatia revizuita. Depasirea inchide dosarul si necesita reluarea procesului.",
"Solicitantul are la dispozitie maximum 60 de zile de la primirea notificarii pentru a depune completarile solicitate. Depasirea termenului inchide dosarul si necesita reluarea procesului. Se aplica documentatiilor de urbanism (Legea 350).",
days: 60,
dayType: "calendar",
startDateLabel: "Data notificarii",
requiresCustomStartDate: false,
tacitApprovalApplicable: false,
chainNextTypeId: "completare-emitere-15",
chainNextActionLabel: "Adauga termen emitere dupa completari (15 zile)",
category: "completari",
legalReference: "Legea 350/2001, art. 44 alin. (4)",
directionFilter: ["iesit"],
},
{
id: "completare-emitere-15",
label: "Emitere dupa completari",
description:
"Dupa depunerea completarilor, entitatile emit avizul sau il resping justificat in 15 zile. Depasirea = aviz tacit.",
days: 15,
dayType: "calendar",
startDateLabel: "Data depunerii completarilor",
startDateLabel: "Data notificarii de completare",
requiresCustomStartDate: true,
startDateHint: "Data la care beneficiarul a depus completarile",
tacitApprovalApplicable: true,
startDateHint:
"Data la care beneficiarul a primit notificarea de completare de la autoritate (adresa/email)",
tacitApprovalApplicable: false,
category: "completari",
legalReference: "Legea 350/2001, art. 44 alin. (4)",
directionFilter: ["iesit"],
directionFilter: ["iesit", "intrat"],
},
{
id: "completare-ac-beneficiar",
label: "Completari AC — termen beneficiar",
id: "completare-beneficiar-l50",
label: "Termen completari beneficiar (L50 — 3 luni)",
description:
"Termenul de care dispune solicitantul AC pentru a elabora si depune completarile/modificarile cerute. In caz contrar, documentatia se restituie.",
"Solicitantul are la dispozitie maximum 3 luni (90 de zile calendaristice) de la primirea notificarii pentru a depune completarile/modificarile solicitate. In caz contrar, documentatia se restituie. Se aplica documentatiilor de constructii (Legea 50).",
days: 90,
dayType: "calendar",
startDateLabel: "Data notificarii de completare",
requiresCustomStartDate: true,
startDateHint: "Data primirii notificarii de completare de la autoritate",
startDateHint:
"Data la care beneficiarul a primit notificarea de completare de la autoritate (adresa/email)",
tacitApprovalApplicable: false,
category: "completari",
legalReference: "Legea 50/1991, art. 7 alin. (1^1)",
directionFilter: ["iesit"],
directionFilter: ["iesit", "intrat"],
},
// ═══════════════════════════════════════════════════════════════
@@ -732,22 +704,6 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [
},
// ── Prelungire AC ──
{
id: "ac-prelungire",
label: "Depunere prelungire AC (inapoi)",
description:
"Cererea de prelungire trebuie depusa cu minim 45 zile lucratoare INAINTE de expirarea AC. Se calculeaza inapoi de la data expirarii.",
days: 45,
dayType: "working",
startDateLabel: "Data expirare AC",
requiresCustomStartDate: true,
startDateHint: "Data de expirare a Autorizatiei de Construire",
tacitApprovalApplicable: false,
category: "autorizare",
isBackwardDeadline: true,
legalReference: "Legea 50/1991, art. 7 alin. (8)",
directionFilter: ["iesit"],
},
{
id: "ac-prelungire-emitere",
label: "Emitere decizie prelungire AC (15 zile lucr.)",
@@ -766,13 +722,13 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [
},
// ═══════════════════════════════════════════════════════════════
// CONTESTATIE
// LITIGII / SANCTIUNI / CONTESTATII
// ═══════════════════════════════════════════════════════════════
{
id: "plangere-prealabila",
label: "Plangere prealabila",
label: "Plangere prealabila (contencios AC)",
description:
"Inainte de a va adresa instantei, trebuie sa solicitati autoritatii revocarea actului. Procedura este scutita de taxa de timbru.",
"Inainte de a va adresa instantei, trebuie sa solicitati autoritatii revocarea actului. Termenul curge de la aducerea la cunostinta publicului. Procedura este scutita de taxa de timbru.",
days: 30,
dayType: "calendar",
startDateLabel: "Data ultimei publicitati",
@@ -781,14 +737,14 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [
"Data la care actul a fost adus la cunostinta publicului (ultima operatiune de publicitate: notare in CF, ziar, panou etc.)",
tacitApprovalApplicable: false,
chainNextTypeId: "contestare-ac",
chainNextActionLabel: "Adauga termen contestare in instanta (60 zile)",
category: "contestatie",
chainNextActionLabel: "Adauga termen actiune in instanta (60 zile)",
category: "litigii",
legalReference: "Legea 554/2004, art. 7",
directionFilter: ["intrat"],
},
{
id: "contestare-ac",
label: "Contestare AC in instanta",
label: "Actiune in instanta (contencios AC)",
description:
"Cererea de anulare/suspendare la instanta de contencios administrativ. Termenul curge de la primirea raspunsului la plangerea prealabila sau de la expirarea termenului de raspuns.",
days: 60,
@@ -798,30 +754,46 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [
startDateHint:
"Data primirii raspunsului la plangerea prealabila (sau data la care a expirat termenul de raspuns)",
tacitApprovalApplicable: false,
category: "contestatie",
category: "litigii",
legalReference: "Legea 50/1991, art. 12",
directionFilter: ["intrat"],
},
{
id: "contestare-urbanism",
label: "Contestare doc urbanism (5 ani)",
label: "Atacare documentatii urbanism PUZ/PUG (5 ani)",
description:
"Dreptul de a ataca in instanta hotararile de aprobare PUG/PUZ/PUD se prescrie in 5 ani de la data aprobarii. Exceptie: 1 an pentru ONG-uri.",
"Dreptul de a ataca in instanta hotararile de aprobare PUG/PUZ/PUD se prescrie in 5 ani de la data aprobarii. Exceptie: 1 an pentru ONG-uri (organizatii neguvernamentale).",
days: 1825,
dayType: "calendar",
startDateLabel: "Data aprobarii HCL/HCJ",
requiresCustomStartDate: true,
startDateHint: "Data hotararii de aprobare a documentatiei de urbanism",
tacitApprovalApplicable: false,
category: "contestatie",
category: "litigii",
legalReference: "Legea 350/2001, art. 64 alin. (3)",
directionFilter: ["intrat"],
},
{
id: "contestare-contraventie",
label: "Plangere contraventionala",
id: "prescriptie-contraventie",
label: "Prescriptie contraventie (3 ani)",
description:
"Plangere impotriva PV de amenda la judecatorie. Suspenda obligatia platii amenzii, dar NU suspenda masura opririi/desfiintarii lucrarilor.",
"Dreptul de a constata contraventia si de a aplica sanctiunea se prescrie in termen de 3 ani de la data savarsirii faptei.",
days: 1095,
dayType: "calendar",
startDateLabel: "Data savarsirii faptei",
requiresCustomStartDate: true,
startDateHint:
"Data la care s-a savarsit fapta contraventionala (ex: inceperea lucrarilor fara autorizatie)",
tacitApprovalApplicable: false,
category: "litigii",
legalReference: "Legea 50/1991, art. 31",
directionFilter: ["intrat"],
},
{
id: "plangere-pv",
label: "Plangere impotriva procesului-verbal (15 zile)",
description:
"Plangere impotriva PV de contraventie la judecatorie. Suspenda obligatia platii amenzii, dar NU suspenda masura opririi/desfiintarii lucrarilor.",
days: 15,
dayType: "calendar",
startDateLabel: "Data comunicarii PV",
@@ -829,10 +801,26 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [
startDateHint:
"Data inmanarii sau comunicarii procesului-verbal de contraventie",
tacitApprovalApplicable: false,
category: "contestatie",
category: "litigii",
legalReference: "OG 2/2001, art. 31 alin. (1)",
directionFilter: ["intrat"],
},
{
id: "contestatie-cnsc",
label: "Contestatie CNSC licitatie (10 zile)",
description:
"Contestatie la Consiliul National de Solutionare a Contestatiilor (CNSC) impotriva unui act emis in cadrul procedurii de achizitie publica.",
days: 10,
dayType: "calendar",
startDateLabel: "Data comunicarii actului contestat",
requiresCustomStartDate: true,
startDateHint:
"Data la care a fost comunicat actul contestat in cadrul procedurii de achizitie publica",
tacitApprovalApplicable: false,
category: "litigii",
legalReference: "Legea 101/2016, art. 8",
directionFilter: ["intrat"],
},
];
export const CATEGORY_LABELS: Record<DeadlineCategory, string> = {
@@ -841,7 +829,7 @@ export const CATEGORY_LABELS: Record<DeadlineCategory, string> = {
completari: "Completari",
urbanism: "Urbanism (PUD/PUZ/PUG)",
autorizare: "Autorizare (AD/AC)",
contestatie: "Contestatie",
litigii: "Litigii / Sanctiuni / Contestatii",
};
/** Full categories available per direction (before doc type filtering) */
@@ -850,19 +838,19 @@ export const DIRECTION_CATEGORIES: Record<
DeadlineCategory[]
> = {
iesit: ["certificat", "avize", "urbanism", "autorizare", "completari"],
intrat: ["completari", "contestatie"],
intrat: ["completari", "litigii"],
};
/**
* Document types that unlock the full set of construction permitting categories.
* Other doc types (scrisoare, notificare, etc.) only get completari + contestatie.
* Other doc types (scrisoare, notificare, etc.) only get completari + litigii.
*/
const FULL_DEADLINE_DOC_TYPES = new Set(["cerere", "aviz"]);
/**
* Get the ordered list of deadline categories for a given direction + document type.
* - iesit + cerere/aviz → full set (certificat, avize, urbanism, autorizare, completari)
* - intrat → completari + contestatie (always, regardless of doc type)
* - intrat → completari + litigii (always, regardless of doc type)
* - iesit + other doc types → only completari
*/
export function getCategoriesForDirection(
@@ -874,8 +862,8 @@ export function getCategoriesForDirection(
if (!documentType || FULL_DEADLINE_DOC_TYPES.has(documentType)) {
return all;
}
// Otherwise, only completari + contestatie
return all.filter((c) => c === "completari" || c === "contestatie");
// Otherwise, only completari + litigii
return all.filter((c) => c === "completari" || c === "litigii");
}
/**
+1 -1
View File
@@ -124,7 +124,7 @@ export type DeadlineCategory =
| "completari"
| "urbanism"
| "autorizare"
| "contestatie";
| "litigii";
export interface DeadlineTypeDef {
id: string;