a
    MOj                     @   s   d Z dddddgdddd	dg d
dddddddgdddddddgdddddg ddddddg ddgZdd Zdd  ZdS )!u  
层级纯净池配置。

设计原则：
- 每一层定义一组信号条件；
- 第 N 层在前一层（base_layer）健康的基础上，再满足本层条件才算健康；
- 新增层级时，只需在本配置末尾追加，无需修改 sync_health_snapshot.py。

每条规则的条件格式：
- ("metric_key", expected_value)
- metric_key 对应 ocf_stock_metrics 中的指标
- expected_value 对 flag 指标是 0/1，对 text 指标是字符串

注意：layer1 没有 base_layer，作为入口层。
Zlayer1   u   利润质量：OCF/NI 健康N)ocf_ni_statushealthy)
layer_namelayer_orderdescription
base_layer
conditionsZlayer2   u1   资产负债表风险：无第2层硬规则命中))high_cash_high_debt_flag    )ar_to_revenue_high_flagr   )other_receivables_high_flagr   )inventory_to_revenue_high_flagr   ) precise_high_cash_high_debt_flagr   )goodwill_high_flagr   )construction_long_stuck_flagr   Zlayer3   uB   大股东 / 资不抵债风险：无质押过高、净资产为负)pledge_high_flagr   )negative_equity_flagr   Zlayer4   u   盈利与收入质量：收入有现金支撑、主业可持续盈利（注意：cash_to_revenue_low 对军工/地产/建筑等行业可能合理偏低，存在误伤可能，后续需复核）)cash_to_revenue_flagr   )core_profit_unsustainable_flagr   Zlayer5   u=   退市新规风险：无财务类/交易类退市指标触发))delist_revenue_profit_flagr   )delist_consecutive_loss_flagr   )delist_price_low_flagr   )delist_market_value_low_flagr   Zlayer6   ud   豆包风控层：无 10 条高确定性风控信号命中（含非标审计意见、立案调查）)
)ar_growth_over_rev_flagr   )long_inv_high_flagr   )current_ratio_low_flagr   )cash_ratio_low_flagr   )ocf_negative_consec_flagr   )debt_expand_flagr   )core_asset_sell_flagr   )goodwill_one_time_impair_flagr   )audit_non_standard_flagr   )regulatory_investigation_flagr   c                   C   s   t tdd dS )u.   返回按 layer_order 排序的层级定义。c                 S   s   | d S )Nr    )xr(   r(   7/tmp/quant_ocf_run_20260709_v3/ocf/config/layer_defs.py<lambda>a       z get_layer_defs.<locals>.<lambda>)key)sorted
LAYER_DEFSr(   r(   r(   r*   get_layer_defs_   s    r0   c                   C   s   dd t  D S )u!   返回所有层级名称列表。c                 S   s   g | ]}|d  qS )r   r(   ).0layerr(   r(   r*   
<listcomp>f   r,   z#get_layer_names.<locals>.<listcomp>)r0   r(   r(   r(   r*   get_layer_namesd   s    r4   )__doc__r/   r0   r4   r(   r(   r(   r*   <module>   sX   
N