Class: HTM::Jobs::GeneratePropositionsJob
- Inherits:
-
Object
- Object
- HTM::Jobs::GeneratePropositionsJob
- Defined in:
- lib/htm/jobs/generate_propositions_job.rb
Overview
Background job to extract propositions from nodes and create new nodes
Class Method Summary collapse
-
.perform(node_id:, robot_id:) ⇒ Object
Generate propositions for a node.
Class Method Details
.perform(node_id:, robot_id:) ⇒ Object
Generate propositions for a node
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/htm/jobs/generate_propositions_job.rb', line 18 def self.perform(node_id:, robot_id:) node = find_node(node_id) or return return if node.&.dig('is_proposition') begin propositions = HTM::PropositionService.extract(node.content) return if propositions.empty? HTM.logger.info "GeneratePropositionsJob: Extracted #{propositions.length} propositions for node #{node_id}" created = create_proposition_nodes(propositions, source_node_id: node_id, robot_id: robot_id) HTM.logger.info "GeneratePropositionsJob: Created #{created} proposition nodes from node #{node_id}" rescue HTM::CircuitBreakerOpenError HTM.logger.warn "GeneratePropositionsJob: Circuit breaker open for node #{node_id}" rescue HTM::PropositionError => e HTM.logger.error "GeneratePropositionsJob: Proposition extraction failed for node #{node_id}: #{e.}" rescue Sequel::ValidationFailed => e HTM.logger.error "GeneratePropositionsJob: Database validation failed for node #{node_id}: #{e.}" rescue StandardError => e HTM.logger.error "GeneratePropositionsJob: Unexpected error for node #{node_id}: #{e.class.name} - #{e.}" end end |