<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by younex1</shortDescription></cause></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>1538</buildNumber><marked><SHA1>06f4652c91890592851d6897d9b5189fd1e70393</SHA1><branch><SHA1>06f4652c91890592851d6897d9b5189fd1e70393</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>06f4652c91890592851d6897d9b5189fd1e70393</SHA1><branch><SHA1>06f4652c91890592851d6897d9b5189fd1e70393</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>06f4652c91890592851d6897d9b5189fd1e70393</SHA1><branch><SHA1>06f4652c91890592851d6897d9b5189fd1e70393</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>https://jenkins.younex.de/view/all/job/erp-frontend-pipeline-production/lastCompletedBuild/artifact</artifactsUrl><changesUrl>https://jenkins.younex.de/view/all/job/erp-frontend-pipeline-production/changes</changesUrl><displayUrl>https://jenkins.younex.de/view/all/job/erp-frontend-pipeline-production/lastCompletedBuild/</displayUrl><testsUrl>https://jenkins.younex.de/view/all/job/erp-frontend-pipeline-production/lastCompletedBuild/testReport</testsUrl></action><building>false</building><displayName>#1538</displayName><duration>766499</duration><estimatedDuration>769427</estimatedDuration><fullDisplayName>erp-frontend-pipeline-production #1538</fullDisplayName><id>1538</id><inProgress>false</inProgress><keepLog>false</keepLog><number>1538</number><queueId>5752</queueId><result>SUCCESS</result><timestamp>1789896161219</timestamp><url>https://jenkins.younex.de/view/all/job/erp-frontend-pipeline-production/1538/</url><builtOn>Application-Node-Production</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>server/utils/inbox/vendorProfile.ts</affectedPath><affectedPath>app/utils/inboxVendor.ts</affectedPath><affectedPath>app/components/accounting/inbox/InboxList.vue</affectedPath><affectedPath>app/composables/states.ts</affectedPath><affectedPath>server/utils/inbox/extractPipeline.ts</affectedPath><affectedPath>app/utils/inboxTaxRate.ts</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>285b6c4dd798b3b06091c9a7012d476762217e0a</commitId><timestamp>1789896144000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Incoming invoices: vendor filter / sort / grouping with review working set, meaningful confidence score, amount reconciliation

Inbox list
- vendor facet filter with counts (same vendor = first segment of the letterhead line, ignoring
  case / punctuation / legal form; a learned profile name wins), sort select (last uploaded,
  invoice date, vendor, amount, recognition %) with direction, group-by-vendor headers
- default = no vendor filter, no grouping, last uploaded on top; sort/group are not remembered
  across visits; rows show the short vendor label
- opening a review from a filtered / re-sorted list stores that result set as the WORKING SET
  (useInboxReviewQueue + sessionStorage): the review's previous / next, the position counter and
  "complete &amp; next" walk exactly that set in that order; a chip shows it and clears it; booked
  documents leave the set, an exhausted set returns to the inbox

Confidence badge
- was a plain average over ALL stored confidences, including internal helper keys with fixed
  heuristic values (currency 0.6, taxBasisTotal 0.5, taxes, isTaxIncluded 0.7) - a perfectly read
  document could not get past ~85-90 %. Now weighted over the fields a reviewer checks (number,
  date, vendor, net / tax / gross); amounts that add up are trusted, amounts that do not pull the
  score down, a missing key field counts as zero

Amounts
- net + tax must equal gross: when a value read from a LEARNED position breaks that (totals block
  floats with the number of line items - easybell: the "Netto" box landed on the VAT line and
  read 3,29 instead of 17,29 with confidence 1.0), the label-based reading is used or the odd one
  out is derived; done in the pipeline for new uploads and in the review for stored documents;
  hint under the totals when the amounts really do not add up
- such a position is forgotten on confirm and not learned again for the vendor (hint.floating);
  re-drawing the box by hand re-enables it
- learned regions yield the VALUE, not label + value: VAT id / IBAN by pattern
  ("USTIDDE249984363" -&gt; DE249984363, "IBAN:DE35..." -&gt; DE35...), money = last amount token
</comment><date>2026-09-20 11:22:24 +0200</date><id>285b6c4dd798b3b06091c9a7012d476762217e0a</id><msg>Incoming invoices: vendor filter / sort / grouping with review working set, meaningful confidence score, amount reconciliation</msg><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path><path><editType>edit</editType><file>app/utils/inboxTaxRate.ts</file></path><path><editType>edit</editType><file>app/composables/states.ts</file></path><path><editType>add</editType><file>app/utils/inboxVendor.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/vendorProfile.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>server/utils/inbox/extractPipeline.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxList.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName><id>info</id></culprit></freeStyleBuild>