type: object
description: |
    A single entry from `kb_query_logs` — what the user asked, how long retrieval
    + generation took, the resulting feedback score (if any), and who asked.
    Returned by `GET /admin/kb/logs`. Updated by `POST /admin/kb/feedback/{id}`.
required: [id, queryText, totalTimeMs, createdAt]
properties:
    id: { type: string }
    queryText: { type: string }
    retrievalTimeMs: { type: integer }
    generationTimeMs: { type: integer }
    totalTimeMs: { type: integer }
    feedbackScore:
        type: [integer, "null"]
        description: "1 = thumbs-up, -1 = thumbs-down, null = no feedback."
    feedbackText:
        type: [string, "null"]
        description: Free-text follow-up from the user (when feedback was submitted).
    userId:
        type: [string, "null"]
        description: Bigscreen account id of the asker, if known.
    createdAt: { type: string, format: date-time }
example:
    id: "qlog_01HZT12345ABC678DEF90GHJKM"
    queryText: "Where do shipment labels get generated?"
    retrievalTimeMs: 142
    generationTimeMs: 1482
    totalTimeMs: 1624
    feedbackScore: 1
    feedbackText: null
    userId: "acct_01HXJ4Q12345"
    createdAt: "2026-04-22T10:14:00.000Z"
