id, false) ->onQueue((string) config('ai_biography.queue', 'default')); return response()->json([ 'message' => 'Biography generation queued.', ], 202); } /** * POST /api/creator/profile/ai-biography/regenerate * Force-regenerate (replaces existing non-user-edited biography). */ public function regenerate(Request $request): JsonResponse { /** @var User $user */ $user = Auth::user(); GenerateAiBiographyJob::dispatch((int) $user->id, true) ->onQueue((string) config('ai_biography.queue', 'default')); return response()->json([ 'message' => 'Biography regeneration queued.', ], 202); } /** * PATCH /api/creator/profile/ai-biography * Creator edits their biography text. */ public function update(Request $request): JsonResponse { $validated = $request->validate([ 'text' => ['required', 'string', 'min:30', 'max:1200'], ]); /** @var User $user */ $user = Auth::user(); $this->biographies->updateText($user, $validated['text']); return response()->json(['message' => 'Biography updated.']); } /** * POST /api/creator/profile/ai-biography/hide */ public function hide(Request $request): JsonResponse { /** @var User $user */ $user = Auth::user(); $this->biographies->hide($user); return response()->json(['message' => 'Biography hidden.']); } /** * POST /api/creator/profile/ai-biography/show */ public function show(Request $request): JsonResponse { /** @var User $user */ $user = Auth::user(); $this->biographies->show($user); return response()->json(['message' => 'Biography made visible.']); } /** * GET /api/creator/profile/ai-biography * Return the authenticated creator's current biography status and metadata. */ public function status(Request $request): JsonResponse { /** @var User $user */ $user = Auth::user(); $payload = $this->biographies->creatorStatusPayload($user); return response()->json([ 'data' => $payload, ]); } }