feat: add brand library management features

- Introduced BrandLibrarySummary type to encapsulate brand library limits and usage.
- Updated Brand interface to include keyword_count and question_count fields.
- Implemented brand library limits in the backend, including max brands, keywords, and questions per keyword.
- Added API endpoint to retrieve brand library summary.
- Enhanced BrandsView.vue to display brand library usage and limits.
- Implemented computed properties to manage brand, keyword, and question limits in the UI.
- Updated mutation handlers to invalidate relevant queries upon creating/updating brands, keywords, and questions.
- Added visual indicators for brand, keyword, and question limits in the UI.
- Enhanced error handling for exceeding brand and keyword limits during creation.
This commit is contained in:
2026-04-16 21:01:40 +08:00
parent 27389164b0
commit 41f3060e00
15 changed files with 731 additions and 44 deletions
+14
View File
@@ -725,6 +725,8 @@ export interface Brand {
website: string | null;
description: string | null;
status: string;
keyword_count: number;
question_count: number;
created_at: string;
updated_at?: string;
}
@@ -759,6 +761,18 @@ export interface Question {
created_at: string;
}
export interface BrandLibrarySummary {
plan_code: string;
plan_name: string;
max_brands: number;
used_brands: number;
remaining_brands: number;
max_keywords: number;
used_keywords: number;
remaining_keywords: number;
max_questions_per_keyword: number;
}
export interface CompetitorRequest {
name: string;
website?: string | null;