dscf-credit 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/dscf/core/authenticatable.rb +81 -0
  3. data/app/controllers/concerns/dscf/core/common.rb +200 -0
  4. data/app/controllers/concerns/dscf/core/filterable.rb +12 -0
  5. data/app/controllers/concerns/dscf/core/json_response.rb +77 -0
  6. data/app/controllers/concerns/dscf/core/pagination.rb +71 -0
  7. data/app/controllers/concerns/dscf/core/token_authenticatable.rb +53 -0
  8. data/app/controllers/concerns/dscf/credit/reviewable.rb +112 -0
  9. data/app/controllers/dscf/credit/categories_controller.rb +6 -5
  10. data/app/controllers/dscf/credit/credit_limit_calculations_controller.rb +50 -0
  11. data/app/controllers/dscf/credit/credit_line_specs_controller.rb +2 -1
  12. data/app/controllers/dscf/credit/credit_lines_controller.rb +11 -38
  13. data/app/controllers/dscf/credit/disbursements_controller.rb +55 -0
  14. data/app/controllers/dscf/credit/eligible_credit_lines_controller.rb +50 -0
  15. data/app/controllers/dscf/credit/facilitators_controller.rb +39 -150
  16. data/app/controllers/dscf/credit/loan_profiles_controller.rb +138 -0
  17. data/app/controllers/dscf/credit/payment_requests_controller.rb +54 -5
  18. data/app/controllers/dscf/credit/repayments_controller.rb +53 -0
  19. data/app/controllers/dscf/credit/scoring_param_types_controller.rb +31 -0
  20. data/app/controllers/dscf/credit/scoring_parameters_controller.rb +13 -8
  21. data/app/controllers/dscf/credit/scoring_tables_controller.rb +8 -8
  22. data/app/controllers/dscf/credit/system_configs_controller.rb +10 -7
  23. data/app/models/dscf/credit/bank_branch.rb +2 -1
  24. data/app/models/dscf/credit/category.rb +4 -2
  25. data/app/models/dscf/credit/credit_line.rb +9 -6
  26. data/app/models/dscf/credit/credit_line_spec.rb +3 -3
  27. data/app/models/dscf/credit/eligible_credit_line.rb +28 -0
  28. data/app/models/dscf/credit/facilitator.rb +5 -4
  29. data/app/models/dscf/credit/facilitator_performance.rb +1 -2
  30. data/app/models/dscf/credit/loan_profile.rb +8 -4
  31. data/app/models/dscf/credit/loan_profile_scoring_spec.rb +4 -6
  32. data/app/models/dscf/credit/scoring_param_type.rb +17 -0
  33. data/app/models/dscf/credit/scoring_parameter.rb +8 -7
  34. data/app/models/dscf/credit/scoring_table.rb +4 -4
  35. data/app/models/dscf/credit/system_config.rb +5 -4
  36. data/app/serializers/dscf/credit/bank_branch_serializer.rb +1 -0
  37. data/app/serializers/dscf/credit/category_serializer.rb +3 -1
  38. data/app/serializers/dscf/credit/credit_line_serializer.rb +4 -2
  39. data/app/serializers/dscf/credit/credit_line_spec_serializer.rb +1 -1
  40. data/app/serializers/dscf/credit/daily_routine_transaction_serializer.rb +8 -0
  41. data/app/serializers/dscf/credit/eligible_credit_line_serializer.rb +8 -0
  42. data/app/serializers/dscf/credit/facilitator_performance_serializer.rb +1 -1
  43. data/app/serializers/dscf/credit/facilitator_serializer.rb +2 -2
  44. data/app/serializers/dscf/credit/loan_profile_scoring_spec_serializer.rb +8 -0
  45. data/app/serializers/dscf/credit/loan_profile_serializer.rb +15 -0
  46. data/app/serializers/dscf/credit/loan_serializer.rb +12 -0
  47. data/app/serializers/dscf/credit/loan_transaction_serializer.rb +8 -0
  48. data/app/serializers/dscf/credit/payment_request_serializer.rb +10 -0
  49. data/app/serializers/dscf/credit/payment_serializer.rb +8 -0
  50. data/app/serializers/dscf/credit/scoring_param_type_serializer.rb +7 -0
  51. data/app/serializers/dscf/credit/scoring_parameter_serializer.rb +6 -3
  52. data/app/serializers/dscf/credit/scoring_table_serializer.rb +1 -1
  53. data/app/serializers/dscf/credit/system_config_serializer.rb +2 -2
  54. data/app/services/dscf/credit/credit_limit_calculation_service.rb +153 -0
  55. data/app/services/dscf/credit/disbursement_service.rb +180 -0
  56. data/app/services/dscf/credit/facilitator_approval_service.rb +4 -3
  57. data/app/services/dscf/credit/facilitator_creation_service.rb +157 -0
  58. data/app/services/dscf/credit/repayment_service.rb +216 -0
  59. data/app/services/dscf/credit/risk_application_service.rb +27 -0
  60. data/app/services/dscf/credit/scoring_service.rb +297 -0
  61. data/config/locales/en.yml +125 -8
  62. data/config/routes.rb +42 -11
  63. data/db/migrate/20250822091011_create_dscf_credit_categories.rb +2 -0
  64. data/db/migrate/20250822091131_create_dscf_credit_credit_lines.rb +7 -4
  65. data/db/migrate/20250822091527_create_dscf_credit_credit_line_specs.rb +1 -0
  66. data/db/migrate/20250822091820_create_dscf_credit_system_configs.rb +5 -2
  67. data/db/migrate/20250822092040_create_dscf_credit_scoring_param_types.rb +12 -0
  68. data/db/migrate/20250822092050_create_dscf_credit_scoring_parameters.rb +11 -6
  69. data/db/migrate/20250822092246_create_dscf_credit_loan_profiles.rb +6 -3
  70. data/db/migrate/20250822092417_create_dscf_credit_loan_profile_scoring_specs.rb +5 -7
  71. data/db/migrate/20250822092436_create_dscf_credit_facilitators.rb +5 -2
  72. data/db/migrate/20250822092528_create_dscf_credit_facilitator_performances.rb +0 -3
  73. data/db/migrate/20250901172842_create_dscf_credit_scoring_tables.rb +2 -2
  74. data/db/migrate/20250917120000_create_dscf_credit_eligible_credit_lines.rb +18 -0
  75. data/db/seeds.rb +134 -40
  76. data/lib/dscf/credit/version.rb +1 -1
  77. data/spec/factories/dscf/credit/categories.rb +1 -0
  78. data/spec/factories/dscf/credit/credit_line_specs.rb +1 -0
  79. data/spec/factories/dscf/credit/credit_lines.rb +9 -7
  80. data/spec/factories/dscf/credit/eligible_credit_lines.rb +33 -0
  81. data/spec/factories/dscf/credit/facilitator_performances.rb +0 -5
  82. data/spec/factories/dscf/credit/facilitators.rb +6 -1
  83. data/spec/factories/dscf/credit/loan_profile_scoring_specs.rb +1 -7
  84. data/spec/factories/dscf/credit/loan_profiles.rb +11 -6
  85. data/spec/factories/dscf/credit/scoring_param_types.rb +31 -0
  86. data/spec/factories/dscf/credit/scoring_parameters.rb +26 -4
  87. data/spec/factories/dscf/credit/scoring_tables.rb +1 -1
  88. data/spec/factories/dscf/credit/system_configs.rb +8 -2
  89. metadata +50 -2
@@ -1,6 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :scoring_table, class: "Dscf::Credit::ScoringTable" do
3
- association :credit_line, factory: :credit_line
3
+ association :category, factory: :category
4
4
  association :scoring_parameter, factory: :scoring_parameter
5
5
  association :created_by, factory: :user if defined?(Dscf::Core::User)
6
6
  weight { Faker::Number.decimal(l_digits: 0, r_digits: 4).clamp(0.0001, 1.0) }
@@ -2,9 +2,11 @@ FactoryBot.define do
2
2
  factory :system_config, class: "Dscf::Credit::SystemConfig" do
3
3
  association :config_definition, factory: :system_config_definition
4
4
  association :last_updated_by, factory: :user if defined?(Dscf::Core::User)
5
- association :approved_by, factory: :user if defined?(Dscf::Core::User)
5
+ association :reviewed_by, factory: :user if defined?(Dscf::Core::User)
6
6
  config_value { Faker::Lorem.word }
7
- status { %w[pending approved rejected].sample }
7
+ status { %w[pending approved rejected modify].sample }
8
+ review_date { Faker::Date.between(from: 6.months.ago, to: Date.current) if status == 'approved' }
9
+ review_feedback { {} }
8
10
 
9
11
  trait :string_value do
10
12
  config_value { Faker::Lorem.sentence }
@@ -25,5 +27,9 @@ FactoryBot.define do
25
27
  trait :json_value do
26
28
  value { { key: Faker::Lorem.word, value: Faker::Number.number(digits: 3) }.to_json }
27
29
  end
30
+
31
+ trait :modify do
32
+ status { "modify" }
33
+ end
28
34
  end
29
35
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dscf-credit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adoniyas
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-09-03 00:00:00.000000000 Z
10
+ date: 2025-09-20 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: dscf-core
@@ -289,6 +289,20 @@ dependencies:
289
289
  - - ">="
290
290
  - !ruby/object:Gem::Version
291
291
  version: '0'
292
+ - !ruby/object:Gem::Dependency
293
+ name: brakeman
294
+ requirement: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - ">="
297
+ - !ruby/object:Gem::Version
298
+ version: '0'
299
+ type: :development
300
+ prerelease: false
301
+ version_requirements: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - ">="
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
292
306
  description: An engine that contains the core models and controllers for credit scoring.
293
307
  email:
294
308
  - adoniyasg7s@gmail.com
@@ -299,18 +313,31 @@ files:
299
313
  - MIT-LICENSE
300
314
  - README.md
301
315
  - Rakefile
316
+ - app/controllers/concerns/dscf/core/authenticatable.rb
317
+ - app/controllers/concerns/dscf/core/common.rb
318
+ - app/controllers/concerns/dscf/core/filterable.rb
319
+ - app/controllers/concerns/dscf/core/json_response.rb
320
+ - app/controllers/concerns/dscf/core/pagination.rb
321
+ - app/controllers/concerns/dscf/core/token_authenticatable.rb
322
+ - app/controllers/concerns/dscf/credit/reviewable.rb
302
323
  - app/controllers/dscf/credit/application_controller.rb
303
324
  - app/controllers/dscf/credit/bank_branches_controller.rb
304
325
  - app/controllers/dscf/credit/bank_staffs_controller.rb
305
326
  - app/controllers/dscf/credit/banks_controller.rb
306
327
  - app/controllers/dscf/credit/categories_controller.rb
328
+ - app/controllers/dscf/credit/credit_limit_calculations_controller.rb
307
329
  - app/controllers/dscf/credit/credit_line_specs_controller.rb
308
330
  - app/controllers/dscf/credit/credit_lines_controller.rb
331
+ - app/controllers/dscf/credit/disbursements_controller.rb
332
+ - app/controllers/dscf/credit/eligible_credit_lines_controller.rb
309
333
  - app/controllers/dscf/credit/facilitators_controller.rb
334
+ - app/controllers/dscf/credit/loan_profiles_controller.rb
310
335
  - app/controllers/dscf/credit/loans_controller.rb
311
336
  - app/controllers/dscf/credit/parameter_normalizers_controller.rb
312
337
  - app/controllers/dscf/credit/payment_requests_controller.rb
313
338
  - app/controllers/dscf/credit/payments_controller.rb
339
+ - app/controllers/dscf/credit/repayments_controller.rb
340
+ - app/controllers/dscf/credit/scoring_param_types_controller.rb
314
341
  - app/controllers/dscf/credit/scoring_parameters_controller.rb
315
342
  - app/controllers/dscf/credit/scoring_tables_controller.rb
316
343
  - app/controllers/dscf/credit/system_config_definitions_controller.rb
@@ -330,6 +357,7 @@ files:
330
357
  - app/models/dscf/credit/credit_line.rb
331
358
  - app/models/dscf/credit/credit_line_spec.rb
332
359
  - app/models/dscf/credit/daily_routine_transaction.rb
360
+ - app/models/dscf/credit/eligible_credit_line.rb
333
361
  - app/models/dscf/credit/facilitator.rb
334
362
  - app/models/dscf/credit/facilitator_performance.rb
335
363
  - app/models/dscf/credit/failed_operations_log.rb
@@ -340,6 +368,7 @@ files:
340
368
  - app/models/dscf/credit/parameter_normalizer.rb
341
369
  - app/models/dscf/credit/payment.rb
342
370
  - app/models/dscf/credit/payment_request.rb
371
+ - app/models/dscf/credit/scoring_param_type.rb
343
372
  - app/models/dscf/credit/scoring_parameter.rb
344
373
  - app/models/dscf/credit/scoring_table.rb
345
374
  - app/models/dscf/credit/system_config.rb
@@ -356,16 +385,31 @@ files:
356
385
  - app/serializers/dscf/credit/category_serializer.rb
357
386
  - app/serializers/dscf/credit/credit_line_serializer.rb
358
387
  - app/serializers/dscf/credit/credit_line_spec_serializer.rb
388
+ - app/serializers/dscf/credit/daily_routine_transaction_serializer.rb
389
+ - app/serializers/dscf/credit/eligible_credit_line_serializer.rb
359
390
  - app/serializers/dscf/credit/facilitator_performance_serializer.rb
360
391
  - app/serializers/dscf/credit/facilitator_serializer.rb
392
+ - app/serializers/dscf/credit/loan_profile_scoring_spec_serializer.rb
393
+ - app/serializers/dscf/credit/loan_profile_serializer.rb
394
+ - app/serializers/dscf/credit/loan_serializer.rb
395
+ - app/serializers/dscf/credit/loan_transaction_serializer.rb
361
396
  - app/serializers/dscf/credit/parameter_normalizer_serializer.rb
397
+ - app/serializers/dscf/credit/payment_request_serializer.rb
398
+ - app/serializers/dscf/credit/payment_serializer.rb
399
+ - app/serializers/dscf/credit/scoring_param_type_serializer.rb
362
400
  - app/serializers/dscf/credit/scoring_parameter_serializer.rb
363
401
  - app/serializers/dscf/credit/scoring_table_serializer.rb
364
402
  - app/serializers/dscf/credit/system_config_definition_serializer.rb
365
403
  - app/serializers/dscf/credit/system_config_serializer.rb
366
404
  - app/services/dscf/credit/bank_staff_creation_service.rb
405
+ - app/services/dscf/credit/credit_limit_calculation_service.rb
406
+ - app/services/dscf/credit/disbursement_service.rb
367
407
  - app/services/dscf/credit/facilitator_additional_info_service.rb
368
408
  - app/services/dscf/credit/facilitator_approval_service.rb
409
+ - app/services/dscf/credit/facilitator_creation_service.rb
410
+ - app/services/dscf/credit/repayment_service.rb
411
+ - app/services/dscf/credit/risk_application_service.rb
412
+ - app/services/dscf/credit/scoring_service.rb
369
413
  - app/views/dscf/credit/bank_staff_welcome_mailer/welcome_email.html.erb
370
414
  - app/views/dscf/credit/bank_staff_welcome_mailer/welcome_email.text.erb
371
415
  - app/views/dscf/credit/facilitator_mailer/additional_info_received.html.erb
@@ -387,6 +431,7 @@ files:
387
431
  - db/migrate/20250822091527_create_dscf_credit_credit_line_specs.rb
388
432
  - db/migrate/20250822091744_create_dscf_credit_system_config_definitions.rb
389
433
  - db/migrate/20250822091820_create_dscf_credit_system_configs.rb
434
+ - db/migrate/20250822092040_create_dscf_credit_scoring_param_types.rb
390
435
  - db/migrate/20250822092050_create_dscf_credit_scoring_parameters.rb
391
436
  - db/migrate/20250822092225_create_dscf_credit_parameter_normalizers.rb
392
437
  - db/migrate/20250822092246_create_dscf_credit_loan_profiles.rb
@@ -403,6 +448,7 @@ files:
403
448
  - db/migrate/20250822092936_create_dscf_credit_accounting_entries.rb
404
449
  - db/migrate/20250825231109_create_dscf_credit_bank_staff.rb
405
450
  - db/migrate/20250901172842_create_dscf_credit_scoring_tables.rb
451
+ - db/migrate/20250917120000_create_dscf_credit_eligible_credit_lines.rb
406
452
  - db/seeds.rb
407
453
  - lib/dscf/credit.rb
408
454
  - lib/dscf/credit/engine.rb
@@ -417,6 +463,7 @@ files:
417
463
  - spec/factories/dscf/credit/credit_line_specs.rb
418
464
  - spec/factories/dscf/credit/credit_lines.rb
419
465
  - spec/factories/dscf/credit/daily_routine_transactions.rb
466
+ - spec/factories/dscf/credit/eligible_credit_lines.rb
420
467
  - spec/factories/dscf/credit/facilitator_performances.rb
421
468
  - spec/factories/dscf/credit/facilitators.rb
422
469
  - spec/factories/dscf/credit/failed_operations_logs.rb
@@ -427,6 +474,7 @@ files:
427
474
  - spec/factories/dscf/credit/parameter_normalizers.rb
428
475
  - spec/factories/dscf/credit/payment_requests.rb
429
476
  - spec/factories/dscf/credit/payments.rb
477
+ - spec/factories/dscf/credit/scoring_param_types.rb
430
478
  - spec/factories/dscf/credit/scoring_parameters.rb
431
479
  - spec/factories/dscf/credit/scoring_tables.rb
432
480
  - spec/factories/dscf/credit/system_config_definitions.rb