
    ]i                       d Z ddlmZ ddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZ ddlmZmZmZ ddlmZmZ erdd	lmZ dd
lmZ ddlmZ ddlmZ  G d deej<                        Z G d deej<                        Z  G d dee      Z!y)uE   Anomali detection model — flags suspicious transactions for review.    )annotationsN)TYPE_CHECKING)datetime)DateTime
ForeignKeyIndexJSONStringText)Mappedmapped_columnrelationship)BaseTimestampMixin)LaporanShift)Produk)Nozzle)Userc                       e Zd ZdZdZdZdZdZy)TipeAnomaliquota_exceeded
double_dipmeter_discrepancylosses_exceedednegative_stockN)__name__
__module____qualname__QUOTA_EXCEEDED
DOUBLE_DIPMETER_DISCREPANCYLOSSES_EXCEEDEDNEGATIVE_STOCK     4/var/www/html/spbu.com/backend/app/models/anomali.pyr   r      s    %NJ+'O%Nr%   r   c                      e Zd ZdZdZdZdZy)StatusAnomalinewinvestigatingclosed_validfalse_positiveN)r   r   r   NEWINVESTIGATINGCLOSED_VALIDFALSE_POSITIVEr$   r%   r&   r(   r(      s    
C#M!L%Nr%   r(   c                  J   e Zd ZU dZdZ edd       edd       edd      fZ ed	
      Zde	d<    e e
dd      d      Zde	d<    e ed      d      Zde	d<    e e
dd      d	d	      Zde	d<    e e
dd      d	      Zde	d<    e e
dd      d	      Zde	d<    e ed      d	      Zde	d<    eed	      Zde	d <    eed	      Zd!e	d"<    e ed      dej.                  #      Zde	d<    e ed	$      d	      Zd%e	d&<    e e
d'd      d	      Zde	d(<    eed	      Zde	d)<    e e
d'd      d	      Zde	d*<    eed	      Zde	d+<    eeg,      Z d-e	d.<    eeg,      Z!d/e	d0<    eeg,      Z"d1e	d2<    eeg,      Z#d3e	d4<    eeg,      Z$d3e	d5<   y6)7AnomaliRecordz5One anomaly record flagged by the system or manually.anomali_recordsix_anomali_spbu_idspbu_idix_anomali_statusstatusix_anomali_tipetipeT)primary_keyzMapped[int]idzmaster_spbu.idCASCADE)ondeleteF)nullable   zMapped[str]zlaporan_shift.idzSET NULL)r>   indexzMapped[int | None]laporan_shift_idzmaster_produk.id	produk_idzmaster_spbu_nozzle.id	nozzle_id   zMapped[str | None]
plat_nomor	deskripsizMapped[dict | None]detail)r>   default)timezonezMapped[datetime | None]resolved_atzmaster_user.idresolved_by_idcatatan_resolusiassigned_tonotes)foreign_keyszMapped['LaporanShift | None']laporan_shiftzMapped['Produk | None']produkzMapped['Nozzle | None']nozzlezMapped['User | None']resolved_byassigned_userN)%r   r   r   __doc____tablename__r   __table_args__r   r;   __annotations__r   r5   r
   r9   rA   rB   rC   rE   r   rF   r	   rG   r(   r-   r7   r   rJ   rK   rL   rM   rN   r   rP   rQ   rR   rS   rT   r$   r%   r&   r2   r2   %   s$   ?%M 	"I.!8,(N $5B5(#i85G[  &fRj5AD+A+8%
;dRV,(  %2%
;d%I!  %2*Z@4%I!  &36":%MJ"M$1$$FI!F"/t"DFD'r
UM,=,=FK  ,9$$,K(  *7#j9D*N&  ,9+M(M&3#j9D'K#  !.dT BEB 4@N^M_3`M0`&2&LF#L&2&LF#L)5NCS)TK&T+7k]+SM(Sr%   r2   )"rU   
__future__r   enumtypingr   r   
sqlalchemyr   r   r   r	   r
   r   sqlalchemy.ormr   r   r   app.models.baser   r   app.models.operationalr   app.models.productr   app.models.spbur   app.models.userr   strEnumr   r(   r2   r$   r%   r&   <module>re      sf    K "     F F > > 03)&$&#tyy &&C &0TD. 0Tr%   