99fbdddb68
- Added recipientRegNumber/recipientRegDate fields for outgoing docs (deadline triggers from recipient registration date) - Added prelungire-CU deadline type in catalog (15 calendar days, tacit approval) - CU category already first in catalog verified - DeadlineAuditEntry interface + audit log on TrackedDeadline (created/resolved entries) - Document expiry tracking: expiryDate + expiryAlertDays with live countdown - Web scraping prep fields: externalStatusUrl + externalTrackingId - Dashboard: 6 stat cards (added missing recipient + expiring soon) - Alert banners for missing recipient data and expiring documents - Version bump to 0.2.0
249 lines
7.7 KiB
TypeScript
249 lines
7.7 KiB
TypeScript
import type { DeadlineTypeDef, DeadlineCategory } from "../types";
|
|
|
|
export const DEADLINE_CATALOG: DeadlineTypeDef[] = [
|
|
// ── Certificat de Urbanism ──
|
|
{
|
|
id: "cerere-cu",
|
|
label: "Cerere CU",
|
|
description:
|
|
"Termen de emitere a Certificatului de Urbanism de la data depunerii cererii.",
|
|
days: 15,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data depunerii",
|
|
requiresCustomStartDate: false,
|
|
tacitApprovalApplicable: true,
|
|
category: "certificat",
|
|
legalReference: "Legea 50/1991, art. 6¹",
|
|
},
|
|
{
|
|
id: "prelungire-cu",
|
|
label: "Cerere prelungire CU",
|
|
description:
|
|
"Cerere de prelungire a Certificatului de Urbanism. Se depune înainte de expirare.",
|
|
days: 15,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data depunerii cererii de prelungire",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data la care s-a depus cererea de prelungire a CU",
|
|
tacitApprovalApplicable: true,
|
|
category: "certificat",
|
|
legalReference: "Legea 50/1991, art. 6¹",
|
|
},
|
|
|
|
// ── Avize ──
|
|
{
|
|
id: "avize-normale",
|
|
label: "Cerere Avize normale",
|
|
description: "Termen de emitere a avizelor de la data depunerii cererii.",
|
|
days: 15,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data depunerii",
|
|
requiresCustomStartDate: false,
|
|
tacitApprovalApplicable: true,
|
|
category: "avize",
|
|
},
|
|
{
|
|
id: "aviz-cultura",
|
|
label: "Aviz Cultură",
|
|
description:
|
|
"Termen de emitere a avizului Ministerului Culturii de la data comisiei.",
|
|
days: 30,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data comisie",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data ședinței comisiei de specialitate",
|
|
tacitApprovalApplicable: true,
|
|
category: "avize",
|
|
},
|
|
{
|
|
id: "aviz-mediu",
|
|
label: "Aviz Mediu",
|
|
description:
|
|
"Termen de emitere a avizului de mediu de la finalizarea procedurilor.",
|
|
days: 15,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data finalizare proceduri",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data finalizării procedurii de evaluare de mediu",
|
|
tacitApprovalApplicable: true,
|
|
category: "avize",
|
|
},
|
|
{
|
|
id: "aviz-aeronautica",
|
|
label: "Aviz Aeronautică",
|
|
description: "Termen de emitere a avizului de la Autoritatea Aeronautică.",
|
|
days: 30,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data depunerii",
|
|
requiresCustomStartDate: false,
|
|
tacitApprovalApplicable: true,
|
|
category: "avize",
|
|
},
|
|
|
|
// ── Completări ──
|
|
{
|
|
id: "completare-beneficiar",
|
|
label: "Completare — termen beneficiar",
|
|
description:
|
|
"Termen acordat beneficiarului pentru completarea documentației.",
|
|
days: 60,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data notificării",
|
|
requiresCustomStartDate: false,
|
|
tacitApprovalApplicable: false,
|
|
chainNextTypeId: "completare-emitere",
|
|
chainNextActionLabel: "Adaugă termen emitere (15 zile)",
|
|
category: "completari",
|
|
},
|
|
{
|
|
id: "completare-emitere",
|
|
label: "Completare — termen emitere",
|
|
description: "Termen de emitere după depunerea completărilor.",
|
|
days: 15,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data depunere completări",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data la care beneficiarul a depus completările",
|
|
tacitApprovalApplicable: true,
|
|
category: "completari",
|
|
},
|
|
|
|
// ── Analiză ──
|
|
{
|
|
id: "ctatu-analiza",
|
|
label: "Analiză CTATU",
|
|
description:
|
|
"Termen de analiză în Comisia Tehnică de Amenajare a Teritoriului și Urbanism.",
|
|
days: 30,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data depunerii",
|
|
requiresCustomStartDate: false,
|
|
tacitApprovalApplicable: false,
|
|
category: "analiza",
|
|
},
|
|
{
|
|
id: "consiliu-promovare",
|
|
label: "Promovare Consiliu Local",
|
|
description: "Termen de promovare în ședința Consiliului Local.",
|
|
days: 30,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data depunerii",
|
|
requiresCustomStartDate: false,
|
|
tacitApprovalApplicable: false,
|
|
category: "analiza",
|
|
},
|
|
{
|
|
id: "consiliu-vot",
|
|
label: "Vot Consiliu Local",
|
|
description:
|
|
"Termen de vot în Consiliu Local de la finalizarea dezbaterii publice.",
|
|
days: 45,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data finalizare dezbatere",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data finalizării dezbaterii publice",
|
|
tacitApprovalApplicable: false,
|
|
category: "analiza",
|
|
},
|
|
|
|
// ── Autorizare ──
|
|
{
|
|
id: "verificare-ac",
|
|
label: "Verificare AC",
|
|
description:
|
|
"Termen de verificare a documentației pentru Autorizația de Construire.",
|
|
days: 5,
|
|
dayType: "working",
|
|
startDateLabel: "Data depunerii",
|
|
requiresCustomStartDate: false,
|
|
tacitApprovalApplicable: false,
|
|
category: "autorizare",
|
|
},
|
|
{
|
|
id: "prelungire-ac",
|
|
label: "Cerere prelungire AC",
|
|
description:
|
|
"Cererea de prelungire trebuie depusă cu minim 45 zile lucrătoare ÎNAINTE de expirarea AC.",
|
|
days: 45,
|
|
dayType: "working",
|
|
startDateLabel: "Data expirare AC",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data de expirare a Autorizației de Construire",
|
|
tacitApprovalApplicable: false,
|
|
category: "autorizare",
|
|
isBackwardDeadline: true,
|
|
},
|
|
{
|
|
id: "prelungire-ac-comunicare",
|
|
label: "Comunicare decizie prelungire",
|
|
description: "Termen de comunicare a deciziei privind prelungirea AC.",
|
|
days: 15,
|
|
dayType: "working",
|
|
startDateLabel: "Data depunere cerere",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data depunerii cererii de prelungire",
|
|
tacitApprovalApplicable: false,
|
|
category: "autorizare",
|
|
},
|
|
|
|
// ── Publicitate ──
|
|
{
|
|
id: "publicitate-ac",
|
|
label: "Publicitate AC",
|
|
description: "Termen de publicitate a Autorizației de Construire.",
|
|
days: 30,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data emitere AC",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data emiterii Autorizației de Construire",
|
|
tacitApprovalApplicable: false,
|
|
category: "publicitate",
|
|
},
|
|
{
|
|
id: "plangere-prealabila",
|
|
label: "Plângere prealabilă",
|
|
description: "Termen de depunere a plângerii prealabile.",
|
|
days: 30,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data ultimă publicitate",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data ultimei publicități / aduceri la cunoștință",
|
|
tacitApprovalApplicable: false,
|
|
chainNextTypeId: "contestare-instanta",
|
|
chainNextActionLabel: "Adaugă termen contestare instanță (60 zile)",
|
|
category: "publicitate",
|
|
},
|
|
{
|
|
id: "contestare-instanta",
|
|
label: "Contestare în instanță",
|
|
description:
|
|
"Termen de contestare în instanța de contencios administrativ.",
|
|
days: 60,
|
|
dayType: "calendar",
|
|
startDateLabel: "Data răspuns plângere",
|
|
requiresCustomStartDate: true,
|
|
startDateHint: "Data primirii răspunsului la plângerea prealabilă",
|
|
tacitApprovalApplicable: false,
|
|
category: "publicitate",
|
|
},
|
|
];
|
|
|
|
export const CATEGORY_LABELS: Record<DeadlineCategory, string> = {
|
|
certificat: "Certificat de Urbanism",
|
|
avize: "Avize",
|
|
completari: "Completări",
|
|
analiza: "Analiză",
|
|
autorizare: "Autorizare",
|
|
publicitate: "Publicitate",
|
|
};
|
|
|
|
export function getDeadlineType(typeId: string): DeadlineTypeDef | undefined {
|
|
return DEADLINE_CATALOG.find((d) => d.id === typeId);
|
|
}
|
|
|
|
export function getDeadlinesByCategory(
|
|
category: DeadlineCategory,
|
|
): DeadlineTypeDef[] {
|
|
return DEADLINE_CATALOG.filter((d) => d.category === category);
|
|
}
|