Complete outstanding ingestion and document UX work

This commit is contained in:
2026-08-22 18:54:07 +01:00
parent 932e889ee8
commit 5b5a9ecbc3
24 changed files with 696 additions and 41 deletions
+27 -5
View File
@@ -4,6 +4,7 @@ import (
"fmt"
"net/http"
"os"
"time"
"github.com/kb-search/kb/internal/api"
"github.com/kb-search/kb/internal/output"
@@ -22,21 +23,25 @@ var addnoteCmd = &cobra.Command{
}
return nil
},
RunE: runAddnote,
RunE: runAddnote,
}
func init() {
addnoteCmd.Flags().String("tags", "", "tags (comma-separated)")
addnoteCmd.Flags().Bool("wait", false, "wait for ingestion to finish")
addnoteCmd.Flags().Duration("wait-timeout", 10*time.Minute, "maximum time to wait for ingestion")
rootCmd.AddCommand(addnoteCmd)
}
func runAddnote(cmd *cobra.Command, args []string) error {
tags, _ := cmd.Flags().GetString("tags")
wait, _ := cmd.Flags().GetBool("wait")
timeout, _ := cmd.Flags().GetDuration("wait-timeout")
client := api.NewClient()
return submitNote(client, args[0], tags)
return submitNote(client, args[0], tags, wait, timeout)
}
func submitNote(client *api.Client, note, tags string) error {
func submitNote(client *api.Client, note, tags string, wait bool, timeout time.Duration) error {
fields := map[string]string{
"note": note,
}
@@ -74,15 +79,32 @@ func submitNote(client *api.Client, note, tags string) error {
os.Exit(1)
}
var result interface{}
var result struct {
JobID int `json:"job_id"`
Status string `json:"status"`
Filename string `json:"filename"`
}
if err := api.DecodeJSON(resp, &result); err != nil {
return fmt.Errorf("failed to decode response: %w", err)
}
if output.IsJSON() {
output.PrintJSON(result)
if !wait {
output.PrintJSON(result)
}
} else {
fmt.Println("Queued: note")
}
if wait {
job, err := waitForJob(client, result.JobID, timeout)
if err != nil {
return err
}
if output.IsJSON() {
output.PrintJSON(job)
} else {
fmt.Printf("Ingested: note (doc ID: %d, chunks: %d)\n", job.DocumentID, job.ChunkCount)
}
}
return nil
}