o
    9j                     @  s   d dl m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	 d dl
mZmZ dZdZd	Zd$ddZd%ddZd&ddZd'ddZd(ddZd)d"d#ZdS )*    )annotationsN)datetimetimezone)Path)Any)ALLOWED_ACTIONSload_pet_packagez0.1.0      fixture_dir
str | Pathoutput_rootreturnr   c                 C  s   t | }t |}t|}d|d  }d|d  }||d  }|d }|jddd t||d d  |d	  t|||}	t|	|}
t|}t||	}t	|d
 |	 t	|d |
 |d j
|dd t	|d | |S )Nzbuild-public-idzpackage-public-qaT)parentsexist_okassetspritesheetPathspritesheet.webpmanifest.jsonvalidation.jsonzcontact-sheet.htmlutf-8encodingzrun-summary.json)r   r   mkdirshutilcopy2_build_manifest_build_validation_build_contact_sheet_build_summary_write_json
write_text)r   r   fixture_pathoutput_pathpackagebuild_id
package_id	build_dirqa_dirmanifest
validationcontact_sheetsummary r/   =/opt/sixxie/releases/current/services/pet_builder/__init__.pyexport_fixture_build   s$   

r1   r&   dict[str, Any]r'   strr(   c                   sp   t tj dd}|| d  d  d ttt fddt	D d d	 d
  d	 d |dddddddS )Nz+00:00Zr   displayNameruntimeVersionc                   s(   g | ]}|t  d  | d ddqS )
animationsframeslow_disturbance)namer8   mode)int.0actionr&   r/   r0   
<listcomp>4   s    z#_build_manifest.<locals>.<listcomp>r   r   checksumAlgorithmchecksumFpublic_synthetic_fixture"high_fidelity_reference_preserving)kindasset_styleraw_media_includedmemory_text_included)r(   r'   pet_iddisplay_nameruntime_versionschema_version
cell_widthcell_heightstatesspritesheet_pathchecksum_algorithmrC   
created_atuser_approvedsource)
r   nowr   utc	isoformatreplaceSCHEMA_VERSION
CELL_WIDTHCELL_HEIGHTr   )r&   r'   r(   rS   r/   r@   r0   r   )   s.   


r   r+   c                 C  sd   ddt |d d dkdd | d D ttk| d d	d
k| d du dd}t| |d dS )NTr   rC   @   c                 S  s   g | ]}|d  qS )r:   r/   )r>   stater/   r/   r0   rA   O   s    z%_build_validation.<locals>.<listcomp>rP   rU   rG   rE   rT   F)manifest_completespritesheet_existschecksum_sha256states_allowedhigh_fidelity_assetuser_approval_requiredno_sensitive_payloads)okchecksfailure_reason)lenlistr   getallvalues)r+   r&   rg   r/   r/   r0   r   J   s   


r   c              	     sB   d  fddtD }d d  d d  d d  d| d		S )
N
c                 3  s.    | ]}d | d d | d  dV  qdS )z<li><strong>u!   </strong><span>低打扰动作，r7   r8   z frames</span></li>Nr/   r=   r@   r/   r0   	<genexpr>\   s
    
z'_build_contact_sheet.<locals>.<genexpr>zD<!doctype html>
<html lang="zh-CN">
<meta charset="utf-8" />
<title>r5   a   QA contact sheet</title>
<style>
  body { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif; background: #fbf7f0; color: #2e2a26; }
  main { max-width: 880px; margin: 32px auto; padding: 24px; background: #fff; border-radius: 18px; }
  img { width: 256px; height: 256px; object-fit: cover; object-position: left top; }
  li { margin: 8px 0; display: flex; gap: 12px; }
</style>
<main>
  <h1>u    本地 QA contact sheet</h1>
  <p>公开合成样例，仅用于第一版结构校验和高保真预览，不包含真实用户素材。</p>
  <img src="../spritesheet.webp" alt="z spritesheet preview" />
  <ul>z</ul>
</main>
</html>
)joinr   )r&   rowsr/   r@   r0   r    [   s   r    c              	   C  s"   d|d |d | d ddddd	S )
NTr(   r'   r   r   r   r   zqa/contact-sheet.html)rf   r(   r'   rJ   r+   spritesheetr,   r-   r/   )r&   r+   r/   r/   r0   r!   t   s   r!   pathpayloadNonec                 C  s"   | j tj|dddd dd d S )NF   )ensure_asciiindentrn   r   r   )r#   jsondumps)rs   rt   r/   r/   r0   r"      s   "r"   )r   r   r   r   r   r   )r&   r2   r'   r3   r(   r3   r   r2   )r+   r2   r&   r2   r   r2   )r&   r2   r   r3   )r&   r2   r+   r2   r   r2   )rs   r   rt   r2   r   ru   )
__future__r   ry   r   r   r   pathlibr   typingr   packages.pet_package_schemar   r   rZ   r[   r\   r1   r   r   r    r!   r"   r/   r/   r/   r0   <module>   s     


!

