LlmRecordingEntry.java
package com.taxonomy.analysis.service;
/**
* DTO for a single recorded LLM call, persisted as JSON in
* {@code src/test/resources/llm-recordings/<hash>.json}.
*
* @param promptHash SHA-256 hex string of the whitespace-normalised prompt
* @param promptText the original (un-normalised) prompt for human readability
* @param responseBody the raw HTTP response body (not the extracted text) so
* the full parsing path (extractGeminiText / extractOpenAiText) is exercised
* @param provider the LLM provider name (e.g. "GEMINI", "OPENAI")
* @param recordedAt ISO-8601 timestamp when the recording was captured
* @param testOrigin optional description of the test that produced this recording
* @param lastUsed ISO-8601 timestamp of the last replay — updated on every replay so stale
* entries can be detected
*/
public record LlmRecordingEntry(
String promptHash,
String promptText,
String responseBody,
String provider,
String recordedAt,
String testOrigin,
String lastUsed
) {}