Class: Ace::Docs::Models::ConsistencyReport
- Inherits:
-
Object
- Object
- Ace::Docs::Models::ConsistencyReport
- Defined in:
- lib/ace/docs/models/consistency_report.rb
Overview
Model for storing and formatting consistency analysis results
Instance Attribute Summary collapse
-
#consolidation_opportunities ⇒ Object
readonly
Returns the value of attribute consolidation_opportunities.
-
#document_count ⇒ Object
readonly
Returns the value of attribute document_count.
-
#duplicate_content ⇒ Object
readonly
Returns the value of attribute duplicate_content.
-
#generated_at ⇒ Object
readonly
Returns the value of attribute generated_at.
-
#raw_response ⇒ Object
readonly
Returns the value of attribute raw_response.
-
#terminology_conflicts ⇒ Object
readonly
Returns the value of attribute terminology_conflicts.
-
#version_inconsistencies ⇒ Object
readonly
Returns the value of attribute version_inconsistencies.
Class Method Summary collapse
-
.parse(response, document_count = 0) ⇒ ConsistencyReport
Parse LLM response into ConsistencyReport.
Instance Method Summary collapse
-
#has_issues? ⇒ Boolean
Check if the report has any issues.
-
#initialize(data = {}) ⇒ ConsistencyReport
constructor
A new instance of ConsistencyReport.
-
#parsing_successful? ⇒ Boolean
Check if parsing was successful.
-
#to_json(*args) ⇒ Object
Convert report to JSON format.
-
#to_markdown ⇒ Object
Convert report to markdown format.
-
#total_issues ⇒ Object
Get total number of issues found.
Constructor Details
#initialize(data = {}) ⇒ ConsistencyReport
Returns a new instance of ConsistencyReport.
15 16 17 18 19 20 21 22 23 |
# File 'lib/ace/docs/models/consistency_report.rb', line 15 def initialize(data = {}) @terminology_conflicts = data[:terminology_conflicts] || [] @duplicate_content = data[:duplicate_content] || [] @version_inconsistencies = data[:version_inconsistencies] || [] @consolidation_opportunities = data[:consolidation_opportunities] || [] @generated_at = data[:generated_at] || Time.now @document_count = data[:document_count] || 0 @raw_response = data[:raw_response] end |
Instance Attribute Details
#consolidation_opportunities ⇒ Object (readonly)
Returns the value of attribute consolidation_opportunities.
11 12 13 |
# File 'lib/ace/docs/models/consistency_report.rb', line 11 def consolidation_opportunities @consolidation_opportunities end |
#document_count ⇒ Object (readonly)
Returns the value of attribute document_count.
11 12 13 |
# File 'lib/ace/docs/models/consistency_report.rb', line 11 def document_count @document_count end |
#duplicate_content ⇒ Object (readonly)
Returns the value of attribute duplicate_content.
11 12 13 |
# File 'lib/ace/docs/models/consistency_report.rb', line 11 def duplicate_content @duplicate_content end |
#generated_at ⇒ Object (readonly)
Returns the value of attribute generated_at.
11 12 13 |
# File 'lib/ace/docs/models/consistency_report.rb', line 11 def generated_at @generated_at end |
#raw_response ⇒ Object (readonly)
Returns the value of attribute raw_response.
11 12 13 |
# File 'lib/ace/docs/models/consistency_report.rb', line 11 def raw_response @raw_response end |
#terminology_conflicts ⇒ Object (readonly)
Returns the value of attribute terminology_conflicts.
11 12 13 |
# File 'lib/ace/docs/models/consistency_report.rb', line 11 def terminology_conflicts @terminology_conflicts end |
#version_inconsistencies ⇒ Object (readonly)
Returns the value of attribute version_inconsistencies.
11 12 13 |
# File 'lib/ace/docs/models/consistency_report.rb', line 11 def version_inconsistencies @version_inconsistencies end |
Class Method Details
.parse(response, document_count = 0) ⇒ ConsistencyReport
Parse LLM response into ConsistencyReport
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ace/docs/models/consistency_report.rb', line 29 def self.parse(response, document_count = 0) data = JSON.parse(response, symbolize_names: true) new( terminology_conflicts: data[:terminology_conflicts] || [], duplicate_content: data[:duplicate_content] || [], version_inconsistencies: data[:version_inconsistencies] || [], consolidation_opportunities: data[:consolidation_opportunities] || [], document_count: document_count, generated_at: Time.now, raw_response: response ) rescue JSON::ParserError # If parsing fails, create a report with the raw response new( raw_response: response, document_count: document_count, generated_at: Time.now ) end |
Instance Method Details
#has_issues? ⇒ Boolean
Check if the report has any issues
51 52 53 |
# File 'lib/ace/docs/models/consistency_report.rb', line 51 def has_issues? total_issues > 0 end |
#parsing_successful? ⇒ Boolean
Check if parsing was successful
64 65 66 |
# File 'lib/ace/docs/models/consistency_report.rb', line 64 def parsing_successful? !raw_response.nil? && total_issues >= 0 end |
#to_json(*args) ⇒ Object
Convert report to JSON format
139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/ace/docs/models/consistency_report.rb', line 139 def to_json(*args) { generated_at: generated_at.iso8601, document_count: document_count, total_issues: total_issues, terminology_conflicts: terminology_conflicts, duplicate_content: duplicate_content, version_inconsistencies: version_inconsistencies, consolidation_opportunities: consolidation_opportunities }.to_json(*args) end |
#to_markdown ⇒ Object
Convert report to markdown format
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/ace/docs/models/consistency_report.rb', line 69 def to_markdown output = [] output << "# Cross-Document Consistency Report" output << "" output << "Generated: #{generated_at.strftime("%Y-%m-%d %H:%M:%S")}" output << "Documents analyzed: #{document_count}" output << "Issues found: #{total_issues}" output << "" if !parsing_successful? && raw_response output << "## Warning: Could not parse LLM response" output << "" output << "Raw output:" output << "```" output << raw_response output << "```" return output.join("\n") end if terminology_conflicts.any? output << "## Terminology Conflicts (#{terminology_conflicts.size})" output << "" terminology_conflicts.each do |conflict| output << format_terminology_conflict(conflict) output << "" end end if duplicate_content.any? output << "## Duplicate Content (#{duplicate_content.size})" output << "" duplicate_content.each do |duplicate| output << format_duplicate_content(duplicate) output << "" end end if version_inconsistencies.any? output << "## Version Inconsistencies (#{version_inconsistencies.size})" output << "" version_inconsistencies.each do |version_issue| output << format_version_inconsistency(version_issue) output << "" end end if consolidation_opportunities.any? output << "## Consolidation Opportunities (#{consolidation_opportunities.size})" output << "" consolidation_opportunities.each do |opportunity| output << format_consolidation_opportunity(opportunity) output << "" end end if total_issues == 0 output << "## No Issues Found" output << "" output << "✅ All documents appear to be consistent!" end output.join("\n") end |
#total_issues ⇒ Object
Get total number of issues found
56 57 58 59 60 61 |
# File 'lib/ace/docs/models/consistency_report.rb', line 56 def total_issues terminology_conflicts.size + duplicate_content.size + version_inconsistencies.size + consolidation_opportunities.size end |