//! Plain NATS publish of every submission/decision - fire and forget, //! no stream bookkeeping. The n8n automations subscribe to //! `portal.answers.submitted` and gate on `question_id`/`alternative`. #![cfg(feature = "ssr")] pub mod store; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct AnswerSubmitted { pub chain_hash: String, pub parent_hashes: Vec, pub question_id: String, pub alternative: String, pub responses: serde_json::Value, pub timestamp_ms: i64, } pub const ANSWERS_SUBJECT: &str = "portal.answers.submitted"; pub async fn emit_answer_submitted( nats: &async_nats::Client, payload: &AnswerSubmitted, ) -> anyhow::Result<()> { let data = serde_json::to_vec(payload)?; nats.publish(ANSWERS_SUBJECT, data.into()).await?; Ok(()) }