creditu-common-library
v3.0.1
Published
Librería de cálculos financieros y matemáticos de Creditú (oferta hipotecaria, deuda, ratios)
Readme
Creditú Common Library
Librería TypeScript con los módulos y funciones matemáticas y financieras que usan las aplicaciones de Creditú: cálculo de oferta hipotecaria, deuda/amortización y ratios de endeudamiento.
- Repositorio: https://github.com/creditu-org/creditu-common-library (la copia en GitLab está archivada)
- Paquete:
creditu-common-library, publicado desde GitHub Actions con npm Trusted Publishing al pushear un tagv*
Instalar
npm i creditu-common-libraryMódulos
math—MathService: aritmética de precisión sobredinero.js(add,subtract,multiply,divide,round). Todos los demás servicios reciben una instancia en su constructor:new MathService(useRound = true, precision = 6).offer— cálculo de oferta (flujo de originación).OfferService.calculateCreditAmountToOffer(inputs, params) → OfferResponseorquesta los sub-serviciosConstantsService,CreditInsuranceService,FinanceService,InstallmentService,LoanToValueService,MaximumLocalServiceyOperationalExpensesService.debt— deuda activa y amortización (flujo de servicing):AmortizationService,BalanceService,InflationService,InstallmentService,InsuranceService,InterestService,LateService,MonthlyPaymentService.shared/models— value objects (validan en el constructor) y enums compartidos.middlewares—AppLoggerMiddleware(logger HTTP para NestJS).
Cada función lleva en su JSDoc el enlace a la definición matemática en la wiki de Oferta.
Uso
import { MathService } from 'creditu-common-library/math';
import { OfferService } from 'creditu-common-library/offer/services';
import { OfferInputs, OfferParams } from 'creditu-common-library/offer/models/dto';
const offerService = new OfferService(new MathService(true, 10));
const offer = offerService.calculateCreditAmountToOffer(inputs, params);Ratios de endeudamiento (desde 3.0.0)
Regla de Riesgo (24-ago-2026): la deuda de largo plazo (longTermMonthlyFee, p. ej. un hipotecario con otro banco) afecta solo la Carga Financiera.
| Ratio | Campo | Fórmula |
|---|---|---|
| Dividendo Renta (DR) | frontEndRatio | cuota del crédito / ingreso |
| Carga Financiera (CF) | backEndRatio | (cuota del crédito + LP + CP) / ingreso |
El máximo local por DR (approvedAmountIncomeDividend) es el inverso del DR y ya no descuenta la cuota LP; el máximo local por CF sí. Detalle en openspec/specs/offer-debt-ratios/spec.md.
Breaking en 3.0.0: OfferService.getFrontEndRatio(creditInstallment, monthlyIncome, creditInsuranceFeeTermDefinition, creditInsuranceInstallment?) y MaximumLocalService.incomeDividend(params) perdieron el parámetro de cuota de largo plazo.
Desarrollo
npm run build # compila a lib/
npm run lint # tsc --noEmit + eslint
npm run test:unit # unit (.spec.ts en src/)
npm run test:cov # unit con cobertura (umbral 80 %)
npm run test:functional # suite funcional en test/Para probar en un consumidor sin publicar: npm link aquí y npm link creditu-common-library en el otro repo.
Publicar
- Mergear a
mastercon la versión ya subida enpackage.json(npm version <major|minor|patch> --no-git-tag-version). git tag -a vX.Y.Z -m "..." && git push origin vX.Y.Z→publish.ymlcompila y publica vía OIDC (sin tokens).
