{
    "object_kind": "push",
    "event_name": "push",
    "before": "3de5f322f7a453418f4cbdaa18d0d77ed0726d2f",
    "after": "62a0b77839ed91c951d87928abea80fbd9392292",
    "ref": "refs\/heads\/main",
    "ref_protected": true,
    "checkout_sha": "62a0b77839ed91c951d87928abea80fbd9392292",
    "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": "9688db498495d3f7ffbdcde4a2f42e95677fff3b",
            "message": "Add post-call enhancements (D-082, D-083, D-084): translations, agent edits, and utterance-linked data\n\n- Frontend\/Backend: Added support for AI summary translations in agent language (`ai_summary_translation`), and agent-edited summaries with language tracking. Original summaries remain unchanged for snapshots and CRM.\n- Backend: Implemented utterance-linked data extraction (`utterance_refs`) for structured intelligence fields, ensuring data traceability.\n- API: Updated OpenAPI schemas for new fields (`ai_summary_edited`, `fields`, `edited_summary_language`) and updated query parameters for `assist_language`.\n- Tests: Extensive feature coverage for translations, edits, and data linking handling, including multi-language scenarios and inferred vs. stated confidence rules.\n",
            "title": "Add post-call enhancements (D-082, D-083, D-084): translations, agent edits,...",
            "timestamp": "2026-10-07T15:30:22+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/9688db498495d3f7ffbdcde4a2f42e95677fff3b",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "backend\/app\/Services\/Lead\/LeadFieldWriter.php",
                "backend\/database\/migrations\/2026_10_07_000200_add_assist_language_to_calls_and_results.php",
                "backend\/database\/migrations\/2026_10_07_000300_add_edited_summary_to_call_confirmations.php",
                "backend\/tests\/Feature\/EditedSummaryTest.php",
                "backend\/tests\/Feature\/LeadFieldsTest.php",
                "frontend\/lib\/core\/l10n\/assist_language_controller.dart"
            ],
            "modified": [
                "backend\/app\/Domain\/Analysis\/CallSummaryResult.php",
                "backend\/app\/Domain\/Analysis\/CallSummarySchema.php",
                "backend\/app\/Domain\/Analysis\/PostCallSummarizer.php",
                "backend\/app\/Domain\/Analysis\/QuestionBank.php",
                "backend\/app\/Http\/Controllers\/App\/CallController.php",
                "backend\/app\/Http\/Controllers\/App\/LeadController.php",
                "backend\/app\/Http\/Presenters\/AppPresenter.php",
                "backend\/app\/Models\/Call.php",
                "backend\/app\/Models\/CallConfirmation.php",
                "backend\/app\/Models\/CallResult.php",
                "backend\/app\/Models\/LeadFieldCurrent.php",
                "backend\/app\/Models\/LeadFieldValue.php",
                "backend\/app\/Services\/Call\/CallAnalysisService.php",
                "backend\/app\/Services\/Call\/CallConfirmationService.php",
                "backend\/app\/Services\/Call\/LiveAnalysisService.php",
                "backend\/tests\/Feature\/LiveAnalysisFlowTest.php",
                "backend\/tests\/Feature\/PostCallSummarizerTest.php",
                "config\/markets\/IT.yaml",
                "docs\/AI_PIPELINE.md",
                "docs\/DATA_MODEL.md",
                "docs\/DECISIONS.md",
                "docs\/MILESTONES.md",
                "docs\/SPEC.md",
                "frontend\/lib\/app.dart",
                "frontend\/lib\/core\/api\/lead_machine_api.dart",
                "frontend\/lib\/core\/api\/models\/call_models.dart",
                "frontend\/lib\/core\/api\/models\/lead_models.dart",
                "frontend\/lib\/core\/l10n\/labels.dart",
                "frontend\/lib\/features\/call_history\/call_detail_screen.dart",
                "frontend\/lib\/features\/lead_detail\/lead_detail_providers.dart",
                "frontend\/lib\/features\/live_call\/live_call_screen.dart",
                "frontend\/lib\/features\/settings\/settings_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\/api_client_test.dart",
                "frontend\/test\/call_detail_test.dart",
                "frontend\/test\/live_assist_test.dart",
                "frontend\/test\/session_flow_test.dart",
                "frontend\/test\/support\/fake_api.dart",
                "frontend\/test\/wrap_up_test.dart",
                "openapi\/app-api.yaml",
                "openapi\/crm-api.yaml",
                "prompts\/common\/summary.md"
            ],
            "removed": []
        },
        {
            "id": "d373bb73ee857e336222a30db8c80cfdac58208a",
            "message": "Add `SnapshotDetail` class for detailed call snapshot mapping (S6, AF-39)\n\n- Implement `SnapshotDetail` to interpret static, schema-versioned call snapshots.\n- Support missing key handling to ensure backward compatibility with older schemas.\n- Add fields for agent-approved vs. AI-proposed decisions, facts processing, transcripts, summaries, and translations.\n",
            "title": "Add `SnapshotDetail` class for detailed call snapshot mapping (S6, AF-39)",
            "timestamp": "2026-10-07T15:30:43+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/d373bb73ee857e336222a30db8c80cfdac58208a",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "frontend\/lib\/features\/call_history\/call_snapshot_detail.dart"
            ],
            "modified": [],
            "removed": []
        },
        {
            "id": "19f29fbd5fc0274b2d2d4b2106200ed8b6b16c88",
            "message": "Add post-call field editing and logging (D-085)\n\n- Frontend\/Backend: Introduced field editing in wrap-up for agent corrections (`field_edits`), enabled catalog-based additions, and ensured proper edits logging.\n- Backend: Implemented stricter AI value override rules (`confirmed` confidence), detailed error handling for invalid edits, and logging of actual changes for quality tracking.\n- API: Updated OpenAPI schema for field edits, catalog, and AI confidence rules.\n- Configuration: Added strict JSON schema enforcement with fallback for OpenAI.\n- Documentation: Updated decisions\/specs for D-085 field editing and logging.\n",
            "title": "Add post-call field editing and logging (D-085)",
            "timestamp": "2026-10-08T08:12:52+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/19f29fbd5fc0274b2d2d4b2106200ed8b6b16c88",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "frontend\/lib\/core\/design\/lm_edit_sheet.dart"
            ],
            "modified": [
                "backend\/app\/Domain\/Analysis\/LiveCallAnalyzer.php",
                "backend\/app\/Domain\/Llm\/OpenAiCompatibleLlmProvider.php",
                "backend\/app\/Http\/Controllers\/App\/CallController.php",
                "backend\/app\/Http\/Presenters\/AppPresenter.php",
                "backend\/app\/Models\/FieldEdit.php",
                "backend\/app\/Providers\/AppServiceProvider.php",
                "backend\/app\/Services\/Call\/AppCallService.php",
                "backend\/app\/Services\/Call\/CallConfirmationService.php",
                "backend\/app\/Services\/Call\/LiveAnalysisService.php",
                "backend\/app\/Services\/Call\/LiveTranscript.php",
                "backend\/app\/Services\/Lead\/LeadFieldWriter.php",
                "backend\/config\/llm.php",
                "backend\/routes\/app.php",
                "backend\/tests\/Feature\/LeadFieldsTest.php",
                "backend\/tests\/Feature\/LiveAnalysisFlowTest.php",
                "backend\/tests\/Feature\/LiveCallAnalyzerTest.php",
                "backend\/tests\/Feature\/OpenAiCompatibleLlmProviderTest.php",
                "docs\/DECISIONS.md",
                "docs\/MILESTONES.md",
                "docs\/SPEC.md",
                "frontend\/lib\/core\/api\/json.dart",
                "frontend\/lib\/core\/api\/lead_machine_api.dart",
                "frontend\/lib\/core\/api\/models\/call_models.dart",
                "frontend\/lib\/core\/design\/design.dart",
                "frontend\/lib\/core\/l10n\/labels.dart",
                "frontend\/lib\/features\/call_history\/call_detail_screen.dart",
                "frontend\/lib\/features\/live_call\/live_call_screen.dart",
                "frontend\/lib\/features\/live_call\/transcript_view.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\/live_assist_test.dart",
                "frontend\/test\/support\/fake_api.dart",
                "frontend\/test\/wrap_up_test.dart",
                "infra\/env.template",
                "openapi\/app-api.yaml"
            ],
            "removed": []
        },
        {
            "id": "411d05653b0665ed674e62632c051d71b47602fe",
            "message": "Add inbound call enhancements (D-088, D-089): agent target flexibility, stage event tracking, and post-call funnel events\n\n- Backend: Introduced `APP_INBOUND_AGENT_TARGET` to configure agent target (phone\/webRTC). Added `queued` state for inbound calls to play notice before agent ringing. Updated `StageEvent` creation (`called`, `reached`) for inbound cases.\n- Funnel: Implemented final funnel event (`quotation`, `appointment`) tracking based on confirmed call statuses.\n- Config: Added detailed STT batch settings for EU endpoints (Speechmatics, Deepgram).\n- API\/Documentation: Updated OpenAPI for call states and agent target handling; clarified notice sequence and post-call behaviors.\n- UI: Added prompt lab link in Lab interface.\n",
            "title": "Add inbound call enhancements (D-088, D-089): agent target flexibility, stage...",
            "timestamp": "2026-10-08T10:35:09+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/411d05653b0665ed674e62632c051d71b47602fe",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "backend\/app\/Domain\/Analysis\/PostCallDecisionInput.php",
                "backend\/app\/Domain\/Stt\/BatchTranscriber.php",
                "backend\/app\/Domain\/Stt\/BatchTranscribers.php",
                "backend\/app\/Domain\/Stt\/DeepgramBatchTranscriber.php",
                "backend\/app\/Domain\/Stt\/SpeechmaticsBatchTranscriber.php",
                "backend\/app\/Http\/Controllers\/Lab\/PromptLabController.php",
                "backend\/app\/Jobs\/EmitStageEvent.php",
                "backend\/app\/Jobs\/RunPromptLab.php",
                "backend\/app\/Jobs\/TranscribePromptLabAudio.php",
                "backend\/app\/Lab\/PromptLabService.php",
                "backend\/app\/Lab\/TranscriptParser.php",
                "backend\/app\/Models\/PromptLabRun.php",
                "backend\/app\/Services\/Funnel\/StageEventStore.php",
                "backend\/database\/migrations\/2026_10_08_000100_create_prompt_lab_runs_table.php",
                "backend\/resources\/views\/lab\/prompts.blade.php",
                "backend\/tests\/Feature\/PromptLabTest.php",
                "backend\/tests\/Feature\/StageEventStoreTest.php"
            ],
            "modified": [
                "CLAUDE.md",
                "backend\/app\/Domain\/Analysis\/PostCallSummarizer.php",
                "backend\/app\/Domain\/Analysis\/PromptLibrary.php",
                "backend\/app\/Domain\/Decision\/Rules\/D17HumanJudgementRequired.php",
                "backend\/app\/Domain\/Decision\/StageEvent.php",
                "backend\/app\/Domain\/Telephony\/FakeTelephonyProvider.php",
                "backend\/app\/Domain\/Telephony\/Providers\/TelnyxTelephonyProvider.php",
                "backend\/app\/Domain\/Telephony\/TelephonyProvider.php",
                "backend\/app\/Http\/Controllers\/Lab\/CallLabController.php",
                "backend\/app\/Http\/Middleware\/EnsureLabAccess.php",
                "backend\/app\/Services\/Call\/AppCallService.php",
                "backend\/app\/Services\/Call\/CallAnalysisService.php",
                "backend\/app\/Services\/Call\/CallConfirmationService.php",
                "backend\/config\/app_api.php",
                "backend\/config\/stt.php",
                "backend\/config\/telephony.php",
                "backend\/resources\/views\/lab\/call.blade.php",
                "backend\/routes\/lab.php",
                "backend\/tests\/Feature\/AppCallFlowTest.php",
                "backend\/tests\/Feature\/DecisionMatrixTest.php",
                "backend\/tests\/Feature\/InboundAppCallTest.php",
                "docs\/AI_PIPELINE.md",
                "docs\/API.md",
                "docs\/ARCHITECTURE.md",
                "docs\/DATA_MODEL.md",
                "docs\/DECISIONS.md",
                "docs\/DEVELOPMENT.md",
                "docs\/MILESTONES.md",
                "docs\/OPEN_QUESTIONS.md",
                "docs\/SPEC.md",
                "fixtures\/DEVIATIONS.md",
                "fixtures\/decision-rules\/D-17.json",
                "infra\/env.template",
                "media-gateway\/.gitignore",
                "media-gateway\/eslint.config.js",
                "media-gateway\/package.json",
                "openapi\/app-api.yaml"
            ],
            "removed": []
        },
        {
            "id": "b9b6c871a69be521c3929e230fbe9c2204606ab6",
            "message": "Integrate eligibility engine into call flow (D-090) and implement next-actions processing (D-091)\n\n- Backend: Connected the eligibility engine for input derivation and evaluation during the call process. Missing data now marked as `not_evaluated`, preventing false difficulty flags. The overall outcome reflects only evaluated rules, and detailed traces help agents identify missing inputs.\n- Scheduling: Added the next-actions processor for handling due follow-ups. Tasks move from `scheduled` to `due` or `blocked` at execution. Enhanced lead-level task updates with retry logic and failure logging.\n- Tests: Comprehensive tests for eligibility evaluation (`D-090`) and next-actions workflows (`D-091`), including coverage for complex rules, input completeness, and maturity-based conditions.\n- Documentation: Updated specs and milestones for D-090 and D-091, clarifying rules on missing data, evaluation logic, and next-steps task handling.\n",
            "title": "Integrate eligibility engine into call flow (D-090) and implement next-actions processing (D-091)",
            "timestamp": "2026-10-08T12:37:31+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/b9b6c871a69be521c3929e230fbe9c2204606ab6",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "backend\/app\/Console\/Commands\/NextActionsRunCommand.php",
                "backend\/app\/Domain\/Analysis\/PostCallEligibility.php",
                "backend\/app\/Domain\/Eligibility\/EligibilityInputs.php",
                "backend\/app\/Services\/Scheduling\/NextActionService.php",
                "backend\/tests\/Feature\/EligibilityFlowTest.php",
                "backend\/tests\/Feature\/NextActionServiceTest.php",
                "frontend\/test\/eligibility_rows_test.dart"
            ],
            "modified": [
                "backend\/app\/Domain\/Analysis\/CallSummaryResult.php",
                "backend\/app\/Domain\/Analysis\/CallSummarySchema.php",
                "backend\/app\/Domain\/Analysis\/PostCallDecisionInput.php",
                "backend\/app\/Domain\/Analysis\/PostCallSummarizer.php",
                "backend\/app\/Domain\/Eligibility\/EligibilityEngine.php",
                "backend\/app\/Domain\/Eligibility\/EligibilityOutcome.php",
                "backend\/app\/Domain\/Eligibility\/FieldConfidence.php",
                "backend\/app\/Domain\/Lead\/WorkQueue.php",
                "backend\/app\/Domain\/Stt\/SpeechmaticsBatchTranscriber.php",
                "backend\/app\/Http\/Presenters\/AppPresenter.php",
                "backend\/app\/Lab\/PromptLabService.php",
                "backend\/app\/Models\/Notification.php",
                "backend\/app\/Services\/Call\/AppCallService.php",
                "backend\/app\/Services\/Call\/CallAnalysisService.php",
                "backend\/app\/Services\/Call\/CallConfirmationService.php",
                "backend\/resources\/views\/lab\/prompts.blade.php",
                "backend\/routes\/console.php",
                "backend\/tests\/Feature\/EligibilityEngineTest.php",
                "backend\/tests\/Feature\/PostCallSummarizerTest.php",
                "backend\/tests\/Feature\/PromptLabTest.php",
                "docs\/AI_PIPELINE.md",
                "docs\/DATA_MODEL.md",
                "docs\/DECISIONS.md",
                "docs\/MILESTONES.md",
                "docs\/SPEC.md",
                "frontend\/lib\/core\/l10n\/labels.dart",
                "frontend\/lib\/features\/lead_detail\/lead_detail_screen.dart",
                "frontend\/lib\/l10n\/app_en.arb",
                "frontend\/lib\/l10n\/app_hu.arb",
                "frontend\/lib\/l10n\/app_it.arb",
                "prompts\/common\/summary.md"
            ],
            "removed": []
        },
        {
            "id": "62a0b77839ed91c951d87928abea80fbd9392292",
            "message": "Add notification center and phone call banner (D-092, D-093)\n\n- Notifications: Implemented list view for due next-actions, unread count in the tab and sidebar badges, and mark-as-read functionality. New notifications remain highlighted for better visibility during the session.\n- Phone Call Banner: Added a banner for ongoing inbound calls on the agent's phone, showing essential call details and quick access to live call screens.\n- Backend: Created `\/notifications` API for retrieving and marking notifications as read. Updated OpenAPI schema and migration for notification structures.\n- Frontend: Updated `LmBanner` for action buttons and integrated call and notification data providers.\n- Tests: Comprehensive scenarios covering notifications and phone call banner workflows, including refresh, state transitions, and visibility rules.\n- Localization: Updated strings for notification and phone call features in all supported languages.\n",
            "title": "Add notification center and phone call banner (D-092, D-093)",
            "timestamp": "2026-10-08T13:26:56+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/62a0b77839ed91c951d87928abea80fbd9392292",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "backend\/app\/Http\/Controllers\/App\/NotificationController.php",
                "backend\/tests\/Feature\/NotificationApiTest.php",
                "frontend\/lib\/core\/api\/models\/notification_models.dart",
                "frontend\/lib\/features\/incoming_call\/phone_call_banner.dart",
                "frontend\/lib\/features\/notifications\/notifications_providers.dart",
                "frontend\/test\/notifications_test.dart",
                "frontend\/test\/phone_call_banner_test.dart"
            ],
            "modified": [
                "backend\/routes\/app.php",
                "docs\/DECISIONS.md",
                "docs\/MILESTONES.md",
                "docs\/SPEC.md",
                "frontend\/lib\/core\/api\/lead_machine_api.dart",
                "frontend\/lib\/core\/api\/models.dart",
                "frontend\/lib\/core\/design\/lm_banner.dart",
                "frontend\/lib\/core\/design\/lm_tab_bar.dart",
                "frontend\/lib\/core\/l10n\/labels.dart",
                "frontend\/lib\/core\/widgets\/app_shell.dart",
                "frontend\/lib\/features\/notifications\/notifications_screen.dart",
                "frontend\/lib\/l10n\/app_en.arb",
                "frontend\/lib\/l10n\/app_hu.arb",
                "frontend\/lib\/l10n\/app_it.arb",
                "frontend\/test\/support\/fake_api.dart",
                "openapi\/app-api.yaml"
            ],
            "removed": []
        }
    ],
    "total_commits_count": 6,
    "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",
        "   3de5f32..62a0b77  main       -> origin\/main",
        "HEAD is now at 62a0b77 Add notification center and phone call banner (D-092, D-093)",
        "--OK--"
    ]
}