From fa84f92577aa0f1fad22ec830e32f5a9cd9957bc Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sun, 4 Jan 2026 07:24:36 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20ProjectTaskContent?= =?UTF-8?q?Observer=20=E4=BB=A5=E5=A4=84=E7=90=86=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E7=9A=84=E5=88=9B=E5=BB=BA=E3=80=81=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=92=8C=E5=88=A0=E9=99=A4=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Observers/ProjectTaskContentObserver.php | 69 ++++++++++++++++++++ app/Providers/EventServiceProvider.php | 3 + 2 files changed, 72 insertions(+) create mode 100644 app/Observers/ProjectTaskContentObserver.php diff --git a/app/Observers/ProjectTaskContentObserver.php b/app/Observers/ProjectTaskContentObserver.php new file mode 100644 index 000000000..1d9665bbc --- /dev/null +++ b/app/Observers/ProjectTaskContentObserver.php @@ -0,0 +1,69 @@ +syncTaskToManticore($content->task_id); + } + + /** + * Handle the ProjectTaskContent "updated" event. + * 任务内容更新时,触发任务索引更新 + * + * @param \App\Models\ProjectTaskContent $content + * @return void + */ + public function updated(ProjectTaskContent $content) + { + // 只有内容变化时才需要更新 + if ($content->isDirty('content')) { + $this->syncTaskToManticore($content->task_id); + } + } + + /** + * Handle the ProjectTaskContent "deleted" event. + * 任务内容删除时,触发任务索引更新 + * + * @param \App\Models\ProjectTaskContent $content + * @return void + */ + public function deleted(ProjectTaskContent $content) + { + $this->syncTaskToManticore($content->task_id); + } + + /** + * 触发任务同步到 Manticore + * + * @param int|null $taskId 任务ID + * @return void + */ + private function syncTaskToManticore(?int $taskId) + { + if (!$taskId || $taskId <= 0) { + return; + } + + $task = ProjectTask::find($taskId); + if (!$task || $task->archived_at || $task->deleted_at) { + return; + } + + self::taskDeliver(new ManticoreSyncTask('task_sync', $task->toArray())); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index ad373763a..63ee0c726 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -6,6 +6,7 @@ use App\Models\File; use App\Models\FileUser; use App\Models\Project; use App\Models\ProjectTask; +use App\Models\ProjectTaskContent; use App\Models\ProjectTaskUser; use App\Models\ProjectTaskVisibilityUser; use App\Models\ProjectUser; @@ -18,6 +19,7 @@ use App\Models\WebSocketDialogUser; use App\Observers\FileObserver; use App\Observers\FileUserObserver; use App\Observers\ProjectObserver; +use App\Observers\ProjectTaskContentObserver; use App\Observers\ProjectTaskObserver; use App\Observers\ProjectTaskUserObserver; use App\Observers\ProjectTaskVisibilityUserObserver; @@ -56,6 +58,7 @@ class EventServiceProvider extends ServiceProvider FileUser::observe(FileUserObserver::class); Project::observe(ProjectObserver::class); ProjectTask::observe(ProjectTaskObserver::class); + ProjectTaskContent::observe(ProjectTaskContentObserver::class); ProjectTaskUser::observe(ProjectTaskUserObserver::class); ProjectTaskVisibilityUser::observe(ProjectTaskVisibilityUserObserver::class); ProjectUser::observe(ProjectUserObserver::class);