feat(saas): add knowledge base module — categories, items, versions, search, analytics
- 5 knowledge tables (categories, items, chunks, versions, usage) with pgvector + HNSW + GIN indexes - 23+ API routes covering full CRUD, tree-structured categories, version snapshots - Keyword-based search with ILIKE + array match (placeholder for vector search) - Analytics endpoints: overview, trends, top-items, quality, gaps - Markdown-aware content chunking with overlap strategy - Worker dispatch for async embedding generation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
37
crates/zclaw-saas/src/knowledge/mod.rs
Normal file
37
crates/zclaw-saas/src/knowledge/mod.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
//! 知识库模块 — 行业知识管理、RAG 检索、版本控制
|
||||
|
||||
pub mod types;
|
||||
pub mod service;
|
||||
pub mod handlers;
|
||||
|
||||
use axum::routing::{delete, get, post, put};
|
||||
|
||||
pub fn routes() -> axum::Router<crate::state::AppState> {
|
||||
axum::Router::new()
|
||||
// 分类管理
|
||||
.route("/api/v1/knowledge/categories", get(handlers::list_categories))
|
||||
.route("/api/v1/knowledge/categories", post(handlers::create_category))
|
||||
.route("/api/v1/knowledge/categories/{id}", put(handlers::update_category))
|
||||
.route("/api/v1/knowledge/categories/{id}", delete(handlers::delete_category))
|
||||
.route("/api/v1/knowledge/categories/{id}/items", get(handlers::list_category_items))
|
||||
// 知识条目 CRUD
|
||||
.route("/api/v1/knowledge/items", get(handlers::list_items))
|
||||
.route("/api/v1/knowledge/items", post(handlers::create_item))
|
||||
.route("/api/v1/knowledge/items/batch", post(handlers::batch_create_items))
|
||||
.route("/api/v1/knowledge/items/{id}", get(handlers::get_item))
|
||||
.route("/api/v1/knowledge/items/{id}", put(handlers::update_item))
|
||||
.route("/api/v1/knowledge/items/{id}", delete(handlers::delete_item))
|
||||
// 版本控制
|
||||
.route("/api/v1/knowledge/items/{id}/versions", get(handlers::list_versions))
|
||||
.route("/api/v1/knowledge/items/{id}/versions/{v}", get(handlers::get_version))
|
||||
.route("/api/v1/knowledge/items/{id}/rollback/{v}", post(handlers::rollback_version))
|
||||
// 检索
|
||||
.route("/api/v1/knowledge/search", post(handlers::search))
|
||||
.route("/api/v1/knowledge/recommend", post(handlers::recommend))
|
||||
// 分析看板
|
||||
.route("/api/v1/knowledge/analytics/overview", get(handlers::analytics_overview))
|
||||
.route("/api/v1/knowledge/analytics/trends", get(handlers::analytics_trends))
|
||||
.route("/api/v1/knowledge/analytics/top-items", get(handlers::analytics_top_items))
|
||||
.route("/api/v1/knowledge/analytics/quality", get(handlers::analytics_quality))
|
||||
.route("/api/v1/knowledge/analytics/gaps", get(handlers::analytics_gaps))
|
||||
}
|
||||
Reference in New Issue
Block a user