feat: simplify registry number format to B-2026-00001

New format: single-letter prefix + year + 5-digit sequence.
No direction code (IN/OUT) in the number — shown via arrow icon.
Sequence is shared across directions within the same company+year.

Changes:
- REGISTRY_COMPANY_PREFIX: BTG→B, USW→U, SDT→S, GRP→G
- OLD_COMPANY_PREFIX map for backward compat with existing entries
- allocateSequenceNumber: searches both old and new format entries
  to find the actual max sequence (backward compat)
- recalculateSequence: same dual-format search
- parseRegistryNumber: supports 3 formats (current, v1, legacy)
- isNewFormat: updated regex for B-2026-00001
- CompactNumber: already used single-letter badges, just updated comment
- debug-sequences endpoint: updated for new format
- Notification test data: updated to new format
- RegistrySequence.type: now "SEQ" (shared) instead of "IN"/"OUT"

After deploy: POST /api/registratura/debug-sequences to clean up
old counters, then recreate test entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
AI Assistant
2026-03-11 21:49:35 +02:00
parent eb39024548
commit 0f555c55ee
9 changed files with 175 additions and 85 deletions
@@ -416,7 +416,7 @@ export async function sendTestDigest(): Promise<DigestResult> {
title: "Termene urgente (5 zile sau mai putin)",
items: [
{
entryNumber: "BTG-0001/2026",
entryNumber: "B-2026-00001",
subject: "[TEST] Certificat de urbanism - str. Exemplu nr. 10",
label: "Emitere CU (30 zile lucratoare)",
dueDate: today,
@@ -424,7 +424,7 @@ export async function sendTestDigest(): Promise<DigestResult> {
color: "yellow",
},
{
entryNumber: "BTG-0005/2026",
entryNumber: "B-2026-00005",
subject: "[TEST] Aviz ISU - Proiect rezidential",
label: "Raspuns aviz ISU (15 zile)",
dueDate: today,
@@ -438,7 +438,7 @@ export async function sendTestDigest(): Promise<DigestResult> {
title: "Termene depasite",
items: [
{
entryNumber: "BTG-0003/2026",
entryNumber: "B-2026-00003",
subject: "[TEST] Autorizatie construire - bloc P+4",
label: "Emitere AC (30 zile lucratoare)",
dueDate: "2026-03-01",
@@ -452,7 +452,7 @@ export async function sendTestDigest(): Promise<DigestResult> {
title: "Documente care expira",
items: [
{
entryNumber: "BTG-0010/2025",
entryNumber: "B-2025-00010",
subject: "[TEST] CU nr. 123/2025 - proiect mixt",
label: "Expira curand",
dueDate: "2026-03-25",
+1 -1
View File
@@ -69,7 +69,7 @@ export function defaultPreference(
// ── Digest result types ──
export interface DigestItem {
/** Entry number (e.g., "BTG-0042/2026") */
/** Entry number (e.g., "B-2026-00042") */
entryNumber: string;
/** Entry subject */
subject: string;