1.7.1
Fixed (#399)
- PostgreSQL:
ListLLMRequestLogs— Scan-рассинхрон сpgLLMRequestLogCols(19 колонок vs 18 приёмников: отсутствовал&e.ReasoningTokens) делал каждый запрос списка LLM-логов на PG/dual-store инстансах падающим сsql: expected 18 destination arguments in Scan, not 19→GET /api/v1/admin/llm-logотвечал 500 «failed to read llm logs», страница/settings/llm-logне открывалась (#399; колонкаreasoning_tokensдобавлена в TokenUsage v2, миграции 108/117 —GetLLMRequestLogи SQLite-путь обновлялись, List на PG остался незамеченным: PG-тестовой инфраструктуры нет). Список приёмников вынесен в единый хелперpgScanLLMRequestLog(общий для Get и List — рассинхрон конструкторски невозможен), регрессионный тест сверяетpgLLMRequestLogColsс полямиLLMRequestLogEntryпо количеству и порядку (json-теги 1:1 с колонками, по образцу guard-тестовmcp_pg_test.go). Хендлерllmlog.List/Getтеперь логирует underlying-ошибку (slog.ErrorContext) перед 500 — на проде 03.09 между двумя 500 и следующим запросом в journal было пусто, причину было не видно.
Review (#399)
- ocr review — 0 находок. Проверки:
go test ./... -count=1,golangci-lint run ./internal/store/... ./internal/server/handler/...(0),go vet,make build-cross(6 платформ) — зелёные. Тест:TestPgLLMRequestLogCols_MatchEntryFields. Проверка «на проде/settings/llm-logоткрывается» — после деплоя релиза пользователем.