Module: Legion::Extensions::Validator::Helpers::QualityGate
- Defined in:
- lib/legion/extensions/validator/helpers/quality_gate.rb
Constant Summary collapse
- WEIGHTS =
{ completeness: 0.35, correctness: 0.35, quality: 0.20, security: 0.10 }.freeze
- DEFAULT_THRESHOLD =
0.8
Class Method Summary collapse
- .passing?(score:, threshold: nil) ⇒ Boolean
- .score(completeness:, correctness:, quality:, security:) ⇒ Object
Class Method Details
.passing?(score:, threshold: nil) ⇒ Boolean
38 39 40 41 |
# File 'lib/legion/extensions/validator/helpers/quality_gate.rb', line 38 def passing?(score:, threshold: nil) threshold ||= Legion::Settings.dig(:fleet, :validation, :quality_gate_threshold) || DEFAULT_THRESHOLD score[:aggregate] >= threshold end |
.score(completeness:, correctness:, quality:, security:) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/legion/extensions/validator/helpers/quality_gate.rb', line 19 def score(completeness:, correctness:, quality:, security:) w = Legion::Settings.dig(:fleet, :validation, :quality_weights) || WEIGHTS aggregate = ( (completeness * (w[:completeness] || WEIGHTS[:completeness])) + (correctness * (w[:correctness] || WEIGHTS[:correctness])) + (quality * (w[:quality] || WEIGHTS[:quality])) + (security * (w[:security] || WEIGHTS[:security])) ).round(3) { completeness: completeness, correctness: correctness, quality: quality, security: security, aggregate: aggregate } end |