"""Phase 0 cross-cutting foundation — three new SME-Hub verbs.

Adds:
* ``smehub_entrepreneur_pending_review`` — admin-side alert when a new
  entrepreneur profile lands in the verification queue. Replaces the existing
  reuse of ``smehub_entrepreneur_verified`` for the *submission* event
  (verb hygiene fix flagged by the SP1 audit).
* ``smehub_new_tracking_record`` — M&E officer alert when a new SP1 baseline
  is captured (FRSME-OBR037). Used by Phase 2.
* ``smehub_role_profile_verified`` — generic verb for non-entrepreneur role
  profile verification (Mentor / Investor / Service Provider / Partner /
  Buyer). Replaces the existing reuse of ``smehub_entrepreneur_verified``.
"""
from django.db import migrations, models


_BASE_CHOICES = [
    ("grant_awarded", "Grant awarded"),
    ("deadline_reminder", "Deadline reminder"),
    ("application_status", "Application status"),
    ("call_published", "Call published"),
    ("reviewer_assigned", "Reviewer assigned"),
    ("review_intake_manager", "Grants — assign reviewers"),
    ("interview_completed", "Interview completed"),
    ("milestone_overdue", "Milestone overdue"),
    ("finance_disbursement", "Finance disbursement"),
    ("rep_certificate_issued", "Course certificate issued"),
    ("rep_course_published", "REP course published"),
    ("rep_course_unpublished", "REP course returned to draft"),
    ("rep_course_review_submitted", "REP course submitted for publish review"),
    ("rep_course_review_returned", "REP publish review returned"),
    ("rep_assignment_deadline_extended", "REP assignment deadline extended"),
    ("rep_profile_updated", "REP — profile updated"),
    ("rep_role_changed", "REP — role changed"),
    ("rep_bulk_import_complete", "REP — bulk user import complete"),
    ("rep_course_archived", "REP — course archived"),
    ("rep_course_significant_update", "REP — significant course update"),
    ("rep_course_revision_published", "REP — course revision published"),
    ("rep_enrolment_confirmed", "REP — enrolment confirmed"),
    ("rep_enrolment_approved", "REP — enrolment approved"),
    ("rep_enrolment_rejected", "REP — enrolment rejected"),
    ("rep_rims_auto_enrolled", "REP — auto-enrolled via scholarship"),
    ("rep_waitlist_promoted", "REP — promoted from waitlist"),
    ("rep_live_session_scheduled", "REP — live session scheduled"),
    ("rep_live_session_starting", "REP — live session starting soon"),
    ("rep_live_recording_ready", "REP — session recording available"),
    ("rep_wiki_page_updated", "REP — wiki page updated"),
    ("rep_forum_reply", "REP — forum reply"),
    ("rep_forum_post_flagged", "REP — forum post flagged for review"),
    ("rep_forum_moderation_outcome", "REP — forum moderation outcome"),
    ("rep_assignment_submitted", "REP — assignment submitted"),
    ("rep_assignment_graded", "REP — assignment graded"),
    ("rep_quiz_auto_graded", "REP — quiz auto-graded"),
    ("rep_late_submission", "REP — late submission recorded"),
    ("rep_grade_override_applied", "REP — grade override applied"),
    ("rep_grade_appeal_submitted", "REP — grade appeal submitted"),
    ("rep_workshop_peer_review_assigned", "REP — peer review assigned"),
    ("rep_certificate_revoked", "REP — certificate revoked"),
    ("rep_connection_request", "REP — connection request received"),
    ("rep_connection_accepted", "REP — connection accepted"),
    ("rep_dm_received", "REP — direct message received"),
    ("rep_mentor_matched", "REP — matched with mentor"),
    ("rep_job_listing_match", "REP — job listing match"),
    ("rep_cv_export_ready", "REP — CV export ready"),
    ("rep_recommendation_surfaced", "REP — recommendation surfaced"),
    ("rep_report_ready", "REP — report ready for download"),
    ("rep_mel_push_failed", "REP — M&EL push failure alert"),
    ("repo_doc_submitted", "Repository document submitted"),
    ("repo_qa_assigned", "Repository QA review assigned"),
    ("repo_doc_approved", "Repository document approved"),
    ("repo_doc_rejected", "Repository document rejected"),
    ("repo_doc_revision_required", "Repository document revision required"),
    ("repo_doc_published", "Repository document published"),
    ("repo_doc_withdrawn", "Repository document withdrawn"),
    ("repo_access_requested", "Repository access requested"),
    ("repo_access_granted", "Repository access granted"),
    ("repo_retention_due", "Repository retention due"),
    ("repo_rep_link_broken", "REP link to withdrawn document"),
    ("repo_review_task_assigned", "Repository review task assigned"),
    ("repo_review_task_due", "Repository review task due soon"),
    ("repo_doc_shared", "Repository document shared with you"),
    ("repo_qa_overdue", "Repository QA review overdue"),
    ("repo_saved_search_alert", "Repository saved-search alert"),
    ("repo_doc_ingested", "Repository document ingested"),
    ("repo_tag_suggestion_pending", "Repository tag awaiting approval"),
    ("mel_indicator_off_track", "M&EL — indicator off track"),
    ("mel_activity_delayed", "M&EL — activity delayed"),
    ("mel_data_point_rejected", "M&EL — data point rejected"),
    ("alumni_profile_created", "Alumni — profile created"),
    ("alumni_milestone_added", "Alumni — milestone added"),
    ("alumni_orcid_sync_failed", "Alumni — ORCID sync failed"),
    ("alumni_mentorship_requested", "Alumni — mentorship requested"),
    ("alumni_mentorship_accepted", "Alumni — mentorship accepted"),
    ("alumni_mentorship_declined", "Alumni — mentorship declined"),
    ("alumni_event_registered", "Alumni — event registered"),
    ("alumni_event_reminder", "Alumni — event reminder"),
    ("alumni_tracer_survey_invited", "Alumni — tracer survey invitation"),
    ("alumni_group_new_event", "Alumni — new event in your group"),
    ("alumni_group_event_nudge", "Alumni — upcoming group event reminder"),
    ("alumni_group_announcement", "Alumni — group announcement"),
    ("alumni_group_member_promoted", "Alumni — promoted to group moderator"),
    ("alumni_mentorship_session_logged", "Alumni — mentorship session logged"),
    ("alumni_mentorship_completed", "Alumni — mentorship completed"),
    ("alumni_mentorship_withdrawn", "Alumni — mentorship request withdrawn"),
    ("alumni_spotlight_endorsed", "Alumni — spotlight endorsement received"),
    ("alumni_spotlight_featured", "Alumni — selected for a spotlight"),
    ("alumni_spotlight_digest", "Alumni — spotlight digest"),
    ("smehub_registration_verify_email", "SME-Hub — verify your email"),
    ("smehub_entrepreneur_pending_review", "SME-Hub — entrepreneur awaiting review"),
    ("smehub_entrepreneur_verified", "SME-Hub — entrepreneur verified"),
    ("smehub_entrepreneur_rejected", "SME-Hub — entrepreneur rejected"),
    ("smehub_entrepreneur_more_info", "SME-Hub — more information requested"),
    ("smehub_business_pending_review", "SME-Hub — business awaiting review"),
    ("smehub_business_verified", "SME-Hub — business verified"),
    ("smehub_business_rejected", "SME-Hub — business rejected"),
    ("smehub_business_revoked", "SME-Hub — business revoked"),
    ("smehub_new_tracking_record", "SME-Hub — new M&E tracking record"),
    ("smehub_role_profile_verified", "SME-Hub — role profile verified"),
    ("smehub_programme_published", "SME-Hub — incubation programme published"),
    ("smehub_programme_eligible", "SME-Hub — you are eligible for a programme"),
    ("smehub_application_received", "SME-Hub — application received"),
    ("smehub_application_returned", "SME-Hub — application returned for info"),
    ("smehub_judge_assigned", "SME-Hub — judge assignment"),
    ("smehub_judge_reminder", "SME-Hub — judge scoring reminder"),
    ("smehub_cohort_accepted", "SME-Hub — accepted into cohort"),
    ("smehub_cohort_rejected", "SME-Hub — application not selected"),
    ("smehub_mentor_assigned", "SME-Hub — mentor assigned"),
    ("smehub_session_scheduled", "SME-Hub — mentorship session scheduled"),
    ("smehub_session_cancelled", "SME-Hub — mentorship session cancelled"),
    ("smehub_programme_complete", "SME-Hub — programme completed"),
    ("smehub_certificate_issued", "SME-Hub — certificate issued"),
    ("smehub_connection_requested", "SME-Hub — connection request received"),
    ("smehub_connection_accepted", "SME-Hub — connection accepted"),
    ("smehub_connection_declined", "SME-Hub — connection declined"),
    ("smehub_mou_drafted", "SME-Hub — MoU draft ready for review"),
    ("smehub_mou_formalised", "SME-Hub — MoU formalised"),
    ("smehub_market_demand_match", "SME-Hub — new market demand for you"),
    ("smehub_demand_response", "SME-Hub — demand response received"),
    ("smehub_advisory_booked", "SME-Hub — advisory session booked"),
    ("smehub_advisory_cancelled", "SME-Hub — advisory session cancelled"),
    ("smehub_showcase_published", "SME-Hub — showcase event published"),
    ("smehub_challenge_published", "SME-Hub — innovation challenge open"),
    ("smehub_showcase_participant_confirmed", "SME-Hub — confirmed for showcase"),
    ("smehub_deal_room_opened", "SME-Hub — deal room opened"),
    ("smehub_deal_room_message", "SME-Hub — new message in deal room"),
    ("smehub_deal_room_document", "SME-Hub — new document in deal room"),
    ("smehub_deal_room_expired", "SME-Hub — deal room expired"),
    ("smehub_agreement_formalised", "SME-Hub — agreement formalised"),
    ("smehub_funding_call_published", "SME-Hub — funding call published"),
    ("smehub_funding_call_match", "SME-Hub — funding match for your business"),
    ("smehub_funding_outcome", "SME-Hub — funding application outcome"),
    ("smehub_investor_request", "SME-Hub — investor pitch request"),
    ("smehub_investor_accepted", "SME-Hub — investor accepted your request"),
    ("smehub_investor_declined", "SME-Hub — investor declined your request"),
    ("smehub_funding_secured", "SME-Hub — funding secured"),
    ("smehub_feedback_survey", "SME-Hub — share your feedback"),
    ("generic", "Generic"),
]


class Migration(migrations.Migration):

    dependencies = [
        ("core", "0030_alter_notification_verb_and_more"),
    ]

    operations = [
        migrations.AlterField(
            model_name="notification",
            name="verb",
            field=models.CharField(
                choices=_BASE_CHOICES,
                default="generic",
                max_length=64,
            ),
        ),
        migrations.AlterField(
            model_name="notificationtemplate",
            name="verb",
            field=models.CharField(
                choices=_BASE_CHOICES,
                help_text="Notification verb this template applies to.",
                max_length=64,
                unique=True,
            ),
        ),
    ]
