feat(admin): Assistant Admin record screens that fit each table #6

Merged
KofTwentyTwo merged 2 commits from feature/assistant-record-screens into develop 2026-10-12 21:17:21 +00:00
KofTwentyTwo commented 2026-10-12 20:23:51 +00:00 (Migrated from github.com)

Summary

Stacked on #3 (snake_case table names); retarget to develop once #3 merges.

From the kof22 record-screens audit (KofTwentyTwo/Website-Backend docs/audits/2026-10-12-record-screens.md): every Assistant Admin table showed QQQ's generic "Identity / Other Fields" screens, with raw JSON, bare ids, unexplained micro-dollar costs, a free-text effort, and no way to see a conversation's messages or turns from the conversation.

AssistantRecordScreens (applied in buildTables before the host's table customizer, so hosts keep the last word):

  • Named sections per table; unplaced fields go to a Details section, so new columns always show.
  • JSON viewer on contextJson, partsJson, dataJson, inputJson, resultJson, redactionsJson.
  • Links for turnId, messageId, userMessageId, assistantMessageId, parentMessageId (new assistant_turn / assistant_message possible-value sources).
  • Costs labeled "(micro-dollars)" with help; thousands separators on counts.
  • Conversation: Messages, Turns, Tool Calls, Feedback child lists; Status read-only.
  • Policy: assistant_effort picker (low to max, from AssistantModelRouting.EFFORTS); help on every limit (soft warns, hard refuses, empty falls back to config) and on which row applies (the lowest id).

Test plan

  • AssistantRecordScreensTest: every field in exactly one named section, JSON viewers, links, micros, effort picker, child lists (idempotent), unplaced fields to Details
  • ./mvnw verify green (68 + 7 tests, JaCoCo gate). RobustnessTest.testConcurrentUsage failed once (19 vs 20 concurrent usage increments) and passed 3 of 3 alone and on the rerun; it is a pre-existing race, unrelated.

🤖 Generated with Claude Code

## Summary Stacked on #3 (snake_case table names); retarget to `develop` once #3 merges. From the kof22 record-screens audit (KofTwentyTwo/Website-Backend `docs/audits/2026-10-12-record-screens.md`): every Assistant Admin table showed QQQ's generic "Identity / Other Fields" screens, with raw JSON, bare ids, unexplained micro-dollar costs, a free-text effort, and no way to see a conversation's messages or turns from the conversation. `AssistantRecordScreens` (applied in `buildTables` before the host's table customizer, so hosts keep the last word): - Named sections per table; unplaced fields go to a **Details** section, so new columns always show. - JSON viewer on `contextJson`, `partsJson`, `dataJson`, `inputJson`, `resultJson`, `redactionsJson`. - Links for `turnId`, `messageId`, `userMessageId`, `assistantMessageId`, `parentMessageId` (new `assistant_turn` / `assistant_message` possible-value sources). - Costs labeled "(micro-dollars)" with help; thousands separators on counts. - Conversation: Messages, Turns, Tool Calls, Feedback child lists; Status read-only. - Policy: `assistant_effort` picker (low to max, from `AssistantModelRouting.EFFORTS`); help on every limit (soft warns, hard refuses, empty falls back to config) and on which row applies (the lowest id). ## Test plan - [x] `AssistantRecordScreensTest`: every field in exactly one named section, JSON viewers, links, micros, effort picker, child lists (idempotent), unplaced fields to Details - [x] `./mvnw verify` green (68 + 7 tests, JaCoCo gate). `RobustnessTest.testConcurrentUsage` failed once (19 vs 20 concurrent usage increments) and passed 3 of 3 alone and on the rerun; it is a pre-existing race, unrelated. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.