{
  "schema_version": "t3-w02-domain-map-v1",
  "workflow": "W02",
  "canonical_flow": [
    "admin_ui_tambah_or_upload",
    "POST /api/v1/admin/import/students-with-parents",
    "op.student + res.partner",
    "optional op.parent link",
    "optional res.users",
    "optional op.student.course via assign_to_batch_id",
    "admin update via /api/v1/admin/students/save"
  ],
  "entities": [
    {
      "concept": "student",
      "canonical_model": "op.student",
      "classification": "CANONICAL",
      "company_field": "company_id",
      "fe_routes": ["/students", "/students/create", "/students/:id"],
      "api": ["/api/v1/admin/import/students-with-parents", "/api/v1/admin/students/list", "/api/v1/admin/students/detail", "/api/v1/admin/students/save", "/api/v1/admin/students/set-active"],
      "capability": ["students.manage", "students.list.view"],
      "record_scope": "company_id in allowed_company_ids",
      "identifiers": [
        {"field": "nsn", "label": "NISN", "uniqueness": "company_unique", "required": false},
        {"field": "nid", "label": "NIK/NID", "uniqueness": "company_unique", "required": false},
        {"field": "sic", "label": "SIC", "uniqueness": "company_unique", "required": false}
      ]
    },
    {
      "concept": "student_partner",
      "canonical_model": "res.partner",
      "classification": "IDENTITY_PROJECTION",
      "company_field": "company_id"
    },
    {
      "concept": "student_user",
      "canonical_model": "res.users",
      "classification": "AUTH_ACCOUNT",
      "mandatory_at_onboarding": false,
      "creation_hooks": ["op.student._create_student_user", "import create_accounts", "account_generation_api"]
    },
    {
      "concept": "parent",
      "canonical_model": "op.parent",
      "classification": "CANONICAL",
      "company_field": "name.company_id | student_ids.company_id",
      "api": ["/api/v1/admin/parents/list", "/api/v1/admin/parents/detail", "/api/v1/admin/parents/partner/save", "/api/v1/admin/parents/relation/save", "/api/v1/admin/parents/relation/delete", "/api/v1/admin/parents/set-active"],
      "multi_child": true,
      "multi_parent_per_student": true
    },
    {
      "concept": "parent_partner",
      "canonical_model": "res.partner",
      "classification": "IDENTITY_PROJECTION"
    },
    {
      "concept": "parent_user",
      "canonical_model": "res.users",
      "classification": "AUTH_ACCOUNT",
      "mandatory_at_onboarding": false
    },
    {
      "concept": "batch_rombel",
      "canonical_model": "op.batch",
      "classification": "CANONICAL",
      "owned_by": "W01",
      "w02_usage": "enrollment target via assign_to_batch_id"
    },
    {
      "concept": "enrollment",
      "canonical_model": "op.student.course",
      "classification": "DERIVED"
    },
    {
      "concept": "admissions",
      "canonical_model": "scola.admission.*",
      "classification": "OPTIONAL",
      "w02_dependency": false
    }
  ],
  "gaps": [
    {
      "id": "T3W02-G-001",
      "title": "TambahSiswa classroom not bound to assign_to_batch_id",
      "severity": "S1"
    },
    {
      "id": "T3W02-G-002",
      "title": "Import strict_mode FE/BE default mismatch",
      "severity": "S2"
    },
    {
      "id": "T3W02-G-003",
      "title": "No dedicated Product students/create; create via import API",
      "severity": "S3",
      "disposition": "ACCEPT_AS_PRODUCT_PATH"
    }
  ]
}
