record; return $record->parts() ->withCount('candidates') ->orderBy('order') ->get() ->map(fn ($part) => [ 'id' => $part->id, 'title' => $part->title ?: '未命名区块', 'type' => $part->type ?: '未标注题型', 'question_count' => $part->question_count ?? 0, 'candidate_count' => $part->candidates_count ?? 0, 'raw_markdown' => $part->raw_markdown, 'has_error' => $part->question_count === null, ]) ->toArray(); } }