Jan Böhmer
e33c13ecfa
Allow to POST pages from a browser plugin to Part-DB so it can retrieve it later
2026-05-14 12:54:08 +02:00
Jan Böhmer
cb669ad4ec
Fixed phpstan issues
Build assets artifact / Build assets artifact (push) Has been cancelled
Docker Image Build / build (linux/amd64, amd64, ubuntu-latest) (push) Has been cancelled
Docker Image Build / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Has been cancelled
Docker Image Build / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Has been cancelled
Docker Image Build (FrankenPHP) / build (linux/amd64, amd64, ubuntu-latest) (push) Has been cancelled
Docker Image Build (FrankenPHP) / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Has been cancelled
Docker Image Build (FrankenPHP) / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Has been cancelled
Static analysis / Static analysis (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Has been cancelled
Docker Image Build / merge (push) Has been cancelled
Docker Image Build (FrankenPHP) / merge (push) Has been cancelled
2026-05-06 00:08:14 +02:00
Jan Böhmer
38779740ec
AIWebProvider: Make URLs absolute before passing them to the LLM
...
This ensures that the URLs are valid afterwards, because the LLM does not know the base tag
2026-05-05 23:19:56 +02:00
Sebastian Almberg
ce2b7d11a9
Add Quick Apply and batch update to bulk info provider import ( #1316 )
...
* Add Quick Apply and Apply All buttons to bulk info provider import
Adds the ability to apply provider search results to parts directly
from the bulk import step 2 page without navigating to individual
part edit forms. Includes per-result Quick Apply buttons and an
Apply All button for batch operations.
* Add navigation buttons and completion banner to bulk import step2
Adds Back to Jobs / Back to Parts buttons at the top of the page
and a success banner when the job is completed, so users aren't
stuck on the page after applying all parts.
* Highlight top search result and remove skip reason prompt
- Highlight the recommended/top priority result row with table-success class
- Add "Top" badge to the recommended Quick Apply button
- Use outline style for non-top Quick Apply buttons to differentiate
- Remove the annoying "reason for skipping" prompt popup
* Fix 500 error when field mapping has null field or no search results
- Skip field mappings with null/empty field values in convertFieldMappingsToDto
- Return empty DTO instead of throwing when no search results found
- Remove unnecessary try/catch workaround in researchPart
* Fix PHPStan error: remove redundant null check on BulkSearchResponseDTO
* Improve bulk import UI: split active/history jobs, fix text visibility, add match highlighting
- Split manage page into Active Jobs and History sections
- Fix source keyword text color (remove text-muted for better visibility)
- Add exact match indicators: green check badge when name or MPN matches
- Add translation keys for new UI elements
* Fix spinning icon, text visibility, auto-priority, and SPN match highlighting
- Replace spinning icon with static icon on Active Jobs header
- Match highlighting now checks source keyword against name, MPN, AND provider ID (SPN)
- Show green "Match" badge in source field column when any field matches 100%
- Auto-increment priority when adding new field mapping rows
- Fix text-muted visibility issues on table-success background
* Fix broken images and improve match highlighting consistency
- Hide broken external provider images with onerror fallback
- Make source keyword text green when any match is detected
- All matched fields (name, MPN, SPN, or any source keyword) show green text
* Fix TypeError in LCSCProvider when keyword is numeric string
PHP auto-casts numeric string array keys to int. When a search keyword
is a pure number (e.g., a part number like "12345"), the foreach loop
passes an int to processSearchResponse() which expects string. Cast
keyword to string explicitly.
* Clean up stale pending jobs and add job ID to display
- Auto-delete pending jobs with 0 results (from failed searches/500 errors)
- Show job ID (#N) in manage page and step2 to distinguish identical jobs
- Move timestamp to subtitle line on manage page for cleaner layout
* Fix tests to match updated bulk search behavior (no more RuntimeException)
The bulk search service now returns empty response DTOs instead of
throwing RuntimeException when no results are found. Updated tests
to use assertFalse(hasAnyResults()) instead of catching exceptions.
* Add comprehensive test coverage for bulk import controller
Covers Quick Apply, Apply All, delete, stop, mark completed/skipped/pending,
manage page active/history split, stale job cleanup, research endpoints,
and various error paths. Increases patch coverage significantly.
* Fix duplicate test method names in bulk import tests
* Fix last duplicate test method name (testQuickApplyWithNoSearchResults)
* Fixed translation key in translation messages
* Moved table rendering logic into macro
* fixed visual glitch with button success outline
* Use native httpfoundation method to convert json to an array
* Show a more user friendly error message, when
* Allow to automatically create new manufacturers within quick apply
---------
Co-authored-by: Jan Böhmer <mail@jan-boehmer.de>
2026-05-04 21:56:18 +02:00
Jan Böhmer
3c9866e90d
Improved AI extractor
...
It now gives better results and use less tokens
2026-05-03 16:50:46 +02:00
Jan Böhmer
889aa08b4e
Added URL delegation feature to AI provider and added option to skip that delegation
2026-05-02 23:42:26 +02:00
Jan Böhmer
e77b67445c
Added cache to AIWebProvider
2026-05-02 22:08:25 +02:00
Jan Böhmer
4137bde194
Allow to pass options to circumvent caching of info provider results / force fresh
Build assets artifact / Build assets artifact (push) Waiting to run
Docker Image Build / build (linux/amd64, amd64, ubuntu-latest) (push) Waiting to run
Docker Image Build / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build / merge (push) Blocked by required conditions
Docker Image Build (FrankenPHP) / build (linux/amd64, amd64, ubuntu-latest) (push) Waiting to run
Docker Image Build (FrankenPHP) / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build (FrankenPHP) / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build (FrankenPHP) / merge (push) Blocked by required conditions
Static analysis / Static analysis (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Waiting to run
2026-05-01 20:57:41 +02:00
Jan Böhmer
4cbb167e5c
Fixed errors
2026-05-01 20:11:56 +02:00
Jan Böhmer
4f67f21b33
Allow to pass options to info providers
Build assets artifact / Build assets artifact (push) Has been cancelled
Docker Image Build / build (linux/amd64, amd64, ubuntu-latest) (push) Has been cancelled
Docker Image Build / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Has been cancelled
Docker Image Build / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Has been cancelled
Docker Image Build (FrankenPHP) / build (linux/amd64, amd64, ubuntu-latest) (push) Has been cancelled
Docker Image Build (FrankenPHP) / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Has been cancelled
Docker Image Build (FrankenPHP) / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Has been cancelled
Static analysis / Static analysis (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Has been cancelled
Docker Image Build / merge (push) Has been cancelled
Docker Image Build (FrankenPHP) / merge (push) Has been cancelled
2026-04-27 22:37:05 +02:00
Jan Böhmer
cf34de6772
Allow to pass additional instructions to the AI model
Build assets artifact / Build assets artifact (push) Waiting to run
Docker Image Build / build (linux/amd64, amd64, ubuntu-latest) (push) Waiting to run
Docker Image Build / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build / merge (push) Blocked by required conditions
Docker Image Build (FrankenPHP) / build (linux/amd64, amd64, ubuntu-latest) (push) Waiting to run
Docker Image Build (FrankenPHP) / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build (FrankenPHP) / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build (FrankenPHP) / merge (push) Blocked by required conditions
Static analysis / Static analysis (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Waiting to run
2026-04-26 23:24:51 +02:00
Jan Böhmer
5edcc60d41
Randomize UserAgent and prevent access to private networks for AI extractor
2026-04-26 23:18:09 +02:00
Jan Böhmer
ad096aa6ff
Improved parameter extraction & extraction of other infos
2026-04-26 23:15:29 +02:00
Jan Böhmer
0ca5a41298
Added option for translating AI extracted output
2026-04-26 22:11:27 +02:00
Jan Böhmer
4a45b5d5a9
Improved markdown conversion and add ability to extract notes
2026-04-26 21:31:07 +02:00
Jan Böhmer
4dbd92ac4d
Use markdown as input for the LLM and add extracted microdata separatley
2026-04-26 19:36:03 +02:00
Jan Böhmer
af98fc1079
Added translations to AI settings
Build assets artifact / Build assets artifact (push) Waiting to run
Docker Image Build / build (linux/amd64, amd64, ubuntu-latest) (push) Waiting to run
Docker Image Build / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build / merge (push) Blocked by required conditions
Docker Image Build (FrankenPHP) / build (linux/amd64, amd64, ubuntu-latest) (push) Waiting to run
Docker Image Build (FrankenPHP) / build (linux/arm/v7, armv7, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build (FrankenPHP) / build (linux/arm64, arm64, ubuntu-24.04-arm) (push) Waiting to run
Docker Image Build (FrankenPHP) / merge (push) Blocked by required conditions
Static analysis / Static analysis (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Waiting to run
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Waiting to run
2026-04-26 15:48:17 +02:00
Jan Böhmer
18bf07b19f
Added an AI platform selector for settings
2026-04-26 01:10:00 +02:00
Jan Böhmer
c9d2044949
Fixed structured output response format
2026-04-26 00:40:33 +02:00
Jan Böhmer
2631ff4bee
Introduced subsystem to configure AI providers and allow services to select them dynamiclly
2026-04-25 23:29:22 +02:00
Jan Böhmer
c0017d29a7
Refactored and cleaned up AIInfoExtractor
2026-04-25 22:21:06 +02:00
Jan Böhmer
9cf16248e6
Use symfony AI platform for AI provider
2026-04-23 23:26:23 +02:00
Rahul Singh
90d327fdaa
Added AI Assisted Information Provider
2026-04-22 22:22:25 +02:00
Albert Koczy
d25ac2622e
Fix creating parts from TME if the SPN contains percent signs ( #1337 )
...
* Fix creating TME parts with percent signs in SPN
The SPN ends up in the URL, which later causes validation errors n the
form. Solved by encoding the percent sign.
* Add TME provider unit tests.
2026-04-06 14:42:54 +02:00
Jan Böhmer
ad35ae6e9e
Decorate hte attachment download and generic web provider with the NoPrivateNetworkHttpClient
...
This is for security hardening to prevent SSRF attacks
2026-04-05 23:07:24 +02:00
Jan Böhmer
de371877b9
Make GenericWebProvider more forgiving with URLs and accept the "fixed" strings traefik provides as security measure
...
This fixes issue #1296
2026-03-15 18:55:16 +01:00
Jan Böhmer
8f92615491
Randomize User agents for reichelt and generic web provider
...
This might helps with #1176
2026-03-01 23:15:06 +01:00
Jan Böhmer
a7a1026f9b
Throw an exception if canopy does not return a product
2026-02-24 20:30:39 +01:00
Jan Böhmer
300382f6e3
Make Canopy provider configurable via UI
2026-02-22 23:38:56 +01:00
Jan Böhmer
87919eb445
Allow to cache amazon search results to reduce API calls
2026-02-22 22:29:44 +01:00
Jan Böhmer
aa9436a19b
Fixed conrad provider if part does not have manuals
2026-02-22 22:09:23 +01:00
Jan Böhmer
3ffb5e8278
Implemented Amazon info provider using canopy
2026-02-16 22:05:49 +01:00
Jan Böhmer
097041a43a
Ran rector
2026-02-14 23:33:40 +01:00
Jan Böhmer
7a83581597
Merge branch 'gtin'
2026-02-14 22:12:39 +01:00
Marc
41252d8bb9
Implement URLHandlerInfoProviderInterface in BuerklinProvider ( #1235 )
...
Build assets artifact / Build assets artifact (push) Has been cancelled
Docker Image Build / docker (push) Has been cancelled
Docker Image Build (FrankenPHP) / docker (push) Has been cancelled
Static analysis / Static analysis (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, mysql) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, postgres) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.2, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.3, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.4, sqlite) (push) Has been cancelled
PHPUnit Tests / PHPUnit and coverage Test (PHP 8.5, sqlite) (push) Has been cancelled
* Implement URLHandlerInfoProviderInterface in BuerklinProvider
Added URL handling capabilities to BuerklinProvider.
* Refactor ID extraction logic in BuerklinProvider
* Add tests for BuerklinProvider URLHandlerInfoProviderInterface
* Revert "Refactor ID extraction logic in BuerklinProvider"
This reverts commit 5f65176636 .
* Exclude 'p' from valid ID return in BuerklinProvider
2026-02-10 15:26:26 +01:00
Jan Böhmer
f95e39748e
Fixed PHPstan issue
2026-02-08 19:37:44 +01:00
Jan Böhmer
1130f71075
Added ability to get GTINs for reichelt and Generic WebURL
2026-02-08 15:43:50 +01:00
Jan Böhmer
fd76ca12fc
Allow to import GTIN from info providers
2026-02-08 15:32:35 +01:00
Jan Böhmer
061af28c48
Fixed phpstan issues in GenericWebProvider
2026-02-07 17:07:53 +01:00
Jan Böhmer
7d19ed3ca8
Try to get a category from a webshop based on the breadcrumbs
2026-02-03 23:20:13 +01:00
Jan Böhmer
b48de83a32
Use brick schema to implement GenericWebProvider
...
This is less error prone than our own parser and also allows to parse Microdata and rdfa lite to support more webshops
2026-02-03 23:04:18 +01:00
Jan Böhmer
a1396c6696
Fixed delegation logic for PartDetailDTO
2026-02-01 21:19:11 +01:00
Jan Böhmer
24f0f0d23c
Added URL handling to a few more existing info providers
2026-02-01 21:18:06 +01:00
Jan Böhmer
10acc2e130
Added logic to delegate the info retrieval logic to another provider when giving an URL
2026-02-01 20:49:50 +01:00
Jan Böhmer
47c7ee9f07
Allow to extract parameters form additionalProperty JSONLD data
2026-02-01 18:24:46 +01:00
Jan Böhmer
722eb7ddab
Added settings and docs for the generic Web info provider
2026-02-01 17:47:04 +01:00
Jan Böhmer
071f6f8591
Return an empty array if no URL is provider to the Generic Web URL provider
2026-02-01 17:34:08 +01:00
Jan Böhmer
7feba634b8
Hadle if offers are nested and images are ImageObjects in JSON+LD
2026-02-01 17:20:13 +01:00
Jan Böhmer
1213f82cdf
Fix if canonical URL is relative
2026-02-01 17:11:41 +01:00
Jan Böhmer
d868225260
Properly parse JSONLD product data if it is in an array with others
2026-02-01 17:06:38 +01:00