Open Net Worth
Open Net Worth는 직접 운영하는 오픈소스 개인 AI 자산 비서로, 전체 재무를 하나의 원장에 기록하고 사용자가 제어하는 AI가 관리
교원·의사·보조·공무원·군인 대상 새로운 급여법에 따른 세전·세후 급여, 무료
Salariul brut și net pe noua lege a salarizării, pentru profesori, medici, asistenți, funcționari și militari. Gratuit.
금융TypeScript · JavaScriptGitHub @Jamaalx온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Calculator interactiv pentru proiectul noii legi a salarizării personalului bugetar (MMFTSS, 25 mai 2026). Wizard UX + MCP server pentru AI.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Webapp interactiv pentru calculul salariului brut/net al personalului plătit din fonduri publice conform proiectului de lege a salarizării (MMFTSS 2026) — în toate cele trei variante oficiale publicate: 25 mai, 17 iulie și 20 august 2026.
⚠️ Proiectul de lege NU a fost adoptat. Pe 26 august 2026 partidele au anunțat că nu au ajuns la consens (jalonul PNRR de 770 mil. € a fost pierdut) și s-au angajat să adopte legea până la sfârșitul anului. Instrumentul este neoficial și informativ. Valoarea de referință pentru anii următori urmează a fi stabilită anual prin Hotărâre de Guvern.
Trei variante ale proiectului, selectabile din bara de sus (implicit: 20 august, ultimul text oficial). Fiecare variantă are propriul set de coeficienți, valoarea de referință, grila soldelor de grad și trimiterile la articole:
| Variantă | Funcții indexate | Valoarea de referință | Intrare în vigoare | Diferența tranzitorie |
|---|---|---|---|---|
| I — 25 mai 2026 | 2.614 (2.627 rânduri) | 4.100 lei (2027) — art. 35 alin. (2) | 1 ianuarie 2027 | față de dec. 2026, până la 31 dec. 2031 (art. 32) |
| II — 17 iulie 2026 | 2.809 | 4.100 lei (dec. 2026 + 2027) — art. 36 alin. (2) | 1 decembrie 2026 | față de nov. 2026 (art. 33) |
| III — 20 august 2026 | 3.000 | 4.000 lei (dec. 2026 + 2027) — art. 38 alin. (3) | 1 decembrie 2026 | față de nov. 2026, fără limita 2031 (art. 33) |
Calculează salariul de bază (coeficient × valoare de referință + gradații)
Aplică gradații de vechime (0–5) conform art. 13 (identic în toate variantele)
Tratează corect cazurile speciale (funcții de conducere, Anexa V, Anexa IX, solda de grad pentru Anexa VI)
Adaugă sporuri configurabile (control financiar, fonduri EU, noapte, ore suplimentare, handicap, condiții de muncă și sporurile specifice pe anexe) cu plafon 20%
Calculează brut → net (CAS 25%, CASS 10%, impozit 10%)
Estimează diferența salarială tranzitorie (art. 32 / art. 33, după variantă)
Expune totul ca server MCP (/api/mcp) și chat AI (/api/chat), cu parametrul varianta
Ce NU este modelat (depinde de acte ulterioare sau nu e un drept lunar): categoriile de unități sanitare și factorii de multiplicare pe grupe din Anexa II cap. II (varianta 20 august — se stabilesc prin HG), indemnizația pentru titlul științific de doctor (500 lei brut/lună, art. 39 în varianta din 20 august), premiul de performanță (art. 22). Anexa III cap. V (case de cultură) lipsește din xlsx-ul din 20 august.
public/sources/ (text, coeficienți, anexe, calendar consultări)public/sources/proiect-coeficienti-16-iulie-2026.xlsx (oglinda SNPPC a fișierului MMFTSS) și proiect-lege-salarizare-16-iulie-2026.docxpublic/sources/Proiect-COEFICIENTI-1-8-20-august-2026.xlsx și Proiect-lege-20-august-2026.pdfMetadatele fiecărei variante (valoare de referință, articole, note despre ce s-a schimbat, surse) sunt în data/variants/index.json.
xlsx, devDependency) pentru importul coeficiențilorCerințe: Node.js 22 (vezi Dockerfile), npm 10.
npm install
npm run dev # http://localhost:3000
npm run lint # ESLint (preset Next.js)
npm run build # production build (standalone)
npm run verify:variants # verifică seturile de coeficienți pe variante (rulat și în CI)
Variabile de mediu (toate opționale — calculatorul merge fără ele):
cp .env.example .env.local # apoi completează ce ai nevoie
| Variabilă | Rol |
|---|---|
NVIDIA_API_KEY | cheie NVIDIA NIM pentru widget-ul de chat AI (/api/chat); fără ea, ruta răspunde 503 NOT_CONFIGURED |
NVIDIA_MODEL | modelul folosit de chat (implicit meta/llama-3.3-70b-instruct) |
OAUTH_SIGNING_SECRET | secretul HMAC (min. 32 caractere) pentru token-urile OAuth ale serverului MCP (/oauth/*); fără el OAuth e dezactivat (503), iar /api/mcp rămâne public — nu există secret de rezervă |
OAUTH_REDIRECT_ALLOWLIST | opțional: redirect_uri exacte suplimentare (separate prin virgulă); implicit doar conectorul Claude, ChatGPT și localhost |
PUBLIC_HOSTS | opțional: domeniile pe care răspunde serverul, separate prin virgulă (implicit salarii.romaniatransparenta.eu,salarizare.zed-zen.com). Metadatele OAuth folosesc gazda cererii doar dacă e în listă; altfel PUBLIC_BASE_URL sau primul domeniu. Antetele Host/X-Forwarded-Host nu mai pot muta issuer-ul pe alt domeniu |
OAUTH_TOKEN_EPOCH | opțional, implicit 1. Token-urile de acces trăiesc o oră, refresh token-urile 30 de zile (rotite la fiecare folosire); crește valoarea ca să retragi toate token-urile emise |
Build Docker identic cu cel din producție:
docker build -t salarizare-bugetari .
docker run --rm -p 3000:3000 --env-file .env.local salarizare-bugetari
CI (GitHub Actions, .github/workflows/ci.yml) rulează npm ci, npm run lint, npm run build, npm run verify:variants și npm audit --audit-level=high la fiecare push pe master și la fiecare PR.
Configurat pentru deploy via Docker pe Coolify, cu DNS la Cloudflare.
Push pe GitHub:
git init && git add -A && git commit -m "init"
gh repo create salarizare-bugetari --public --source=. --push
În Coolify (panou Hetzner):
https://github.com/<user>/salarizare-bugetarisalarii.romaniatransparenta.eu (sau alt subdomeniu)DNS Cloudflare:
salarii → <IP-server> sau <server>.coolifyAuto-deploy on push: configurat default de Coolify când conectezi GitHub.
Pagină a site-ului România Transparentă (din octombrie 2026): calculatorul e servit la
romaniatransparenta.eu/registre/salarii/ (basePath în next.config.mjs). nginx-ul site-ului face proxy spre
containerul aplicației, pe rețeaua Docker coolify, prin aliasul de rețea salarizare-bugetari
(Coolify → aplicație → Network → Network Aliases) și pune antetul/subsolul site-ului prin SSI (lib/shell.ts).
SALARII_REDIRECT=1 (variabilă de rulare): subdomeniile vechi trimit 301 spre site, cu aceeași cale și parametri.
/api, /mcp, /oauth și /.well-known rămân pe subdomeniu (conectorii MCP înregistrați). Implicit: oprit.SALARII_HOSTS (opțional): gazdele vechi, implicit salarii.romaniatransparenta.eu,salarizare.zed-zen.com.Când apare o variantă nouă a proiectului (sau un xlsx corectat), datele se regenerează cu importatorul din depozit — reproductibil, fără pași manuali:
# 1. Importă xlsx-ul; id-ul variantei = data publicării (ISO)
npm run import:coeficienti -- cale/catre/Proiect-COEFICIENTI-1-8.xlsx 2026-09-15 \
--compare data/variants/2026-08-20.min.json
# Rezultat: data/variants/2026-09-15.min.json (rândurile) și
# data/variants/2026-09-15.solde-grad.json (Anexa VI cap. I.2)
# Raportul de pe stdout listează TOT ce nu a putut fi interpretat: rânduri fără
# coeficient, coloane ignorate (sume în lei, factori), sheet-uri duplicate,
# coduri în alt format și diferențele de rânduri față de setul de referință.
# 2. Descrie varianta în data/variants/index.json (valoare de referință, articole,
# intrare în vigoare, surse, note) și înregistreaz-o în lib/variants.ts și
# lib/variants-data.ts (importurile JSON sunt statice).
# 3. Adaugă valorile-reper în scripts/verify-variants.mjs și rulează
npm run verify:variants
Opțiuni: --out-dir <dir> (implicit data/variants), --compare <ref.min.json>, --dry-run.
Reguli de interpretare (documentate și în antetul scriptului): coloanele de coeficient sunt cele cu valori în [0,05; 9,5]; etichetele „Grad I/Grad II”, „Nivel I/II”, „Grad managerial”, „minim/maxim”, „comandă/execuție” devin câmpul grad (un rând cu Grad I și Grad II → două înregistrări); Anexa IX cu coloane 2026/2027 … 2031 → o înregistrare cu coeficient = prima coloană și coeficientEsalonat = toate; soldele de grad (Anexa VI cap. I.2) merg în fișier separat, nu în lista de funcții; treapta de populație a sheet-urilor de administrație locală ajunge în subcapitol.
Setul din 25 mai (data/coefficients.min.json) este cel importat inițial și este păstrat neschimbat; importatorul rulat pe același xlsx produce 2.718 rânduri (față de 2.627) pentru că nu mai pierde rândurile cu „Nr. crt.” text și rândurile cu coeficienți identici pe coloane diferite.
.
├── app/
│ ├── layout.tsx # SEO meta + globals
│ ├── page.tsx # landing (banner, calculator, variante, surse)
│ ├── api/coeficienti/[varianta]/ # setul de coeficienți al unei variante (JSON)
│ ├── api/chat/ # chat AI (NVIDIA NIM) cu tool-urile din lib/tools.ts
│ └── api/mcp/ # server MCP (+ /oauth/*)
├── components/
│ ├── ModeSwitcher.tsx # selector variantă + mod (Ghidat / Expert)
│ ├── Wizard.tsx, Calculator.tsx # cele două interfețe de calcul
│ ├── BannerNeadoptat.tsx # starea proiectului (26 aug 2026)
│ ├── Variante.tsx # „Ce s-a schimbat între variante” + ce nu e modelat
│ └── Sources.tsx # documente sursă pe variantă
├── lib/
│ ├── tax.ts # calcul brut→net + gradații + sporuri (formule)
│ ├── variants.ts # metadatele variantelor (client-safe)
│ ├── variants-data.ts # seturile de coeficienți (server-only)
│ ├── varianta-context.tsx # varianta selectată, pentru componente
│ └── tools.ts # tool-urile MCP / chat
├── data/
│ ├── coefficients.min.json # varianta 25 mai (import inițial)
│ └── variants/ # index.json + seturi iulie/august + solde de grad
├── scripts/
│ ├── import-coeficienti.mjs # xlsx MMFTSS → .min.json
│ └── verify-variants.mjs # verificări rulate în CI
├── public/sources/ # copiile locale ale documentelor oficiale
├── Dockerfile # multi-stage build, standalone
└── next.config.mjs # output: 'standalone'
npm run lint, npm run build și npm run verify:variants (CI-ul le rulează automat). Nu modifica lib/tax.ts sau data/**/*.json în același PR cu schimbări de UI.MIT — © 2026 Alex Mantello (ZED-ZEN). Folosește, modifică, redistribuie. Datele oficiale aparțin Guvernului României.