Add AI photo import via Ollama Vision
Users can upload a photo of a nail polish bottle; a background queue job sends it to Ollama (llama3.2-vision at 192.168.30.172:11434), extracts name, number and manufacturer, then creates the nail polish and adds it to the user's collection automatically. - ProcessNailPolishImage job (180s timeout, 2 tries) - NailPolishImport model + migration (status tracking) - AiSetting model + migration (Ollama URL + model, admin-configurable) - NailPolishImportController: upload, status page (auto-refresh every 5s) - Admin\AiSettingController: configure Ollama connection - Views: drag-drop upload form, live status page, import history - Navbar: "Foto importieren" link for all users - Admin dropdown: "KI-Einstellungen" - neonail-worker.conf: Supervisor config for the queue worker Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
7a24e554b0
commit
f715bc4552
@@ -7,6 +7,8 @@ use App\Http\Controllers\AdminController;
|
||||
use App\Http\Controllers\Auth\LoginController;
|
||||
use App\Http\Controllers\Auth\SsoController;
|
||||
use App\Http\Controllers\Admin\SsoSettingController;
|
||||
use App\Http\Controllers\Admin\AiSettingController;
|
||||
use App\Http\Controllers\NailPolishImportController;
|
||||
use App\Http\Controllers\ManufacturerController;
|
||||
|
||||
// Startseite
|
||||
@@ -50,6 +52,8 @@ Route::middleware(['auth'])->group(function () {
|
||||
Route::get('/users/{user}/collection', [UserNailPolishController::class, 'showUserCollection'])->name('users.collection');
|
||||
Route::get('/sso', [SsoSettingController::class, 'show'])->name('sso.show');
|
||||
Route::put('/sso', [SsoSettingController::class, 'update'])->name('sso.update');
|
||||
Route::get('/ai', [AiSettingController::class, 'show'])->name('ai.show');
|
||||
Route::put('/ai', [AiSettingController::class, 'update'])->name('ai.update');
|
||||
});
|
||||
|
||||
// Nagellack-Verwaltung (nur für Admin)
|
||||
@@ -61,6 +65,10 @@ Route::middleware(['auth'])->group(function () {
|
||||
// Hersteller-Verwaltung (für alle eingeloggten User)
|
||||
Route::resource('manufacturers', ManufacturerController::class);
|
||||
Route::get('/manufacturers-search', [ManufacturerController::class, 'search'])->name('manufacturers.search');
|
||||
|
||||
// KI Foto-Import (für alle eingeloggten User)
|
||||
Route::resource('nail-polish-imports', NailPolishImportController::class)
|
||||
->only(['index', 'create', 'store', 'show']);
|
||||
});
|
||||
|
||||
// Fallback
|
||||
|
||||
Reference in New Issue
Block a user