updated rating

This commit is contained in:
Linrador 2026-06-12 09:21:35 +02:00
parent 10162064ff
commit 93087001f9

View File

@ -1348,6 +1348,7 @@ func computeHighlightRatingWithUsername(segments []aiSegmentMeta, durationSec fl
var totalWeighted float64 var totalWeighted float64
var positionEffectiveWeighted float64 var positionEffectiveWeighted float64
var positionFlagged float64
var peakQuality float64 var peakQuality float64
var longest float64 var longest float64
@ -1395,6 +1396,7 @@ func computeHighlightRatingWithUsername(segments []aiSegmentMeta, durationSec fl
continue continue
} }
positionEffectiveWeighted += effectiveWeightedDur positionEffectiveWeighted += effectiveWeightedDur
positionFlagged += segDur
if quality > peakQuality { if quality > peakQuality {
peakQuality = quality peakQuality = quality
@ -1424,17 +1426,22 @@ func computeHighlightRatingWithUsername(segments []aiSegmentMeta, durationSec fl
positionDensityNorm := ratingSoftCap(positionDensity, 5.5) positionDensityNorm := ratingSoftCap(positionDensity, 5.5)
coverageNorm := ratingSoftCap(weightedCoverageRatio, 0.20) coverageNorm := ratingSoftCap(weightedCoverageRatio, 0.20)
longestNorm := ratingSoftCap(longest, 24.0) longestNorm := ratingSoftCap(longest, 24.0)
positionDurationNorm := ratingSoftCap(positionFlagged, 45.0)
confNorm := ratingSmoothStep((avgConfidence - 0.30) / 0.65) confNorm := ratingSmoothStep((avgConfidence - 0.30) / 0.65)
// Positionen dominieren. Kleidung/Objekte fließen durch Combo-Segment-Qualität (peakNorm) ein. // Positionen dominieren. Kleidung/Objekte fließen durch Combo-Segment-Qualität (peakNorm) ein.
// Die Länge der erkannten Positionen wird bewusst stark gewichtet:
// längstes Positions-Segment (longestNorm) + Gesamtdauer aller Positionen (positionDurationNorm).
// Je länger eine Position erkannt wird, desto höher der Score.
// Keine Penalties, keine Caps die Formel bewertet natürlich nach Positions-Intensität. // Keine Penalties, keine Caps die Formel bewertet natürlich nach Positions-Intensität.
// Summe = 1.00. // Summe = 1.00.
raw := raw :=
0.42*positionDensityNorm + 0.34*positionDensityNorm +
0.26*peakNorm + 0.22*peakNorm +
0.18*coverageNorm + 0.13*coverageNorm +
0.08*longestNorm + 0.16*longestNorm +
0.06*confNorm 0.11*positionDurationNorm +
0.04*confNorm
// Sehr wenig Material nicht überbewerten. // Sehr wenig Material nicht überbewerten.
if totalFlagged < 5.0 && n <= 1 { if totalFlagged < 5.0 && n <= 1 {
@ -1469,13 +1476,14 @@ func computeHighlightRatingWithUsername(segments []aiSegmentMeta, durationSec fl
r.AvgConfidence = ratingRound(avgConfidence, 3) r.AvgConfidence = ratingRound(avgConfidence, 3)
appLogf( appLogf(
"✅ %s rating score=%.1f stars=%d bonus=%.1f segs=%d flagged=%.1f posDensity=%.2f coverage=%.4f longest=%.1f avgConf=%.3f", "✅ %s rating score=%.1f stars=%d bonus=%.1f segs=%d flagged=%.1f posFlagged=%.1f posDensity=%.2f coverage=%.4f longest=%.1f avgConf=%.3f",
ratingLogSubject(username), ratingLogSubject(username),
r.Score, r.Score,
r.Stars, r.Stars,
ratingRound(excellenceBonus*100, 1), ratingRound(excellenceBonus*100, 1),
r.Segments, r.Segments,
r.FlaggedSeconds, r.FlaggedSeconds,
ratingRound(positionFlagged, 1),
positionDensity, positionDensity,
r.WeightedCoverageRatio, r.WeightedCoverageRatio,
r.LongestSegmentSeconds, r.LongestSegmentSeconds,