Add config for users to define additional concerns that GenAI should make note of in review summary (#19463)

* Don't default to openai

* Improve UI

* Allow configuring additional concerns that users may want the AI to note

* Formatting

* Add preferred language config

* Remove unused
This commit is contained in:
Nicolas Mowen
2025-08-16 10:20:33 -05:00
committed by Blake Blackshear
parent 3cf86767f1
commit cc18d7f786
7 changed files with 93 additions and 42 deletions
@@ -76,20 +76,31 @@ export default function ReviewDetailDialog({
const aiAnalysis = useMemo(() => review?.data?.metadata, [review]);
const aiThreatLevel = useMemo(() => {
if (!aiAnalysis?.potential_threat_level) {
if (
!aiAnalysis ||
(!aiAnalysis.potential_threat_level && !aiAnalysis.other_concerns)
) {
return "None";
}
let concerns = "";
switch (aiAnalysis.potential_threat_level) {
case ThreatLevel.UNUSUAL:
return "Unusual Activity";
concerns = "Unusual Activity\n";
break;
case ThreatLevel.SUSPICIOUS:
return "Suspicious Activity";
concerns = "Suspicious Activity\n";
break;
case ThreatLevel.DANGER:
return "Danger";
concerns = "Danger\n";
break;
}
return "Unknown";
(aiAnalysis.other_concerns ?? []).forEach((c) => {
concerns += `${c}\n`;
});
return concerns || "None";
}, [aiAnalysis]);
const hasMismatch = useMemo(() => {
@@ -258,8 +269,8 @@ export default function ReviewDetailDialog({
{aiAnalysis != undefined && (
<div
className={cn(
"m-2 flex h-full w-full flex-col gap-2 rounded-md bg-card p-2",
isDesktop && "w-[90%]",
"flex h-full w-full flex-col gap-2 rounded-md bg-card p-2",
isDesktop && "m-2 w-[90%]",
)}
>
AI Analysis
@@ -267,7 +278,7 @@ export default function ReviewDetailDialog({
<div className="text-sm">{aiAnalysis.scene}</div>
<div className="text-sm text-primary/40">Score</div>
<div className="text-sm">{aiAnalysis.confidence * 100}%</div>
<div className="text-sm text-primary/40">Threat Level</div>
<div className="text-sm text-primary/40">Concerns</div>
<div className="text-sm">{aiThreatLevel}</div>
</div>
)}
+1
View File
@@ -22,6 +22,7 @@ export type ReviewData = {
scene: string;
confidence: number;
potential_threat_level?: number;
other_concerns?: string[];
};
};