feat: add knowledge markdown formatting and detail retrieval

- Implemented KnowledgeWebsiteMarkdownPrompt for formatting webpage content into Markdown.
- Added GetItemDetail method in KnowledgeHandler to retrieve knowledge item details.
- Introduced KnowledgeDetailDrawer component for displaying knowledge item details in the admin web interface.
- Created MarkdownPreview component for rendering Markdown content.
- Added knowledge chunking and URL parsing logic to handle webpage content extraction and formatting.
- Updated database schema to include markdown_content in knowledge_items table.
This commit is contained in:
2026-04-05 20:41:42 +08:00
parent 446f865cdf
commit dbd7747742
26 changed files with 1556 additions and 252 deletions
@@ -23,8 +23,10 @@ func NewKnowledgeHandler(a *bootstrap.App) *KnowledgeHandler {
a.RetrievalProvider,
a.VectorStore,
a.ObjectStorage,
a.LLM,
a.Logger,
a.Config.Retrieval,
a.Config.LLM,
a.Config.Generation.QueueSize,
a.Config.Generation.WorkerConcurrency,
),
@@ -108,6 +110,21 @@ func (h *KnowledgeHandler) ListItems(c *gin.Context) {
response.Success(c, data)
}
func (h *KnowledgeHandler) GetItemDetail(c *gin.Context) {
itemID, err := strconv.ParseInt(c.Param("id"), 10, 64)
if err != nil {
response.Error(c, response.ErrBadRequest(40001, "invalid_id", "knowledge item id must be a number"))
return
}
data, err := h.svc.GetItemDetail(c.Request.Context(), itemID)
if err != nil {
response.Error(c, err)
return
}
response.Success(c, data)
}
func (h *KnowledgeHandler) CreateTextItem(c *gin.Context) {
var req app.KnowledgeTextItemRequest
if err := c.ShouldBindJSON(&req); err != nil {