{
    "object_kind": "push",
    "event_name": "push",
    "before": "19b444fbd904f770833baf096877e6963ee48421",
    "after": "d7c28f1530519c65ccf515fd8cc4785a47bbe07c",
    "ref": "refs\/heads\/main",
    "ref_protected": true,
    "checkout_sha": "d7c28f1530519c65ccf515fd8cc4785a47bbe07c",
    "message": null,
    "user_id": 19,
    "user_name": "Bohunka Zsolt",
    "user_username": "bohunkazsolt",
    "user_email": "[REDACTED]",
    "user_avatar": "https:\/\/www.gravatar.com\/avatar\/495e14a024c9ddd64b339a3ee5bcce2be2e8468e23180b4ee001574938728865?s=80&d=identicon",
    "project_id": 206,
    "project": {
        "id": 206,
        "name": "leadmachine",
        "description": null,
        "web_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "avatar_url": null,
        "git_ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "git_http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git",
        "namespace": "LeadMachine",
        "visibility_level": 0,
        "path_with_namespace": "leadmachine\/leadmachine",
        "default_branch": "main",
        "ci_config_path": "",
        "homepage": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git"
    },
    "commits": [
        {
            "id": "d7c28f1530519c65ccf515fd8cc4785a47bbe07c",
            "message": "Integrate `ContactPolicy` logic and enhance lead scheduling capabilities.\n\n- **Frontend**:\n  - Added `contact_policy_test.dart` to validate contact hour calculations and server-client synchronization (`SPEC \u00a77, \u00a75`).\n  - Extended `auth_models.dart` and `call_models.dart` with `ContactPolicy` and scheduling-related properties.\n  - Introduced calendar and time slot selection updates (`LmCalendarPopover`) for improved UX.\n\n- **Backend**:\n  - Refined `NextActionService` to respect `ContactPolicy` in scheduling reminders outside contact hours.\n  - Added domain logic for `NextActionChannel` and `CallHistoryFilter` enumeration.\n\n- **Testing**:\n  - Added unit and integration tests to ensure strict adherence to contact policies and scheduling constraints.\n\n- **Documentation**:\n  - Updated docstrings and in-line comments for new `ContactPolicy` functionality and scheduling rules.\n",
            "title": "Integrate `ContactPolicy` logic and enhance lead scheduling capabilities.",
            "timestamp": "2026-10-10T10:43:10+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/d7c28f1530519c65ccf515fd8cc4785a47bbe07c",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "backend\/app\/Domain\/Crm\/CrmResponseStatus.php",
                "backend\/app\/Domain\/Decision\/NextActionChannel.php",
                "backend\/app\/Domain\/Normalization\/PhoneMasker.php",
                "backend\/app\/Domain\/Scheduling\/ContactPolicySummary.php",
                "backend\/app\/Http\/Controllers\/App\/NextActionController.php",
                "backend\/app\/Http\/Controllers\/App\/SettingsController.php",
                "backend\/app\/Http\/Requests\/ApiRequest.php",
                "backend\/app\/Http\/Requests\/App\/CallHistoryRequest.php",
                "backend\/app\/Http\/Requests\/App\/SetLeadReminderRequest.php",
                "backend\/app\/Http\/Requests\/App\/UpcomingNextActionsRequest.php",
                "backend\/app\/Http\/Requests\/App\/UpdateLeadFieldsRequest.php",
                "backend\/app\/Http\/Requests\/App\/UpdateReminderSettingsRequest.php",
                "backend\/app\/Models\/AgentSetting.php",
                "backend\/app\/Services\/Lead\/FieldEditParser.php",
                "backend\/app\/Services\/Lead\/InvalidFieldEdit.php",
                "backend\/app\/Services\/Lead\/LeadFieldEditService.php",
                "backend\/database\/migrations\/2026_10_10_000100_create_agent_settings_table.php",
                "backend\/database\/migrations\/2026_10_10_000200_add_response_status_to_crm_outbox_table.php",
                "backend\/database\/migrations\/2026_10_10_000610_add_lead_id_to_field_edits_table.php",
                "backend\/tests\/Feature\/CallHistoryApiTest.php",
                "backend\/tests\/Feature\/ContactPolicyApiTest.php",
                "backend\/tests\/Feature\/LeadDetailActionsTest.php",
                "backend\/tests\/Feature\/SettingsScreenApiTest.php",
                "frontend\/lib\/core\/api\/models\/contact_policy.dart",
                "frontend\/lib\/core\/api\/models\/settings_models.dart",
                "frontend\/lib\/core\/design\/README_REWORK.md",
                "frontend\/lib\/core\/design\/lm_account.dart",
                "frontend\/lib\/core\/design\/lm_dropdown.dart",
                "frontend\/lib\/core\/design\/lm_dropdown_pill.dart",
                "frontend\/lib\/core\/design\/lm_month_day.dart",
                "frontend\/lib\/core\/design\/lm_popover.dart",
                "frontend\/lib\/core\/widgets\/account_menu.dart",
                "frontend\/lib\/core\/widgets\/contact_hours.dart",
                "frontend\/lib\/features\/notifications\/notification_lead_panel.dart",
                "frontend\/test\/contact_policy_test.dart",
                "frontend\/test\/design_overlays_test.dart",
                "frontend\/test\/settings_api_test.dart",
                "frontend\/test\/settings_screen_test.dart"
            ],
            "modified": [
                "CLAUDE.md",
                "backend\/app\/Domain\/Crm\/CrmSendResult.php",
                "backend\/app\/Domain\/Crm\/MockCrmAdapter.php",
                "backend\/app\/Http\/Controllers\/Admin\/AdminController.php",
                "backend\/app\/Http\/Controllers\/Admin\/AdminRulesController.php",
                "backend\/app\/Http\/Controllers\/App\/AuthController.php",
                "backend\/app\/Http\/Controllers\/App\/CallController.php",
                "backend\/app\/Http\/Controllers\/App\/LeadController.php",
                "backend\/app\/Jobs\/SendCrmOutbox.php",
                "backend\/app\/Models\/CrmOutbox.php",
                "backend\/app\/Models\/FieldEdit.php",
                "backend\/app\/Services\/Call\/CallConfirmationService.php",
                "backend\/app\/Services\/Lead\/LeadFieldWriter.php",
                "backend\/app\/Services\/Scheduling\/NextActionService.php",
                "backend\/config\/telephony.php",
                "backend\/routes\/app.php",
                "backend\/tests\/Feature\/AdminTest.php",
                "docs\/API.md",
                "docs\/DATA_MODEL.md",
                "docs\/DECISIONS.md",
                "docs\/DEVELOPMENT.md",
                "docs\/OPEN_QUESTIONS.md",
                "docs\/SPEC.md",
                "frontend\/README.md",
                "frontend\/lib\/core\/api\/lead_machine_api.dart",
                "frontend\/lib\/core\/api\/models.dart",
                "frontend\/lib\/core\/api\/models\/auth_models.dart",
                "frontend\/lib\/core\/api\/models\/call_models.dart",
                "frontend\/lib\/core\/design\/design.dart",
                "frontend\/lib\/core\/design\/lm_banner.dart",
                "frontend\/lib\/core\/design\/lm_button.dart",
                "frontend\/lib\/core\/design\/lm_calendar.dart",
                "frontend\/lib\/core\/design\/lm_call_controls.dart",
                "frontend\/lib\/core\/design\/lm_card.dart",
                "frontend\/lib\/core\/design\/lm_edit_sheet.dart",
                "frontend\/lib\/core\/design\/lm_incoming_call.dart",
                "frontend\/lib\/core\/design\/lm_navigation.dart",
                "frontend\/lib\/core\/design\/lm_pickers.dart",
                "frontend\/lib\/core\/design\/lm_sidebar.dart",
                "frontend\/lib\/core\/design\/lm_text_field.dart",
                "frontend\/lib\/core\/l10n\/labels.dart",
                "frontend\/lib\/core\/theme\/tokens.dart",
                "frontend\/lib\/core\/widgets\/app_shell.dart",
                "frontend\/lib\/core\/widgets\/field_editor.dart",
                "frontend\/lib\/core\/widgets\/soft_phone_status.dart",
                "frontend\/lib\/features\/admin\/admin_api.dart",
                "frontend\/lib\/features\/admin\/admin_changes_screen.dart",
                "frontend\/lib\/features\/admin\/admin_product_screen.dart",
                "frontend\/lib\/features\/admin\/admin_products_screen.dart",
                "frontend\/lib\/features\/admin\/admin_prompt_lab.dart",
                "frontend\/lib\/features\/admin\/admin_rule_forms.dart",
                "frontend\/lib\/features\/admin\/admin_rules_screen.dart",
                "frontend\/lib\/features\/admin\/admin_shell.dart",
                "frontend\/lib\/features\/admin\/admin_users_screen.dart",
                "frontend\/lib\/features\/call_history\/call_detail_screen.dart",
                "frontend\/lib\/features\/call_history\/call_history_screen.dart",
                "frontend\/lib\/features\/call_history\/call_snapshot_detail.dart",
                "frontend\/lib\/features\/incoming_call\/incoming_call_overlay.dart",
                "frontend\/lib\/features\/lead_detail\/crm_fields_card.dart",
                "frontend\/lib\/features\/lead_detail\/lead_detail_screen.dart",
                "frontend\/lib\/features\/live_call\/call_setup_overlay.dart",
                "frontend\/lib\/features\/live_call\/live_call_screen.dart",
                "frontend\/lib\/features\/login\/login_screen.dart",
                "frontend\/lib\/features\/login\/sign_in_frame.dart",
                "frontend\/lib\/features\/notifications\/notifications_screen.dart",
                "frontend\/lib\/features\/settings\/settings_screen.dart",
                "frontend\/lib\/features\/work_queue\/work_queue_screen.dart",
                "frontend\/lib\/features\/wrap_up\/wrap_up_draft.dart",
                "frontend\/lib\/features\/wrap_up\/wrap_up_screen.dart",
                "frontend\/lib\/l10n\/app_en.arb",
                "frontend\/lib\/l10n\/app_hu.arb",
                "frontend\/lib\/l10n\/app_it.arb",
                "frontend\/test\/admin_test.dart",
                "frontend\/test\/call_detail_test.dart",
                "frontend\/test\/call_history_test.dart",
                "frontend\/test\/call_setup_overlay_test.dart",
                "frontend\/test\/incoming_call_test.dart",
                "frontend\/test\/lead_detail_fields_test.dart",
                "frontend\/test\/live_crm_fields_test.dart",
                "frontend\/test\/notifications_test.dart",
                "frontend\/test\/passkey_login_test.dart",
                "frontend\/test\/screenshots\/screens_test.dart",
                "frontend\/test\/session_flow_test.dart",
                "frontend\/test\/soft_phone_test.dart",
                "frontend\/test\/support\/fake_admin_api.dart",
                "frontend\/test\/support\/fake_api.dart",
                "frontend\/test\/work_queue_test.dart",
                "frontend\/test\/wrap_up_test.dart",
                "openapi\/app-api.yaml"
            ],
            "removed": []
        }
    ],
    "total_commits_count": 1,
    "push_options": [],
    "repository": {
        "name": "leadmachine",
        "url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "description": null,
        "homepage": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "git_http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git",
        "git_ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "visibility_level": 0
    },
    "output": [
        "\/etc\/apache2\/sites-available\/bohunkazsolt.leadmachine.dunahousedev.hu.conf exists.",
        "\/etc\/apache2\/sites-available\/leadmachine.dunahousedev.hu.conf exists.",
        "Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log",
        "An unexpected error occurred:",
        "BrokenPipeError: [Errno 32] Broken pipe",
        "Ask for help or search for solutions at https:\/\/community.letsencrypt.org. See the logfile \/var\/log\/letsencrypt\/letsencrypt.log or re-run Certbot with -v for more details.",
        "Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log",
        "An unexpected error occurred:",
        "BrokenPipeError: [Errno 32] Broken pipe",
        "Ask for help or search for solutions at https:\/\/community.letsencrypt.org. See the logfile \/var\/log\/letsencrypt\/letsencrypt.log or re-run Certbot with -v for more details.",
        "Fetching origin",
        "From git.dunahousedev.hu:leadmachine\/leadmachine",
        "   19b444f..d7c28f1  main       -> origin\/main",
        "HEAD is now at d7c28f1 Integrate `ContactPolicy` logic and enhance lead scheduling capabilities.",
        "--OK--"
    ]
}