
    %.j                    l    d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
 e G d d                      ZdS )	u  Persona:agent 的静态人设 + 由 MBTI 派生的行为画像。

这是 PRD §7.1「agent 工厂」的入参载体——外部只需提供声明式字段(YAML/JSON),
即可建出带行为画像的 agent 人设。字段 schema 仍在收敛中(PRD §12 P0)。
    )annotations)	dataclassfield)Any)BehaviorProfilembti_to_behaviorc                     e Zd ZU dZded<   ded<   ded<   ded<   dZded	<   d
Zded<    ee          Z	ded<    ee
          Zded<   d
Zded<   d
Zded<   d
Zded<    ed          Zded<   d!dZd!dZed"d            Zd S )#PersonauT   一个 agent 的人设;behavior 由 MBTI+年龄自动派生,不在入参里手填。strnameintagembti
occupationunspecifiedgender 	backstory)default_factoryz	list[str]hobbieszdict[str, str]relationshipssecretroledriveF)initr   behaviorreturnNonec                l    |                                   t          | j        | j                  | _        d S )N)	_validater   r   r   r   selfs    2/root/genesis-world/src/genesis/persona/persona.py__post_init__zPersona.__post_init__"   s+    (DH==    c                   | j         r| j                                         st          d          d| j        cxk     rdk     sn t          d| j                   | j        r| j                                        st          d          d S )Nu   Persona.name 不能为空r      u   Persona.age 不合理:u   Persona.occupation 不能为空)r   strip
ValueErrorr   r   r!   s    r#   r    zPersona._validate&   s    y 	:	 1 1 	:899948!!!!c!!!!@dh@@AAA 	@do&;&;&=&= 	@>???	@ 	@r%   datadict[str, Any]	'Persona'c                r    d | j         D              | di fd|                                D             S )uK   从声明式配置 dict 建 Persona;忽略未知字段以便向前兼容。c                    h | ]
}|d k    |S )r    ).0fs     r#   	<setcomp>z$Persona.from_dict.<locals>.<setcomp>1   s    HHHqZr%   c                $    i | ]\  }}|v 	||S r/   r/   )r0   kvknowns      r#   
<dictcomp>z%Persona.from_dict.<locals>.<dictcomp>2   s$    BBBtq!qEzzazzzr%   r/   )__dataclass_fields__items)clsr*   r6   s     @r#   	from_dictzPersona.from_dict.   sO     IHC4HHHsCCBBBBtzz||BBBCCCr%   N)r   r   )r*   r+   r   r,   )__name__
__module____qualname____doc____annotations__r   r   r   listr   dictr   r   r   r   r   r$   r    classmethodr;   r/   r%   r#   r
   r
      s9        ^^IIIHHHIIIOOOFIt444G4444$)E$$?$?$?M????FDNNNNEOOOO %5 1 1 1H1111> > > >@ @ @ @ D D D [D D Dr%   r
   N)r?   
__future__r   dataclassesr   r   typingr   genesis.persona.mbtir   r   r
   r/   r%   r#   <module>rH      s     # " " " " " ( ( ( ( ( ( ( (       B B B B B B B B "D "D "D "D "D "D "D "D "D "Dr%   