fix(core,engine): OFFSET 순회 중 필터 컬럼 변경으로 인한 처리 누락 수정
Laravel chunk/each 는 OFFSET 기반이라, 콜백이 행의 필터 소속을 바꾸면 (필터 컬럼을 채우거나 매칭 행을 삭제하면) 다음 조회가 그만큼 앞으로 밀려 미처리 행을 조용히 건너뛴다. 250건/청크 100 이면 정확히 100건이 남는다. 코어·번들 확장 전수 조사로 확정한 6곳을 chunkById(키셋 순회)로 통일했다. 브라우저 검수(28축)에서 계획에 없던 결함 12건이 드러나 같은 사슬에서 수정했다. 이 중 layout_strategy=keep 무효화와 수정 감지 실패 시 "수정 없음" 오보는 사용자 작업 소실에 직결된다. 재발 방지로 audit 룰을 추가했고, 수정 6곳을 원복해 red 6건 / 복원 후 green 0건으로 판별력을 검증했다.
This commit is contained in:
@@ -4491,7 +4491,11 @@ class ModuleManager implements ModuleManagerInterface
|
||||
$onProgress?->__invoke('layout', '레이아웃 갱신 중...');
|
||||
if ($previousStatus === ExtensionStatus::Active->value && $module) {
|
||||
$preserveModified = ($layoutStrategy === 'keep');
|
||||
$this->registerModuleLayouts($identifier);
|
||||
// registerModuleLayouts() 를 여기서 호출하지 않는다 — 그 메서드는 전략을
|
||||
// 모른 채 모든 레이아웃의 content 와 original_content_hash 를 파일 기준으로
|
||||
// 덮어써서, 뒤따르는 refreshModuleLayouts($preserveModified) 가 비교할
|
||||
// "사용자 수정본" 을 이미 지워버린다(= keep 전략이 항상 무효화).
|
||||
// 신규 레이아웃 생성은 refreshModuleLayouts 의 created 분기가 담당한다.
|
||||
$this->registerLayoutExtensions($module);
|
||||
$this->refreshModuleLayouts($identifier, $preserveModified);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user