PlotDirector/PlotLine/Views/Admin/StoryIntelligenceTest.cshtml
2026-07-04 19:34:15 +01:00

113 lines
4.9 KiB
Plaintext

@model StoryIntelligenceDryRunViewModel
@{
ViewData["Title"] = "Story Intelligence Dry Run";
var result = Model.Result;
}
<div class="page-heading compact">
<div>
<p class="eyebrow">Admin utility</p>
<h1>Story Intelligence Dry Run</h1>
<p class="lead-text">This is a development dry run. It makes one live OpenAI extraction request only when submitted, and it does not save data or modify projects.</p>
</div>
</div>
<nav class="mb-3" aria-label="Breadcrumb">
<a asp-controller="Projects" asp-action="Index">Projects</a>
<span class="muted"> / </span>
<a asp-action="Index">Admin</a>
<span class="muted"> / </span>
<a asp-action="StoryIntelligenceDiagnostics">Story Intelligence Diagnostics</a>
<span class="muted"> / Dry Run</span>
</nav>
<section class="edit-panel">
<h2>Manual scene test</h2>
<p>Use short fictional sample text only. This page loads <code>Scene-Prompt-V1.md</code>, replaces runtime placeholders, makes a live extraction request when submitted, and displays the raw response without parsing or saving it.</p>
<form asp-action="StoryIntelligenceTest" method="post">
<div class="row g-3">
<div class="col-md-3">
<label class="form-label" asp-for="Form.ProjectID">ProjectID</label>
<input class="form-control" asp-for="Form.ProjectID" />
</div>
<div class="col-md-3">
<label class="form-label" asp-for="Form.BookID">BookID</label>
<input class="form-control" asp-for="Form.BookID" />
</div>
<div class="col-md-3">
<label class="form-label" asp-for="Form.ChapterID">ChapterID</label>
<input class="form-control" asp-for="Form.ChapterID" />
</div>
<div class="col-md-3">
<label class="form-label" asp-for="Form.SceneID">SceneID</label>
<input class="form-control" asp-for="Form.SceneID" />
</div>
<div class="col-md-3">
<label class="form-label" asp-for="Form.ChapterNumber">ChapterNumber</label>
<input class="form-control" asp-for="Form.ChapterNumber" />
</div>
<div class="col-md-3">
<label class="form-label" asp-for="Form.SceneNumber">SceneNumber</label>
<input class="form-control" asp-for="Form.SceneNumber" />
</div>
<div class="col-md-6">
<label class="form-label" asp-for="Form.SourceLabel">SourceLabel</label>
<input class="form-control" asp-for="Form.SourceLabel" />
</div>
<div class="col-12">
<label class="form-label" asp-for="Form.SceneText">Scene text</label>
<textarea class="form-control" asp-for="Form.SceneText" rows="8"></textarea>
</div>
</div>
<div class="button-row mt-3">
<button class="btn btn-primary" type="submit">Run dry test</button>
<a class="btn btn-outline-secondary" asp-action="StoryIntelligenceDiagnostics">Back to diagnostics</a>
</div>
</form>
</section>
@if (result is not null)
{
<section class="edit-panel">
<h2>Dry-run result</h2>
@if (!result.Success)
{
<div class="alert alert-warning">@result.ErrorMessage</div>
}
<div class="row g-3">
<div class="col-md-3">
<div class="border rounded p-3 h-100">
<p class="eyebrow">Prompt version</p>
<h3 class="mb-0">@result.PromptVersion</h3>
</div>
</div>
<div class="col-md-3">
<div class="border rounded p-3 h-100">
<p class="eyebrow">Model</p>
<h3 class="mb-0">@result.Model</h3>
</div>
</div>
<div class="col-md-3">
<div class="border rounded p-3 h-100">
<p class="eyebrow">Duration</p>
<h3 class="mb-0">@(string.IsNullOrWhiteSpace(result.Duration) ? "Not run" : result.Duration)</h3>
</div>
</div>
<div class="col-md-3">
<div class="border rounded p-3 h-100">
<p class="eyebrow">Retries</p>
<h3 class="mb-0">@result.RetryCount.ToString("N0")</h3>
</div>
</div>
</div>
<div class="mt-3">
<label class="form-label" for="sceneContextJson">Scene context JSON</label>
<textarea class="form-control font-monospace" id="sceneContextJson" rows="8" readonly>@result.SceneContextJson</textarea>
</div>
<div class="mt-3">
<label class="form-label" for="rawResponseText">Raw response text</label>
<textarea class="form-control font-monospace" id="rawResponseText" rows="18" readonly>@result.RawResponseText</textarea>
</div>
</section>
}