StatistaAmeri/frontend/src/lib/labels.ts

166 lines
5.9 KiB
TypeScript

// Persian labels + IA metadata for the dashboard's category tree.
// The backend /api/tree returns raw English group names; we present them in
// Persian and frame them under the "بازار جهانی" domain.
export const GROUP_LABELS: Record<string, string> = {
"Base Metals": "فلزات پایه",
"Carbon Steel": "فولاد کربنی",
Ferroalloys: "فروآلیاژها",
"Minor Metals": "فلزات جزئی",
"Rare Earths": "عناصر کمیاب خاکی",
Refractories: "نسوزها",
"Stainless & Special": "استیل و فولاد خاص",
"Steel Raw Materials": "مواد اولیه فولاد",
};
export function groupLabel(group: string): string {
return GROUP_LABELS[group] ?? group;
}
export type DomainKey = "global" | "domestic" | "live";
export const DOMAINS: { key: DomainKey; label: string; hint: string }[] = [
{ key: "global", label: "بازار جهانی", hint: "فلزات و کامودیتی با تاریخچه و مقایسه" },
{ key: "domestic", label: "بازار داخلی", hint: "ارز، سکه و طلا — زنده" },
{ key: "live", label: "زنده", hint: "کامودیتی و بازارهای جهانی" },
];
// Category (sub-group) names from /api/tree, translated to Persian.
export const CATEGORY_LABELS: Record<string, string> = {
// Base Metals
Copper: "مس",
Lead: "سرب",
Nickel: "نیکل",
Tin: "قلع",
Zinc: "روی",
// Carbon Steel
Coated: "پوشش‌دار",
"Cold Rolled Coil": "کلاف نورد سرد",
"Hot Rolled Coil": "کلاف نورد گرم",
Pipe: "لوله",
Plate: "ورق ضخیم",
Rebar: "میلگرد",
Sections: "مقاطع",
Strip: "تسمه",
"Wire Rod": "مفتول",
// Ferroalloys
"Calcium Silicon": "کلسیم سیلیسیم",
"Chrome Ore": "سنگ کروم",
"Chromium Silicon": "کروم سیلیسیم",
Ferroboron: "فروبور",
Ferrochrome: "فروکروم",
Ferromanganese: "فرومنگنز",
Ferromolybdenum: "فرومولیبدن",
Ferronickel: "فرونیکل",
Ferroniobium: "فرونیوبیم",
Ferrophosphorus: "فروفسفر",
Ferrosilicon: "فروسیلیس",
Ferrotitanium: "فروتیتانیم",
Ferrotungsten: "فروتنگستن",
Ferrovanadium: "فرووانادیم",
"Manganese Ore": "سنگ منگنز",
Silicomanganese: "سیلیکومنگنز",
// Minor Metals
Antimony: "آنتیموان",
Arsenic: "آرسنیک",
Bismuth: "بیسموت",
Cadmium: "کادمیم",
Calcium: "کلسیم",
Chromium: "کروم",
Cobalt: "کبالت",
Gallium: "گالیم",
Germanium: "ژرمانیم",
Indium: "ایندیم",
Lithium: "لیتیم",
Magnesium: "منیزیم",
Manganese: "منگنز",
Mercury: "جیوه",
Molybdenum: "مولیبدن",
Niobium: "نیوبیم",
Rhenium: "رنیم",
Selenium: "سلنیم",
Silicon: "سیلیسیم",
Strontium: "استرانسیم",
Tantalum: "تانتالیم",
Tellurium: "تلوریم",
Titanium: "تیتانیم",
Tungsten: "تنگستن",
Vanadium: "وانادیم",
Zirconium: "زیرکونیم",
// Rare Earths
Lutetium: "لوتتیم",
Neodymium: "نئودیمیم",
Praseodymium: "پرازئودیمیم",
Samarium: "ساماریم",
Scandium: "اسکاندیم",
Terbium: "تربیم",
Ytterbium: "ایتربیم",
Yttrium: "ایتریم",
// Refractories
"Calcined Bauxite": "بوکسیت کلسینه",
Carbon: "کربن",
"Fused Alumina": "آلومینای ذوبی",
Graphite: "گرافیت",
Magnesia: "منیزیا",
"Silicon Carbide": "کاربید سیلیسیم",
// Stainless & Special
"Bearing Steel": "فولاد بلبرینگ",
"Stainless Bar": "میلگرد استیل",
"Stainless Pipe": "لوله استیل",
"Stainless Scrap": "ضایعات استیل",
"Structural Steel": "فولاد ساختمانی",
// Steel Raw Materials
Coal: "زغال‌سنگ",
Coke: "کک",
Iron: "آهن",
"Iron Ore": "سنگ آهن",
"Steel Billet": "بیلت فولادی",
"Steel Scrap": "ضایعات فولاد",
};
export function categoryLabel(category: string): string {
return CATEGORY_LABELS[category] ?? category;
}
// Yahoo Finance commodities — Persian names + grouping (keyed by symbol).
export type CommodityGroup = "energy" | "metals" | "agri";
export const COMMODITY_GROUP_LABELS: Record<CommodityGroup, string> = {
energy: "انرژی",
metals: "فلزات",
agri: "کشاورزی",
};
export const COMMODITY_GROUP_ORDER: CommodityGroup[] = ["energy", "metals", "agri"];
export const COMMODITIES: Record<string, { fa: string; group: CommodityGroup }> = {
"CL=F": { fa: "نفت خام WTI", group: "energy" },
"BZ=F": { fa: "نفت برنت", group: "energy" },
"NG=F": { fa: "گاز طبیعی", group: "energy" },
"RB=F": { fa: "بنزین", group: "energy" },
"HO=F": { fa: "نفت گرمایشی", group: "energy" },
"GC=F": { fa: "طلا", group: "metals" },
"SI=F": { fa: "نقره", group: "metals" },
"HG=F": { fa: "مس", group: "metals" },
"PL=F": { fa: "پلاتین", group: "metals" },
"PA=F": { fa: "پالادیوم", group: "metals" },
"ALI=F": { fa: "آلومینیوم", group: "metals" },
"NI=F": { fa: "نیکل", group: "metals" },
"ZC=F": { fa: "ذرت", group: "agri" },
"ZW=F": { fa: "گندم", group: "agri" },
"ZS=F": { fa: "سویا", group: "agri" },
"KC=F": { fa: "قهوه", group: "agri" },
"CT=F": { fa: "پنبه", group: "agri" },
"CC=F": { fa: "کاکائو", group: "agri" },
"SB=F": { fa: "شکر", group: "agri" },
"OJ=F": { fa: "آب پرتقال", group: "agri" },
};
export function commodityLabel(symbol: string, fallback: string): string {
return COMMODITIES[symbol]?.fa ?? fallback;
}
export function commodityGroup(symbol: string): CommodityGroup {
return COMMODITIES[symbol]?.group ?? "metals";
}