
    j                        d dl mZ d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 h dZd$d	Zd%dd
d&dZd'dZddddddd(dZddd)d Zdd!d*d#ZdS )+    )annotationsN)datetimetimezone)
Connection)Any>   mutedactiveresolvedreturnstrc                 b    t          j        t          j                                                  S N)r   nowr   utc	isoformat     l/home/agent/.hermes/worktrees/FinanceManager-current-import-performance/src/jarvis_finance/quality/alerts.pyutc_nowr      s     <%%//111r   explicitevidencedict[str, Any] | Noner   
str | Nonec                   |r|}nt          j        | pi ddt                    }t          j        |                    d                                                    d d         S )NTF	sort_keysensure_asciidefaultutf-8    )jsondumpsr   hashlibsha256encode	hexdigest)r   r   payloads      r   alert_fingerprintr)      s`     ^*X^t%Y\]]]>'..1122<<>>ssCCr   rule_identity_type	entity_idpriorityfingerprintc                    d                     | pd|pd|pd||g          }t          j        |                    d                                                    d d         S )N| r    (   )joinr$   r%   r&   r'   )r*   r+   r,   r-   r.   r(   s         r   build_dedup_keyr4      s]    hh2{'8b)/r8U`abbG>'..1122<<>>ssCCr   )r+   r,   r*   r   r.   connr   categorymessagec                  t                      }	t          ||          }
t          |||||
          }|                     d|f                                          }t          j        |pi ddt                    }|r'|                     d|	||d         f           |d         S t          t          j	                              }|                     d	|||||||||	|	|
|f           |S )
Nr   )r*   r+   r,   r-   r.   zSELECT alert_id, status, occurrence_count FROM alerts WHERE dedup_key=? AND status IN ('active','resolved','muted') ORDER BY created_at DESC LIMIT 1TFr   zsUPDATE alerts SET last_seen_at=?, occurrence_count=COALESCE(occurrence_count,1)+1, evidence_json=? WHERE alert_id=?alert_ida"  
        INSERT INTO alerts(
            alert_id, priority, category, entity_type, entity_id, rule_id, message,
            evidence_json, status, created_at, last_seen_at, occurrence_count, fingerprint, dedup_key
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'active', ?, ?, 1, ?, ?)
        )
r   r)   r4   executefetchoner"   r#   r   uuiduuid4)r5   r-   r6   r7   r+   r,   r*   r   r.   r   fp	dedup_keyexistingevidence_jsonr9   s                  r   create_alertrB      s*    ))C	8k	:	:	:B[T]hp  A  B  B  BI|| 	_	  hjj  Jx~2E[^___M $ B-*!56	
 	
 	
 
##4:<<  HLL	 
8X{IwQ^`cehjlnwx   Or   )noter9   rC   Nonec               v    |                      dt                      |f           |                                  d S )NzCUPDATE alerts SET status='resolved', resolved_at=? WHERE alert_id=?)r:   r   commit)r5   r9   rC   s      r   resolve_alertrG   E   s5    LLVY`YbYbdlXmnnnKKMMMMMr   )muted_untilrH   c               ^    |                      d||f           |                                  d S )Nz@UPDATE alerts SET status='muted', muted_until=? WHERE alert_id=?)r:   rF   )r5   r9   rH   s      r   
mute_alertrJ   J   s/    LLSVackUlmmmKKMMMMMr   )r   r   r   )r   r   r   r   r   r   )r*   r   r+   r   r,   r   r-   r   r.   r   r   r   )r5   r   r-   r   r6   r   r7   r   r+   r   r,   r   r*   r   r   r   r.   r   r   r   )r5   r   r9   r   rC   r   r   rD   )r5   r   r9   r   rH   r   r   rD   )
__future__r   r$   r"   r<   r   r   sqlite3r   typingr   ACTIVE_STATUSESr   r)   r4   rB   rG   rJ   r   r   r   <module>rO      sV   " " " " " "    ' ' ' ' ' ' ' '            1112 2 2 2DX\ D D D D D DD D D D # &*"$ $ $ $ $ $N JN      
 NR        r   