Class: Bugsage::Suggestion

Inherits:
Object
  • Object
show all
Defined in:
lib/bugsage/suggestion.rb

Constant Summary collapse

SOURCES =
%i[rules ai hybrid].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(issue:, location:, root_cause:, fixes:, confidence:, source: :rules, ai_notes: nil, code_patch: nil, code_fix: nil) ⇒ Suggestion

Returns a new instance of Suggestion.



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/bugsage/suggestion.rb', line 9

def initialize(issue:, location:, root_cause:, fixes:, confidence:, source: :rules, ai_notes: nil, code_patch: nil,
               code_fix: nil)
  @issue = issue
  @location = location
  @root_cause = root_cause
  @fixes = fixes
  @confidence = confidence
  @source = normalize_source(source)
  @ai_notes = ai_notes
  @code_patch = normalize_code_patch(code_patch, code_fix)
end

Instance Attribute Details

#ai_notesObject (readonly)

Returns the value of attribute ai_notes.



7
8
9
# File 'lib/bugsage/suggestion.rb', line 7

def ai_notes
  @ai_notes
end

#code_patchObject (readonly)

Returns the value of attribute code_patch.



7
8
9
# File 'lib/bugsage/suggestion.rb', line 7

def code_patch
  @code_patch
end

#confidenceObject (readonly)

Returns the value of attribute confidence.



7
8
9
# File 'lib/bugsage/suggestion.rb', line 7

def confidence
  @confidence
end

#fixesObject (readonly)

Returns the value of attribute fixes.



7
8
9
# File 'lib/bugsage/suggestion.rb', line 7

def fixes
  @fixes
end

#issueObject (readonly)

Returns the value of attribute issue.



7
8
9
# File 'lib/bugsage/suggestion.rb', line 7

def issue
  @issue
end

#locationObject (readonly)

Returns the value of attribute location.



7
8
9
# File 'lib/bugsage/suggestion.rb', line 7

def location
  @location
end

#root_causeObject (readonly)

Returns the value of attribute root_cause.



7
8
9
# File 'lib/bugsage/suggestion.rb', line 7

def root_cause
  @root_cause
end

#sourceObject (readonly)

Returns the value of attribute source.



7
8
9
# File 'lib/bugsage/suggestion.rb', line 7

def source
  @source
end

Instance Method Details

#ai_enhanced?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/bugsage/suggestion.rb', line 25

def ai_enhanced?
  %i[hybrid ai].include?(source)
end

#code_fixObject



21
22
23
# File 'lib/bugsage/suggestion.rb', line 21

def code_fix
  CodePatch.preview_for(@code_patch)
end

#with_ai_enhancement(root_cause:, fixes:, confidence:, ai_notes: nil, code_patch: nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/bugsage/suggestion.rb', line 29

def with_ai_enhancement(root_cause:, fixes:, confidence:, ai_notes: nil, code_patch: nil)
  self.class.new(
    issue: issue,
    location: location,
    root_cause: root_cause,
    fixes: fixes,
    confidence: confidence,
    source: :hybrid,
    ai_notes: ai_notes,
    code_patch: code_patch || @code_patch
  )
end