Module: Legion::Extensions::MindGrowth::Runners::RiskAssessor
- Extended by:
- RiskAssessor
- Includes:
- Helpers::Lex
- Included in:
- RiskAssessor
- Defined in:
- lib/legion/extensions/mind_growth/runners/risk_assessor.rb
Constant Summary collapse
- HIGH_BLAST_CATEGORIES =
%i[safety coordination].freeze
- MEDIUM_BLAST_CATEGORIES =
%i[cognition].freeze
- HOT_PATH_CATEGORIES =
%i[perception memory].freeze
Instance Method Summary collapse
Instance Method Details
#assess_risk(proposal_id:) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/legion/extensions/mind_growth/runners/risk_assessor.rb', line 17 def assess_risk(proposal_id:, **) proposal = Runners::Proposer.get_proposal_object(proposal_id) return { success: false, error: :not_found } unless proposal dimensions = evaluate_dimensions(proposal) tier = calculate_tier(dimensions) recommendation = Helpers::Constants::RISK_RECOMMENDATIONS[tier] { success: true, proposal_id: proposal_id, risk_tier: tier, dimensions: dimensions, recommendation: recommendation } end |
#risk_summary(proposals: nil) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/legion/extensions/mind_growth/runners/risk_assessor.rb', line 29 def risk_summary(proposals: nil, **) ids = if proposals Array(proposals).map { |p| p.is_a?(Hash) ? p[:id] : p.to_s } else Runners::Proposer.list_proposals(limit: 100)[:proposals].map { |p| p[:id] } end results = ids.filter_map do |id| result = assess_risk(proposal_id: id) next unless result[:success] result end grouped = Helpers::Constants::RISK_TIERS.to_h { |tier| [tier, []] } results.each { |r| grouped[r[:risk_tier]] << r } { success: true, total: results.size, by_tier: grouped } end |