{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 774,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "279100731de579a641a727198fe52dc60054b233",
            "branch" : [
              {
                "SHA1" : "279100731de579a641a727198fe52dc60054b233",
                "name" : "refs/remotes/origin/dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "279100731de579a641a727198fe52dc60054b233",
            "branch" : [
              {
                "SHA1" : "279100731de579a641a727198fe52dc60054b233",
                "name" : "refs/remotes/origin/dev"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "279100731de579a641a727198fe52dc60054b233",
        "branch" : [
          {
            "SHA1" : "279100731de579a641a727198fe52dc60054b233",
            "name" : "refs/remotes/origin/dev"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/younex1/erp-nuxt-frontend.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#774",
  "duration" : 73944,
  "estimatedDuration" : 60620,
  "executor" : None,
  "fullDisplayName" : "build-logship-frontend #774",
  "id" : "774",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 774,
  "queueId" : 5858,
  "result" : "SUCCESS",
  "timestamp" : 1792627200766,
  "url" : "https://jenkins.younex.de/job/build-logship-frontend/774/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/components/accounting/SettlementToolbar.vue",
          "app/pages/accounting/amazon-settlements.vue",
          "app/composables/useLexofficeSettlementExport.ts"
        ],
        "commitId" : "95a60a86c097975e28c7c8232c25ccbe4f4d7d5e",
        "timestamp" : 1792553276000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Amazon settlements: Lexoffice CSV export follows the grid – exports exactly the visible (filtered) rows of the ticked periods instead of re-fetching whole periods; partial periods go out without payout/residue row and are reported; toolbar label shows rows · periods; grid height fills the remaining viewport (ResizeObserver + resize)\u000a",
        "date" : "2026-10-21 05:27:56 +0200",
        "id" : "95a60a86c097975e28c7c8232c25ccbe4f4d7d5e",
        "msg" : "Amazon settlements: Lexoffice CSV export follows the grid – exports exactly the visible (filtered) rows of the ticked periods instead of re-fetching whole periods; partial periods go out without payout/residue row and are reported; toolbar label shows rows · periods; grid height fills the remaining viewport (ResizeObserver + resize)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/components/accounting/SettlementToolbar.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/accounting/amazon-settlements.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useLexofficeSettlementExport.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".claude/rules/accounting/lexoffice.md"
        ],
        "commitId" : "3099df0306afe1bf42b92714c17485116c69d7f6",
        "timestamp" : 1792553287000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Rules: note the visible-rows scope of the Amazon settlement Lexoffice CSV export\u000a",
        "date" : "2026-10-21 05:28:07 +0200",
        "id" : "3099df0306afe1bf42b92714c17485116c69d7f6",
        "msg" : "Rules: note the visible-rows scope of the Amazon settlement Lexoffice CSV export",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".claude/rules/accounting/lexoffice.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/accounting/amazon-settlements.vue",
          ".claude/rules/accounting/lexoffice.md"
        ],
        "commitId" : "d9b873bc0d17f9874be8a8a4cf52a64e7a0a6e6d",
        "timestamp" : 1792555550000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Amazon settlements: periods with payout status Unknown/Failed are exportable (only Processing is excluded) – negative periods get an 'Amazon Belastung' payout row, failed transfers none; disabled export button explains how many visible rows sit in non-exportable/unticked periods\u000a",
        "date" : "2026-10-21 06:05:50 +0200",
        "id" : "d9b873bc0d17f9874be8a8a4cf52a64e7a0a6e6d",
        "msg" : "Amazon settlements: periods with payout status Unknown/Failed are exportable (only Processing is excluded) – negative periods get an 'Amazon Belastung' payout row, failed transfers none; disabled export button explains how many visible rows sit in non-exportable/unticked periods",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".claude/rules/accounting/lexoffice.md"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/accounting/amazon-settlements.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/components/mail/LeadFollowupModal.vue",
          "app/components/AgGrid/AgLeadExpireToggle.vue",
          "app/pages/users/leads/index.vue",
          "server/api/mail/lead-followups.get.ts",
          "app/assets/langs/shared.js"
        ],
        "commitId" : "090cc23eef312f4cf2affc3c074d9f88b539fccf",
        "timestamp" : 1792555983000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Leads: Unanswered check skips expired leads by default (opt-in checkbox lists them badged, stat shows how many were skipped); one-click expire/reactivate clock column in the list (flags route, row leaves the list while 'Hide expired' is on, previous status restored on reactivate)\u000a",
        "date" : "2026-10-21 06:13:03 +0200",
        "id" : "090cc23eef312f4cf2affc3c074d9f88b539fccf",
        "msg" : "Leads: Unanswered check skips expired leads by default (opt-in checkbox lists them badged, stat shows how many were skipped); one-click expire/reactivate clock column in the list (flags route, row leaves the list while 'Hide expired' is on, previous status restored on reactivate)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "server/api/mail/lead-followups.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "add",
            "file" : "app/components/AgGrid/AgLeadExpireToggle.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/index.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/components/mail/LeadFollowupModal.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/utils/dhlHelper.ts",
          ".claude/rules/fulfillment/shippers.md"
        ],
        "commitId" : "3acdcc2133e82953e85e2c67bbc46bbe48a664cb",
        "timestamp" : 1792580585000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "DHL: token errors tell network/DNS failures ('DHL-API nicht erreichbar', credentials not checked) and DHL 5xx outages apart from real login rejections; recipe documents where the main DHL account lives and the Unbound resolver fix\u000a",
        "date" : "2026-10-21 13:03:05 +0200",
        "id" : "3acdcc2133e82953e85e2c67bbc46bbe48a664cb",
        "msg" : "DHL: token errors tell network/DNS failures ('DHL-API nicht erreichbar', credentials not checked) and DHL 5xx outages apart from real login rejections; recipe documents where the main DHL account lives and the Unbound resolver fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".claude/rules/fulfillment/shippers.md"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/dhlHelper.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/components/integrations/CommissionModal.vue",
          "app/pages/integrations/commission.vue",
          "app/composables/usePaketTypes.ts"
        ],
        "commitId" : "f98f9286eab7a7f7d351db6cadfc4b036558eecb",
        "timestamp" : 1792581475000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Commission page: sidebar regrouped (carrier header with logo → Shipping Address → Shipping → Tisch & Printing, no dead space); paket type as Nuxt UI SelectBox showing the real product names (Paket S/M/L/XL, Keine Verpackung, Kleinpaket) with CODE badge + hint via shared usePaketTypes catalog (modal select uses it too); shipping service as logo cards; Tisch as SelectBox; next-step banner on light tinted surface with dark text; commission-system pill moved to the bottom activity bar; achievement thresholds doubled (gold 20 / platinum 30 / diamond 40 in 10 min, test codes TEST20/30/40)\u000a",
        "date" : "2026-10-21 13:17:55 +0200",
        "id" : "f98f9286eab7a7f7d351db6cadfc4b036558eecb",
        "msg" : "Commission page: sidebar regrouped (carrier header with logo → Shipping Address → Shipping → Tisch & Printing, no dead space); paket type as Nuxt UI SelectBox showing the real product names (Paket S/M/L/XL, Keine Verpackung, Kleinpaket) with CODE badge + hint via shared usePaketTypes catalog (modal select uses it too); shipping service as logo cards; Tisch as SelectBox; next-step banner on light tinted surface with dark text; commission-system pill moved to the bottom activity bar; achievement thresholds doubled (gold 20 / platinum 30 / diamond 40 in 10 min, test codes TEST20/30/40)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/components/integrations/CommissionModal.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/integrations/commission.vue"
          },
          {
            "editType" : "add",
            "file" : "app/composables/usePaketTypes.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/integrations/commission.vue"
        ],
        "commitId" : "d81042d263d7e1e0b634367001da80cdbbea2381",
        "timestamp" : 1792581622000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Commission page: paket type picked from a chip grid (all types visible as buttons with name + CODE badge, click again clears, focus returns to the scanner input) instead of a dropdown\u000a",
        "date" : "2026-10-21 13:20:22 +0200",
        "id" : "d81042d263d7e1e0b634367001da80cdbbea2381",
        "msg" : "Commission page: paket type picked from a chip grid (all types visible as buttons with name + CODE badge, click again clears, focus returns to the scanner input) instead of a dropdown",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/integrations/commission.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/integrations/commission.vue"
        ],
        "commitId" : "009da7b7ae0c2a9961ae424a21fd790de45ff2d8",
        "timestamp" : 1792581951000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Commission page: paket type chips collapsed behind a select-style row (placeholder or the chosen type with CODE badge + hint); click expands the grid, picking a chip or a CODE scan collapses it\u000a",
        "date" : "2026-10-21 13:25:51 +0200",
        "id" : "009da7b7ae0c2a9961ae424a21fd790de45ff2d8",
        "msg" : "Commission page: paket type chips collapsed behind a select-style row (placeholder or the chosen type with CODE badge + hint); click expands the grid, picking a chip or a CODE scan collapses it",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/integrations/commission.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/integrations/commission.vue"
        ],
        "commitId" : "157878ce95241e60671aa2377ddd240dbfa1ee7b",
        "timestamp" : 1792582252000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Commission page: shipping service cards collapsed behind the current choice (logo + name + hint), click expands, pick collapses; sidebar carrier header now follows the SELECTED service (logo + name) with the order's shipper as subline; logo images keyed so they re-render on change\u000a",
        "date" : "2026-10-21 13:30:52 +0200",
        "id" : "157878ce95241e60671aa2377ddd240dbfa1ee7b",
        "msg" : "Commission page: shipping service cards collapsed behind the current choice (logo + name + hint), click expands, pick collapses; sidebar carrier header now follows the SELECTED service (logo + name) with the order's shipper as subline; logo images keyed so they re-render on change",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/integrations/commission.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/integrations/commission.vue"
        ],
        "commitId" : "2acbeaf1a8f6816a4e5adb0809f18a9c3f9865ca",
        "timestamp" : 1792582455000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Commission page: multi-parcel block fits the sidebar column (no outer margin, stacked header, full-width compact 'Neues Paket' button, wrapping count row)\u000a",
        "date" : "2026-10-21 13:34:15 +0200",
        "id" : "2acbeaf1a8f6816a4e5adb0809f18a9c3f9865ca",
        "msg" : "Commission page: multi-parcel block fits the sidebar column (no outer margin, stacked header, full-width compact 'Neues Paket' button, wrapping count row)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/integrations/commission.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/components/admin/LeadDetailRecordActivity.vue",
          "server/api/telephony/recordings/index.get.ts",
          "app/assets/langs/shared.js"
        ],
        "commitId" : "eb3b51da3dd92e9d5d7d49e53dd3a14b1ebb6c27",
        "timestamp" : 1792582499000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Leads: phone-call activities show the matching FreePBX recording inline (matched by time, ≤15 min), with cached whisper transcript preview (expand/copy), play button and a Transkribieren action; recordings route gains withTranscripts=1 to embed cached transcripts\u000a",
        "date" : "2026-10-21 13:34:59 +0200",
        "id" : "eb3b51da3dd92e9d5d7d49e53dd3a14b1ebb6c27",
        "msg" : "Leads: phone-call activities show the matching FreePBX recording inline (matched by time, ≤15 min), with cached whisper transcript preview (expand/copy), play button and a Transkribieren action; recordings route gains withTranscripts=1 to embed cached transcripts",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/components/admin/LeadDetailRecordActivity.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "edit",
            "file" : "server/api/telephony/recordings/index.get.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".claude/rules/telephony/telephony.md"
        ],
        "commitId" : "15e1bfad620b3d0df5124241e42eea8fe7e37b9a",
        "timestamp" : 1792582869000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Rules: telephony — activity-entry transcript matching (by time only) and the local-dev PBX tunnel (CDR/recordings allow-list)\u000a",
        "date" : "2026-10-21 13:41:09 +0200",
        "id" : "15e1bfad620b3d0df5124241e42eea8fe7e37b9a",
        "msg" : "Rules: telephony — activity-entry transcript matching (by time only) and the local-dev PBX tunnel (CDR/recordings allow-list)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".claude/rules/telephony/telephony.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".claude/rules/mail/lead-email-history.md"
        ],
        "commitId" : "66d33475431ab2513802915148c451aba804b913",
        "timestamp" : 1792583447000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Rules: lead e-mail history — ERP-sent staff mails now relay via Exchange (sender-dependent postfix relay on prod) so mailpiler archives them; IM chip still has no Sent copy\u000a",
        "date" : "2026-10-21 13:50:47 +0200",
        "id" : "66d33475431ab2513802915148c451aba804b913",
        "msg" : "Rules: lead e-mail history — ERP-sent staff mails now relay via Exchange (sender-dependent postfix relay on prod) so mailpiler archives them; IM chip still has no Sent copy",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".claude/rules/mail/lead-email-history.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/utils/leads/monthlyOrders.ts",
          "app/composables/useOfferContract.ts",
          "server/utils/leads/leadAssessment.ts",
          "server/utils/leads/leadQualification.ts",
          "server/api/webhooks/fulfillment-leads.post.ts",
          "app/components/DateTimeInputLocal.vue",
          "app/pages/users/leads/[id]/edit.vue",
          ".claude/rules/leads/crm-qualification.md",
          "app/assets/langs/shared.js",
          "server/api/admin/users/store.post.ts",
          "app/components/AgGrid/AgLeadRating.vue",
          "server/api/offers/contract/send.post.ts",
          "app/components/DateInputDe.vue",
          "app/components/admin/LeadDetailRecordActivity.vue",
          "server/utils/offers/quoteConfirmation.ts",
          "app/composables/useOfferQuote.ts",
          "server/api/webhooks/landing-leads.post.ts",
          "server/api/admin/users/lead-lists.get.ts",
          "server/utils/offers/contractSigning.ts",
          "app/composables/useLeadQualification.ts",
          "app/pages/users/leads/index.vue",
          "app/components/admin/LeadForm.vue",
          "app/pages/users/leads/create.vue",
          "server/api/admin/users/[id]/flags.put.ts",
          "server/api/offers/quote/send.post.ts",
          "app/pages/users/leads/[id]/view.vue"
        ],
        "commitId" : "5756b9cccea6ecc4ffffd23e83c091157067f411",
        "timestamp" : 1792587970000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Leads: CRM qualification fields (17 custom AD_User columns) with full CRUD on the lead page and inline editing in the leads list\u000a\u000a- LeadRating (yellow 1–5 stars), FollowUpDate (+ note, quick +1/+3/+7/+14, past days greyed out, overdue/today badges), MonthlyOrders, SkuCount, ShopSystem, BusinessModel + LostReason (reference lists read from the API), ExpectedMonthlyValue, WinProbability (auto per stage: working 25 · quote 50 · accepted 70 · contract 85 · signed 95 · converted 100 · lost 0, never lowered automatically), ExpectedStartDate, AiScore (written by KI-Analyse), AvgParcelWeight, address LeadStreet/LeadZip/LeadCity/LeadCountry (prefills quote & contract, written back on send)\u000a- every control autosaves via PUT /api/admin/users/:id/flags (whitelisted + validated in server/utils/leads/leadQualification.ts); Expired/Recycled asks for the lost reason\u000a- quote/contract send sync sizing assumptions, forecast total and address onto the lead; confirmation / signature bump the probability\u000a- website webhooks parse volume (range → midpoint), integrations and weight into the new columns, retrying without them on error\u000a- leads list: rating/follow-up/orders/€/probability/weighted/AI columns editable inline (explicit cellDataType), follow-up filter, weighted pipeline total; more columns via the column menu\u000a- lead page: Nuxt UI SelectBox for all selects (no tedir left), DateTimeInputLocal for activity start/end, notes = Comments only in the right column, organisation + search key in the header, two aligned cards \"Bedarf & Profil\" / \"Pipeline & Bewertung\"\u000a- recipe .claude/rules/leads/crm-qualification.md\u000a",
        "date" : "2026-10-21 15:06:10 +0200",
        "id" : "5756b9cccea6ecc4ffffd23e83c091157067f411",
        "msg" : "Leads: CRM qualification fields (17 custom AD_User columns) with full CRUD on the lead page and inline editing in the leads list",
        "paths" : [
          {
            "editType" : "add",
            "file" : "server/utils/leads/leadQualification.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/components/admin/LeadDetailRecordActivity.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/components/admin/LeadForm.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/admin/users/store.post.ts"
          },
          {
            "editType" : "add",
            "file" : "app/components/DateTimeInputLocal.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/leads/leadAssessment.ts"
          },
          {
            "editType" : "add",
            "file" : "app/components/AgGrid/AgLeadRating.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/offers/quote/send.post.ts"
          },
          {
            "editType" : "add",
            "file" : "app/composables/useLeadQualification.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/create.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/components/DateInputDe.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/[id]/edit.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/offers/contract/send.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/webhooks/landing-leads.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/webhooks/fulfillment-leads.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useOfferContract.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/admin/users/[id]/flags.put.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/offers/quoteConfirmation.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/offers/contractSigning.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/[id]/view.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useOfferQuote.ts"
          },
          {
            "editType" : "add",
            "file" : "server/utils/leads/monthlyOrders.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/admin/users/lead-lists.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/index.vue"
          },
          {
            "editType" : "add",
            "file" : ".claude/rules/leads/crm-qualification.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/index.vue",
          ".claude/rules/leads/crm-qualification.md",
          "server/api/admin/users/leads/followups.get.ts",
          "app/pages/users/leads/index.vue",
          "app/assets/langs/shared.js"
        ],
        "commitId" : "11cf2fc9ca2eae1b0bda49e4f30f914ad821d781",
        "timestamp" : 1792588545000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Leads: list columns reordered and compacted (stars after company, WV with note tooltip, Best./M., €/M., %, Gew. €, KI, shop system; status/description/last-activity/note columns removed); dashboard banner with follow-ups due today or overdue linking to the lead\u000a",
        "date" : "2026-10-21 15:15:45 +0200",
        "id" : "11cf2fc9ca2eae1b0bda49e4f30f914ad821d781",
        "msg" : "Leads: list columns reordered and compacted (stars after company, WV with note tooltip, Best./M., €/M., %, Gew. €, KI, shop system; status/description/last-activity/note columns removed); dashboard banner with follow-ups due today or overdue linking to the lead",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/index.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/leads/crm-qualification.md"
          },
          {
            "editType" : "add",
            "file" : "server/api/admin/users/leads/followups.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".claude/rules/leads/crm-qualification.md",
          "app/pages/users/leads/index.vue"
        ],
        "commitId" : "d7d4f930268de2ddddabf60ac8f8c31270294339",
        "timestamp" : 1792589992000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Leads list: €/month, win % and weighted € columns hidden by default (column menu)\u000a",
        "date" : "2026-10-21 15:39:52 +0200",
        "id" : "d7d4f930268de2ddddabf60ac8f8c31270294339",
        "msg" : "Leads list: €/month, win % and weighted € columns hidden by default (column menu)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".claude/rules/leads/crm-qualification.md"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/users/leads/index.vue",
          "app/components/AgGrid/AgLeadRating.vue"
        ],
        "commitId" : "15a64548a3b578de5337702c21b7a16d506a5901",
        "timestamp" : 1792590199000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Leads list: rating cell no longer truncated with an ellipsis (no overflow clipping, tighter stars)\u000a",
        "date" : "2026-10-21 15:43:19 +0200",
        "id" : "15a64548a3b578de5337702c21b7a16d506a5901",
        "msg" : "Leads list: rating cell no longer truncated with an ellipsis (no overflow clipping, tighter stars)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/components/AgGrid/AgLeadRating.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/users/leads/index.vue"
        ],
        "commitId" : "c51153ce35bd4ad89511b95a6fc7f9dcd09afbba",
        "timestamp" : 1792590209000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Leads list: follow-up cell not truncated with an ellipsis\u000a",
        "date" : "2026-10-21 15:43:29 +0200",
        "id" : "c51153ce35bd4ad89511b95a6fc7f9dcd09afbba",
        "msg" : "Leads list: follow-up cell not truncated with an ellipsis",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".claude/rules/leads/crm-qualification.md",
          "app/pages/users/leads/index.vue"
        ],
        "commitId" : "5e73df84fd165b53aebf6a873f72795ccc8679cc",
        "timestamp" : 1792590269000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Leads list: follow-up (WV) column moved to second position after Created\u000a",
        "date" : "2026-10-21 15:44:29 +0200",
        "id" : "5e73df84fd165b53aebf6a873f72795ccc8679cc",
        "msg" : "Leads list: follow-up (WV) column moved to second position after Created",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".claude/rules/leads/crm-qualification.md"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/leads/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/leads/[id]/mail/context.get.ts",
          "app/composables/useOfferQuote.ts",
          "server/utils/mail/staffMail.ts"
        ],
        "commitId" : "609bdc55e01130493f296686f80b3540787b9210",
        "timestamp" : 1792596416000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Offer volume matrix: row label shortened to 'Basispreis pro Auftrag' (legacy label mapped on load); lead mail signature prints Phone and Phone2 of the sender\u000a",
        "date" : "2026-10-21 17:26:56 +0200",
        "id" : "609bdc55e01130493f296686f80b3540787b9210",
        "msg" : "Offer volume matrix: row label shortened to 'Basispreis pro Auftrag' (legacy label mapped on load); lead mail signature prints Phone and Phone2 of the sender",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/composables/useOfferQuote.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/leads/[id]/mail/context.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/mail/staffMail.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/composables/useOfferContract.ts",
          "server/utils/offers/contractPdf.ts",
          "server/utils/offers/contractTexts.ts",
          "app/composables/useOfferQuote.ts",
          "app/assets/langs/shared.js",
          "app/components/offers/ContractModal.vue"
        ],
        "commitId" : "279100731de579a641a727198fe52dc60054b233",
        "timestamp" : 1792597464000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Offers: cut-off time on by default in the quote; contract gets an 'Im Vertrag nennen' switch (seeded from the quote) that removes the cut-off SLA item and uses a time-free express clause when off\u000a",
        "date" : "2026-10-21 17:44:24 +0200",
        "id" : "279100731de579a641a727198fe52dc60054b233",
        "msg" : "Offers: cut-off time on by default in the quote; contract gets an 'Im Vertrag nennen' switch (seeded from the quote) that removes the cut-off SLA item and uses a time-free express clause when off",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/composables/useOfferQuote.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useOfferContract.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/offers/contractPdf.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/offers/contractTexts.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "edit",
            "file" : "app/components/offers/ContractModal.vue"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.younex.de/user/info",
      "fullName" : "info"
    }
  ]
}