feat(blog): implement medical review gate for blog posts

- Added new fields to the Blog entity: sources, review_status, reviewer, reviewed_at, review_note, and topic_slug.
- Created API endpoints for reviewing blog posts: GET /api/v1/admin/blog/review-queue and POST /api/v1/admin/blog/{uuid}/review.
- Updated BlogController to handle review logic, including approval and rejection of posts.
- Introduced BlogReviewPage component for admin interface to manage blog reviews.
- Added migration to update the database schema for new fields.
- Implemented tests for review queue functionality and review decision handling.
This commit is contained in:
hamed
2026-07-23 21:01:58 +03:30
parent 2abf915f95
commit 14730e43ce
10 changed files with 746 additions and 0 deletions
+9
View File
@@ -437,6 +437,15 @@ export interface Blog {
/** null = مقاله سراسری (روی همه دامنه‌ها، canonical روی دامنه اصلی) */
city?: { id: string; name: string } | null;
tags: string[];
/** منابع E-E-A-T مقاله‌های تولیدشده توسط پایپ‌لاین محتوا */
sources?: { url: string; title: string }[];
/** null = پست دستی ادمین، خارج از گیت بازبینی؛ در غیر این صورت وضعیت بازبینی پزشک */
review_status?: "pending_review" | "approved" | "rejected" | null;
reviewer?: { uuid: string; name: string } | null;
reviewed_at?: number | null;
review_note?: string | null;
/** کلید یکتای موضوع پایپ‌لاین (specialty, angle) */
topic_slug?: string | null;
created_at: string;
updated_at?: string;
}