feat: distinguish fish by visual family
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s

This commit is contained in:
ik
2026-09-12 15:28:24 +07:00
parent b71e4a22a2
commit c3e847c249
6 changed files with 41 additions and 8 deletions
+16
View File
@@ -0,0 +1,16 @@
export type FishVisualFamily = "pike" | "salmonid" | "cyprinid" | "perch" | "catfish" | "eel" | "flatfish" | "marine" | "generic";
const FAMILY_TERMS: Array<[FishVisualFamily, RegExp]> = [
["pike", /щук|судак|pike|pickerel|zander|hecht/i],
["salmonid", /форел|лосос|сёмг|голец|таймен|хариус|trout|salmon|char|grayling|forelle|lachs|saibling/i],
["cyprinid", /карп|карась|лещ|плотв|линь|язь|жерех|голав|усач|амур|толстолоб|carp|bream|roach|tench|barbel|karpfen|brasse/i],
["perch", /окун|ёрш|perch|ruff|barsch/i],
["catfish", /сом|catfish|wels/i],
["eel", /угор|миног|eel|lamprey|aal/i],
["flatfish", /камбал|палтус|скат|flounder|halibut|ray|rochen/i],
["marine", /сельд|треск|скумбр|тунец|акул|сардин|herring|cod|mackerel|tuna|shark|hering|kabeljau/i],
];
export function fishVisualFamily(name: string): FishVisualFamily {
return FAMILY_TERMS.find(([, pattern]) => pattern.test(name))?.[0] ?? "generic";
}