+
    `Øjz  ã                   ó¸  € R t ^ RIHtHt ^ RIHtHt ^ RIHt ^ RI	H	t	  ! R R]4      t
 ! R R]4      t ! R	 R
]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R ]4      t ! R! R"]4      t ! R# R$]4      t ! R% R&]4      tR'# )(z6
Pydantic schemas for the Production Tracking module.
)Ú	BaseModelÚField)ÚOptionalÚList)ÚUUID)Údatetimec                   óX   a € ] tR t^t o ]! RRR7      t]! RRR7      tRtV 3R ltR	t	V t
R# )
ÚScanRequest.zChassis number or QR code value)ÚdescriptionÚQR_SCANz^(QR_SCAN|MANUAL_ENTRY)$)ÚdefaultÚpatternNc                óZ   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[ ;R&   S[S[ ,          ;R&   # )é   Ú
chassis_noÚ
station_idÚ	scan_modeÚremarks)Ústrr   r   )ÚformatÚ__classdict__s   "€Ú@/var/www/html/audi_dev/backend/app/modules/production/schemas.pyÚ__annotate__ÚScanRequest.__annotate__   s9   ø‡ ‚ ÙÑOñ áÑñ ñ ÑQñ ñ ‘c�]Ñ!ò	 ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r	   r	      s+   ø‡ € Ù˜CÐ-NÔO€Já 9Ð6PÔQ€IØ!€G÷	 ƒ r   r	   c                   óH   a € ] tR t^t o RtRt ! R R4      tV 3R ltRtV t	R# )ÚScanResponseNFc                   ó   € ] tR t^tRtRtR# )ÚScanResponse.ConfigTr   N©r   r   r   r   Úfrom_attributesr!   r   r   r   ÚConfigr'      ó   † ØŒr   r*   c                ó~   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[;R&   S[S[,          ;R&   S[;R&   # )r   Ú
event_typer   Ústation_nameÚmessageÚlog_idÚelapsed_minutesÚ
is_overdue)r   r   r   ÚintÚbool)r   r   s   "€r   r   ÚScanResponse.__annotate__   s\   ø‡ ‚ Ù�Oñ á�Oñ ñ Ññ ñ �Lñ	 ñ
 �Lñ ñ ™c•]Ñ)ñ ñ Ñò r   r   )
r   r   r   r   r1   r2   r*   r    r!   r"   r#   s   @r   r%   r%      s"   ø‡ € ð &*€OØ€J÷ñ ÷ ƒ r   r%   c                   ó@   a € ] tR t^t o  ! R R4      tV 3R ltRtV tR# )ÚDelayReasonOutc                   ó   € ] tR t^&tRtRtR# )ÚDelayReasonOut.ConfigTr   Nr(   r   r   r   r*   r9   &   r+   r   r*   c                óV   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R&   # )r   Údelay_reason_idÚreason_codeÚreason_labelÚcategoryÚ	is_active)r   r   r4   )r   r   s   "€r   r   ÚDelayReasonOut.__annotate__   s@   ø‡ ‚ ÙÑñ áÑñ ñ Ññ ñ �Mñ	 ñ
 �Oò r   r   N)r   r   r   r   r*   r    r!   r"   r#   s   @r   r7   r7      s   ø‡ € ÷ñ ÷ ƒ r   r7   c                   ó0   a € ] tR t^)t o RtV 3R ltRtV tR# )ÚDelayReasonCreateÚOPERATIONALc                ó>   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   # )r   r<   r=   r>   )r   )r   r   s   "€r   r   ÚDelayReasonCreate.__annotate__)   s(   ø‡ ‚ ÙÑñ áÑñ ñ Ñ!ò r   r   N)r   r   r   r   r>   r    r!   r"   r#   s   @r   rB   rB   )   s   ø‡ € ð "€H÷ ƒ r   rB   c                   ó8   a € ] tR t^.t o RtRtRtV 3R ltRtV t	R# )ÚDelayReasonUpdateNc                ón   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   r=   r>   r?   )r   r   r4   )r   r   s   "€r   r   ÚDelayReasonUpdate.__annotate__.   s4   ø‡ ‚ Ù™3•-Ñ&ñ á‘s�mÑ"ñ ñ ™�~Ñ$ò r   r   )
r   r   r   r   r=   r>   r?   r    r!   r"   r#   s   @r   rG   rG   .   s   ø‡ € Ø"&€LØ"€HØ $€I÷ ƒ r   rG   c                   ó0   a € ] tR t^5t o RtV 3R ltRtV tR# )ÚDelayLogRequestNc                óB   <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   # )r   r;   Údelay_remarks)r   r   r   )r   r   s   "€r   r   ÚDelayLogRequest.__annotate__5   s   ø‡ ‚ ÙÑñ á™C•=Ñ'ò r   r   )r   r   r   r   rM   r    r!   r"   r#   s   @r   rK   rK   5   s   ø‡ € à#'€M÷ ƒ r   rK   c                   ó0   a € ] tR t^;t o RtV 3R ltRtV tR# )Ú
HoldCreateNc                óZ   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[S[,          ;R&   # )r   r   Ú	hold_typeÚhold_reasonr   )r   r   r   )r   r   s   "€r   r   ÚHoldCreate.__annotate__;   s7   ø‡ ‚ Ù�Oñ á�Nñ ñ Ññ ñ ™•Ñ%ò	 r   r   )r   r   r   r   r   r    r!   r"   r#   s   @r   rP   rP   ;   s   ø‡ € ð "&€J÷	 ƒ r   rP   c                   ó0   a € ] tR t^At o RtV 3R ltRtV tR# )ÚHoldResolveNc                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # )r   Úresolution_notes)r   r   )r   r   s   "€r   r   ÚHoldResolve.__annotate__A   s   ø‡ ‚ Ù™s•mÑ*ò r   r   )r   r   r   r   rX   r    r!   r"   r#   s   @r   rV   rV   A   s   ø‡ € Ø&*Ð÷ ƒ r   rV   c                   ó`   a € ] tR t^Dt o RtRtRtRtRtRt	Rt
Rt ! R R4      tV 3R ltRtV tR# )ÚHoldOutNc                   ó   € ] tR t^TtRtRtR# )ÚHoldOut.ConfigTr   Nr(   r   r   r   r*   r]   T   r+   r   r*   c                óB  <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[S[,          ;R&   S[S[ ,          ;R&   S[S[,          ;R&   S[;R&   S[;R&   S[S[ ,          ;R&   S[S[,          ;R	&   S[;R
&   S[S[ ,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[;R&   # )r   Úhold_idÚ
chassis_idr   r   r.   rR   rS   Ú	raised_byÚraised_by_nameÚ	raised_atÚresolved_byÚresolved_atrX   Ústatus)r   r   r   r   )r   r   s   "€r   r   ÚHoldOut.__annotate__D   sÕ   ø‡ ‚ Ù�Mñ áÑñ ñ ™•Ñ$ñ ñ ™•Ñ%ñ	 ñ
 ™3•-Ñ&ñ ñ �Nñ ñ Ññ ñ ™�~Ñ$ñ ñ ™S•MÑ(ñ ñ Ññ ñ ™$•Ñ&ñ ñ ™(Õ#Ñ*ñ ñ ™s•mÑ*ñ ñ �Kò r   r   )r   r   r   r   r   r   r.   ra   rb   rd   re   rX   r*   r    r!   r"   r#   s   @r   r[   r[   D   sC   ø‡ € ð !%€JØ!%€JØ"&€Lð !%€IØ$(€Nà"&€KØ&*€KØ&*Ð÷ñ ÷! ƒ r   r[   c                   óD   a € ] tR t^Yt o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚChassisAtStationNFÚNONEc                óÎ   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[ ;R&   S[;R&   S[;R&   S[S[,          ;R&   S[;R&   S[;R&   S[;R	&   S[S[,          ;R
&   S[S[,          ;R&   # )r   r`   r   r0   Ú
arrived_atr1   Úcycle_time_minr2   Ú
is_warningÚhold_statusÚdelay_reasonÚ
model_name©r   r   r   r3   r   r4   )r   r   s   "€r   r   ÚChassisAtStation.__annotate__Y   sš   ø‡ ‚ ÙÑñ á�Oñ ñ �Lñ ñ Ññ	 ñ
 Ññ ñ ™S•MÑ(ñ ñ Ññ ñ Ññ ñ Ññ ñ ™3•-Ñ&ñ ñ ™•Ñ$ò r   r   )r   r   r   r   rm   r2   rn   ro   rp   rq   r    r!   r"   r#   s   @r   ri   ri   Y   s,   ø‡ € ð %)€NØ€JØ€JØ€KØ"&€LØ $€J÷ ƒ r   ri   c                   óH   a € ] tR t^ft o RtRtRtRt^ t^ t	. t
V 3R ltRtV tR# )ÚStationLiveViewNFc                óÒ   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[S[,          ;R&   S[;R&   S[S[,          ;R&   S[S[,          ;R&   S[;R&   S[;R	&   S[S[,          ;R
&   # )r   r   r.   Ústation_codeÚsequence_noÚrequires_qarm   Úalert_threshold_minÚchassis_countÚoverdue_countÚchassis_list)r   r   r   r3   r4   r   ri   )r   r   s   "€r   r   ÚStationLiveView.__annotate__f   s•   ø‡ ‚ ÙÑñ áÑñ ñ Ññ ñ ™#•Ñ%ñ	 ñ
 Ññ ñ ™S•MÑ(ñ ñ "¡#�Ñ-ñ ñ Ññ ñ Ññ ñ Ñ'Õ(Ñ-ò r   r   )r   r   r   r   rx   ry   rm   rz   r{   r|   r}   r    r!   r"   r#   s   @r   ru   ru   f   s2   ø‡ € ð "&€KØ€KØ$(€NØ)-ÐØ€MØ€MØ+-€L÷ ƒ r   ru   c                   ó<   a € ] tR t^tt o ^ t^ t^ t^ tV 3R ltRt	V t
R# )ÚDashboardKPIsc                óJ   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r   Ú	wip_countÚcompleted_todayÚon_hold_countr|   )r3   )r   r   s   "€r   r   ÚDashboardKPIs.__annotate__t   s5   ø‡ ‚ ÙÑñ áÑñ ñ Ññ ñ Ñò	 r   r   N)r   r   r   r   r‚   rƒ   r„   r|   r    r!   r"   r#   s   @r   r€   r€   t   s    ø‡ € Ø€IØ€OØ€MØ€M÷	 ƒ r   r€   c                   ó<   a € ] tR t^zt o RtRtRtRtV 3R ltRt	V t
R# )ÚUnplacedChassisz:In production (WIP) but not checked in at any station yet.Nrj   c                óv   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[S[,          ;R&   S[;R&   S[S[,          ;R&   # )r   r`   r   rq   ro   Úsince)r   r   r   r   )r   r   s   "€r   r   ÚUnplacedChassis.__annotate__z   sL   ø‡ ‚ áÑñ ñ �Oñ ñ ™•Ñ$ñ	 ñ
 Ññ ñ ‘HÕÑ$ò r   r   )r   r   r   r   Ú__doc__rq   ro   r‰   r    r!   r"   r#   s   @r   r‡   r‡   z   s    ø‡ € ÙDð !%€JØ€KØ $€E÷ ƒ r   r‡   c                   ó0   a € ] tR t^‚t o . tV 3R ltRtV tR# )ÚDashboardResponsec                ó^   <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[,          ;R&   # )r   ÚkpisÚstationsÚunplaced)r€   r   ru   r‡   )r   r   s   "€r   r   ÚDashboardResponse.__annotate__‚   s2   ø‡ ‚ Ù
Ññ á‘?Õ#Ñ#ñ ñ ‘?Õ#Ñ(ò r   r   N)r   r   r   r   r‘   r    r!   r"   r#   s   @r   r�   r�   ‚   s   ø‡ € ð ')€H÷ ƒ r   r�   c                   óP   a € ] tR t^‰t o RtRtRtRt ! R R4      tV 3R lt	Rt
V tR# )ÚTimelineEntryNFc                   ó   € ] tR t^•tRtRtR# )ÚTimelineEntry.ConfigTr   Nr(   r   r   r   r*   r–   •   r+   r   r*   c                óÂ   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[;R&   S[;R&   S[;R&   S[S[,          ;R&   S[;R&   S[S[,          ;R&   S[S[,          ;R	&   S[;R
&   # )r   r0   r   r.   r-   Ú
scanned_atr1   r2   rp   rM   rf   )r   r   r   r   r3   r4   )r   r   s   "€r   r   ÚTimelineEntry.__annotate__‰   sŒ   ø‡ ‚ Ù�Lñ áÑñ ñ Ññ ñ �Oñ	 ñ
 Ññ ñ ™c•]Ñ)ñ ñ Ññ ñ ™3•-Ñ&ñ ñ ™C•=Ñ'ñ ñ �Kò r   r   )r   r   r   r   r1   r2   rp   rM   r*   r    r!   r"   r#   s   @r   r”   r”   ‰   s,   ø‡ € ð &*€OØ€JØ"&€LØ#'€M÷ñ ÷ ƒ r   r”   c                   ó<   a € ] tR t^št o RtRtRtRtV 3R ltRt	V t
R# )ÚOverdueEntryNFc                ó¶   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[;R	&   # )
r   r`   r   r.   rl   r1   rm   rp   rM   Údelay_loggedrr   )r   r   s   "€r   r   ÚOverdueEntry.__annotate__š   s�   ø‡ ‚ ÙÑñ á�Oñ ñ Ññ ñ Ññ	 ñ
 Ññ ñ ™S•MÑ(ñ ñ ™3•-Ñ&ñ ñ ™C•=Ñ'ñ ñ Ñò r   r   )r   r   r   r   rm   rp   rM   r�   r    r!   r"   r#   s   @r   r›   r›   š   s"   ø‡ € ð %)€NØ"&€LØ#'€MØ€L÷ ƒ r   r›   c                   ó0   a € ] tR t^§t o RtV 3R ltRtV tR# )ÚStationBottleneckNc                ó~   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[S[,          ;R&   S[;R&   S[;R&   S[;R&   # )r   r   r.   Úavg_elapsed_minrm   Útotal_completionsr|   Úoverdue_pct)r   r   Úfloatr   r3   )r   r   s   "€r   r   ÚStationBottleneck.__annotate__§   s`   ø‡ ‚ ÙÑñ áÑñ ñ Ññ ñ ™S•MÑ(ñ	 ñ
 Ññ ñ Ññ ñ Ñò r   r   )r   r   r   r   rm   r    r!   r"   r#   s   @r   r    r    §   s   ø‡ € ð %)€N÷	 ƒ r   r    N)r‹   Úpydanticr   r   Útypingr   r   Úuuidr   r   r	   r%   r7   rB   rG   rK   rP   rV   r[   ri   ru   r€   r‡   r�   r”   r›   r    r   r   r   Ú<module>rª      sä   ðñ÷ &ß !Ý Ý ô"�)ô "ô
�9ô 
ô�Yô ô"˜	ô "ô
%˜	ô %ô(�iô (ô&�ô &ô+�)ô +ôˆiô ô*%�yô %ô
.�iô 
.ô�Iô ô%�iô %ô)˜	ô )ô�Iô ô"	�9ô 	ô˜	ö r   