use crate::error::CoreError; use crate::models::TrackerIssue; #[allow(async_fn_in_trait)] pub trait IssueTracker: Send + Sync { fn name(&self) -> &str; async fn create_issue( &self, owner: &str, repo: &str, title: &str, body: &str, labels: &[String], ) -> Result; async fn update_issue_status( &self, owner: &str, repo: &str, external_id: &str, status: &str, ) -> Result<(), CoreError>; async fn add_comment( &self, owner: &str, repo: &str, external_id: &str, body: &str, ) -> Result<(), CoreError>; async fn create_pr_review( &self, owner: &str, repo: &str, pr_number: u64, body: &str, comments: Vec, ) -> Result<(), CoreError>; async fn find_existing_issue( &self, owner: &str, repo: &str, fingerprint: &str, ) -> Result, CoreError>; } #[derive(Debug, Clone)] pub struct ReviewComment { pub path: String, pub line: u32, pub body: String, }