feat: add knowledge management functionality with CRUD operations and database schema

- Implemented KnowledgeHandler for managing knowledge groups and items, including listing, creating, updating, and deleting operations.
- Added database migration scripts to create necessary tables for knowledge management, including knowledge_groups, knowledge_items, knowledge_parse_tasks, and knowledge_chunks_meta.
- Introduced prompt_rule_knowledge_groups table to associate prompt rules with knowledge groups.
This commit is contained in:
2026-04-05 17:14:13 +08:00
parent 134dd063c3
commit 446f865cdf
62 changed files with 9503 additions and 2664 deletions
+50
View File
@@ -526,6 +526,48 @@ export interface Competitor {
created_at: string;
}
export interface KnowledgeGroup {
id: number;
name: string;
parent_id: number | null;
sort_order: number;
item_count: number;
created_at: string;
children: KnowledgeGroup[];
}
export interface KnowledgeGroupRequest {
name: string;
parent_id?: number | null;
sort_order?: number;
}
export interface KnowledgeItem {
id: number;
group_id: number;
group_name: string;
name: string;
source_type: "text" | "document" | "website";
source_uri: string | null;
status: string;
size_bytes: number;
error_message: string | null;
created_at: string;
updated_at: string;
}
export interface KnowledgeTextItemRequest {
group_id: number;
name: string;
content: string;
}
export interface KnowledgeURLItemRequest {
group_id: number;
name: string;
url: string;
}
// --- Prompt Rule Groups ---
export interface PromptRuleGroup {
@@ -550,12 +592,19 @@ export interface PromptRule {
scene: string | null;
default_tone: string | null;
default_word_count: number | null;
knowledge_group_ids: number[];
knowledge_groups: KnowledgeGroupOption[];
status: "enabled" | "disabled";
article_count: number;
created_at: string;
updated_at: string;
}
export interface KnowledgeGroupOption {
id: number;
name: string;
}
export interface PromptRuleRequest {
group_id?: number | null;
name: string;
@@ -563,6 +612,7 @@ export interface PromptRuleRequest {
scene?: string;
default_tone?: string;
default_word_count?: number;
knowledge_group_ids?: number[];
}
export interface PromptRuleListParams {