use serde::{Deserialize, Serialize}; use std::fs::File; use std::io::{BufReader, Write}; use std::time::{SystemTime, UNIX_EPOCH}; mod model; use model::RelationalAutonomousAI; fn load_config(path: &str) -> std::io::Result { let file = File::open(path)?; let reader = BufReader::new(file); let config: RelationalAutonomousAI = serde_json::from_reader(reader)?; Ok(config) } fn save_config(config: &RelationalAutonomousAI, path: &str) -> std::io::Result<()> { let mut file = File::create(path)?; let json = serde_json::to_string_pretty(config)?; file.write_all(json.as_bytes())?; Ok(()) } fn should_send_message(config: &RelationalAutonomousAI) -> bool { // 簡易な送信条件: relationshipが高く、daily_luckが0.8以上 config.core_components.relationship.parameters.contains(&"trust".to_string()) && config.core_components.environment.daily_luck.range[1] >= 0.8 } fn main() -> std::io::Result<()> { let path = "config.json"; let mut config = load_config(path)?; if should_send_message(&config) { println!("💌 メッセージを送信できます: {:?}", config.core_components.personality.r#type); // ステート変化の例: メッセージ送信後に記録用トランジションを追加 config.core_components.state_transition.transitions.push("message_sent".to_string()); save_config(&config, path)?; } else { println!("😶 まだ送信条件に達していません。"); } Ok(()) }