# KRB Admissions child pages full-section importer v1

Dry-run-first Code Lab / Design API Playground importer for empty-main-slot Admissions child pages:

- Admissions Enquiry — `/admissions/admissions-enquiry`
- Book a Call with Admissions — `/admissions/book-a-call-with-admissions`
- Discovery Tours — `/admissions/discovery-mornings`
- Enrolment — `/admissions/enrolment`
- Fees — `/admissions/fees`
- Scholarships & Bursaries — `/admissions/scholarships-bursaries`
- Virtual Tours — `/admissions/virtual-tours`

Excluded: parent Admissions page, because the audit found it already has main-slot content.

## Safety

- `dryRun: true` by default.
- No publish, delete, remove, redirect, site settings, CMS schema, global styles, or visibility cleanup.
- Inserts missing top-level sections in source order.
- Uses existing Webflow assets from KRB uploaded static/page-image CSVs; does not upload new assets.
- Image prop handling uses the v3 Asset-object fallback pattern.

## Mapping notes

- Standard source text/mixed blocks map to `Section / Text Content`.
- Embedded Admissions/enrolment iframes are preserved in the Text Content rich HTML where present; verify the embed presentation after dry-run/live run.
- Source CTA blocks map to `Section / CTA`; if more than one link is present, the first is set and extra links are reported for visual/manual follow-up.
- Source Fees table maps to `Section / Text Content` with source table HTML preserved for visual verification.
- Source quicklinks/files map to individual `Section / CTA` download/link sections.
- Source video blocks map to `Section / Two Column Text & Image` using its `Visual/Video Embed` prop.
- Rich-text images stripped by the scraper are reintroduced as `Section / Image Cluster` sections and flagged for visual placement review.

## Expected section counts

```json
{
  "Admissions Enquiry": {
    "Section / Text Content": 2
  },
  "Book a Call with Admissions": {
    "Section / Text Content": 2
  },
  "Discovery Tours": {
    "Section / Text Content": 2
  },
  "Enrolment": {
    "Section / Text Content": 3,
    "Section / CTA": 1
  },
  "Fees": {
    "Section / Text Content": 4,
    "Section / CTA": 4
  },
  "Scholarships & Bursaries": {
    "Section / Text Content": 3,
    "Section / Image Cluster": 1
  },
  "Virtual Tours": {
    "Section / Text Content": 1,
    "Section / Two Column Text & Image": 3
  }
}
```

## Manual / visual verification notes

- Enrolment: source child 5 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Fees: quicklinks/files source child 6 mapped to 3 CTA download/link section(s); verify download presentation.
- Fees: source child 4 (block lazy-component table table--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Fees: source child 6 (block lazy-component quicklinks-files quicklinks-files--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Fees: source child 7 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Scholarships & Bursaries: source child 6 () was not natively recognised by scraper; mapped where safe, verify visually.
- Virtual Tours: source child 4 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Virtual Tours: source child 5 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Virtual Tours: source child 6 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.

## Run marker

Dry-run output marker: `KRB_ADMISSIONS_CHILD_PAGES_FULL_SECTION_IMPORT_V1_ALL_RESULT`

After dry-run review, change only `dryRun: true` to `dryRun: false` for live run.
