fix(plugins): unique csv row keys, per-file default mediaType, scale-aware zero rating
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
a540c7d34d
commit
4c08c16e48
@@ -115,13 +115,14 @@ export function defaultScale(rows: FieldRow[]): 5 | 10 | 100 {
|
||||
return max <= 5 ? 5 : max <= 10 ? 10 : 100;
|
||||
}
|
||||
|
||||
/** Returns a 0-100 rating, or null when unrated. 0 counts as unrated (Goodreads convention). */
|
||||
/** Returns a 0-100 rating, or null when unrated. 0 counts as unrated only on scale 5 (Goodreads convention). */
|
||||
export function normalizeRating(r: FieldRow, fileScale: 5 | 10 | 100): number | null {
|
||||
if (r.rating === undefined) return null;
|
||||
const n = Number(r.rating);
|
||||
if (!Number.isFinite(n) || n <= 0) return null;
|
||||
if (!Number.isFinite(n) || n < 0) return null;
|
||||
const rs = Number(r.ratingScale);
|
||||
const scale = rs === 5 || rs === 10 || rs === 100 ? rs : fileScale;
|
||||
if (n === 0 && scale === 5) return null;
|
||||
return Math.max(0, Math.min(100, Math.round((n / scale) * 100)));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user