
    mi                    v    d Z ddlmZ ddlZddlmZmZmZmZ  ej                  e
      Z	 d	 	 	 	 	 	 	 	 	 ddZy)ui  Generic DAG → level batches helper.

Phase 5.3 background_chain_render의 `_compute_chain_bg_levels`를 일반화.
Phase 7 floor_plan_render / background_render에서 재사용.

각 level[i]는 parent가 모두 이전 level에서 완료(또는 renderable_set 외부)
상태인 노드들. 같은 level 내 노드끼리는 독립 → ThreadPool 병렬 안전.
    )annotationsN)AnyDictListSetc                   g }t               }| D cg c]	  }||v s| }}|rg }g }	|D ]d  }|j                  |i       }
|
j                  |      xs dj                         }|r||v s||vr|j                  |       T|	j                  |       f |s#t        j                  dt        |	             |	}g }	|j                  |       |j                  |       |	}|r|S c c}w )u  `order` 순서를 보존하며 DAG를 level batch로 분할.

    Args:
        order: 노드 IDs (planner 결정 순서)
        items: id → node dict (parent_field key 보유)
        renderable_set: 실제로 렌더 대상인 IDs. 이 집합 밖 노드는 부모 부재로 간주.
        parent_field: 노드 dict의 부모 ID 필드명. 기본 "parent_id".

    Returns:
        level batches (input order 보존). cycle 검출 시 잔여 노드를 마지막 level로 flush.
     uW   compute_dag_levels: unresolved parent dependencies — flushing %d nodes as final level)setgetstripappendloggerwarninglenupdate)orderitemsrenderable_setparent_fieldlevels	completednid	remainingready	not_readynodepids               V/Users/manta/Documents/Projects/TheRoad-I1/backend/app/modules/pipeline/_dag_levels.pycompute_dag_levelsr      s    " !F%I %?)>I?
!	C99S"%D88L)/R668C#*c.GS!  %  NNiI EIe	' ( M- @s
   	CC)	parent_id)
r   z	List[str]r   zDict[str, Dict[str, Any]]r   zSet[str]r   strreturnzList[List[str]])__doc__
__future__r   loggingtypingr   r   r   r   	getLogger__name__r   r        r   <module>r+      sb    #  ' '			8	$ $	))$) ) 	)
 )r*   