|string> */ public function rules(): array { $rules = [ 'layout_strategy' => ['nullable', 'string', 'in:overwrite,keep'], 'vendor_mode' => ['nullable', 'string', 'in:auto,composer,bundled'], // 코어 버전 비호환 강제 우회 플래그 'force' => ['nullable', 'boolean'], // 업데이트 후 검색 인덱스 재생성 여부 — 인덱스 잠금·재색인 비용이 있어 기본은 미수행 'rebuild_search_index' => ['nullable', 'boolean'], ]; return HookManager::applyFilters('core.module.perform_update_validation_rules', $rules, $this); } /** * 검증 오류 메시지 커스터마이징 * * @return array */ public function messages(): array { return [ 'layout_strategy.in' => __('modules.errors.invalid_layout_strategy'), 'vendor_mode.in' => __('modules.errors.invalid_vendor_mode'), ]; } }