steelforesight/panel/scripts/seed-glance-mock.mjs

203 lines
22 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Seed mock «در یک نگاه» items (radar_items) across the 5 categories.
// Does NOT touch «رادار آینده» (radarFuture / radar_pages).
// Run from panel/: node scripts/seed-glance-mock.mjs
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import pg from 'pg';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// minimal .env loader (panel/.env)
const envPath = path.join(__dirname, '..', '.env');
if (fs.existsSync(envPath)) {
for (const line of fs.readFileSync(envPath, 'utf8').split(/\r?\n/)) {
const m = line.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*)\s*$/);
if (m && !process.env[m[1]]) process.env[m[1]] = m[2].replace(/^["']|["']$/g, '');
}
}
if (!process.env.DATABASE_URL) { console.error('DATABASE_URL not set'); process.exit(1); }
const pool = new pg.Pool({
connectionString: process.env.DATABASE_URL,
ssl: process.env.DATABASE_SSL === 'disable' ? false : { rejectUnauthorized: false },
});
const IMGS = [
'/news/photo-1611974789855-9c2a0a7236a3.jpg',
'/news/photo-1518770660439-4636190af475.jpg',
'/news/photo-1581092160607-ee22731c9b4e.jpg',
'/news/photo-1466611653911-95081537e5b7.jpg',
'/news/photo-1504307651254-35680f356dfd.jpg',
];
const DATES_FA = ['فروردین ۱۴۰۵', 'اردیبهشت ۱۴۰۵', 'خرداد ۱۴۰۵', 'تیر ۱۴۰۵'];
const DATES_EN = ['Mar 2026', 'Apr 2026', 'May 2026', 'Jun 2026'];
const AUTHOR = 'تحریریه اندیشکده فولاد آینده';
// 4 topics per category: [titleFa, excerptFa, bodyFa(2 paras), analysisFa, titleEn, excerptEn, bodyEn, analysisEn]
const DATA = {
market: [
['روند قیمت جهانی فولاد در نیمه دوم ۱۴۰۵', 'بررسی عوامل کلان مؤثر بر قیمت فولاد در بازارهای جهانی.',
['قیمت جهانی فولاد در ماه‌های اخیر تحت تأثیر تقاضای چین، سیاست‌های پولی بانک‌های مرکزی و نوسان هزینه انرژی قرار گرفته است.', 'تحلیل‌گران معتقدند تثبیت تقاضای ساخت‌وساز و کاهش نرخ بهره می‌تواند کف قیمتی جدیدی برای بازار رقم بزند.'],
'برای فولادسازان ایرانی، پایش هفتگی شاخص‌های قیمت و پوشش ریسک ارزی، کلید حفظ حاشیه سود در این دوره نوسانی است.',
'Global Steel Price Trend in H2 2026', 'Macro drivers shaping steel prices in world markets.',
['Global steel prices have been driven by Chinese demand, central-bank policy and volatile energy costs.'], 'Iranian mills should hedge FX exposure and track weekly price indices to protect margins.'],
['تأثیر تورم جهانی بر تقاضای فولاد', 'چگونه تورم و سیاست انقباضی، مصرف فولاد را بازتعریف می‌کند.',
['تورم پایدار در اقتصادهای بزرگ، هزینه تأمین مالی پروژه‌های زیرساختی را افزایش داده و بخشی از تقاضای فولاد را به تعویق انداخته است.', 'با این حال، طرح‌های توسعه زیرساخت در آسیا و خاورمیانه همچنان موتور محرک تقاضا باقی مانده‌اند.'],
'تمرکز بر بازارهای منطقه‌ای با تقاضای ساختاری بالا، ریسک کاهش مصرف ناشی از تورم را تا حد زیادی خنثی می‌کند.',
'Global Inflation and Steel Demand', 'How inflation reshapes steel consumption.',
['Persistent inflation has raised infrastructure financing costs and deferred part of steel demand.'], 'Focusing on regional markets with structural demand offsets inflation-driven consumption risk.'],
['چشم‌انداز بازار سنگ‌آهن و قراضه', 'تعادل عرضه و تقاضا در زنجیره مواد اولیه فولاد.',
['بازار سنگ‌آهن با افزایش عرضه استرالیا و برزیل و همزمان رشد تقاضای کوره‌های قوس الکتریکی برای قراضه، وارد فاز جدیدی شده است.', 'قیمت قراضه به‌عنوان شاخص پیشرو، نقش مهمی در پیش‌بینی مسیر قیمت محصولات نهایی دارد.'],
'تنوع‌بخشی به منابع تأمین سنگ‌آهن و توسعه بازار قراضه داخلی، مزیت رقابتی پایداری ایجاد می‌کند.',
'Iron Ore and Scrap Market Outlook', 'Supply-demand balance in steel raw materials.',
['Iron ore supply from Australia and Brazil rose while EAF scrap demand climbed.'], 'Diversifying ore sources and growing the domestic scrap market builds durable advantage.'],
['نوسانات نرخ ارز و صادرات فولاد ایران', 'اثر بی‌ثباتی ارزی بر رقابت‌پذیری صادرات.',
['نوسان نرخ ارز هم فرصت و هم تهدید برای صادرکنندگان فولاد است؛ تضعیف پول ملی رقابت قیمتی را بهبود می‌دهد اما هزینه واردات تجهیزات را بالا می‌برد.', 'مدیریت ریسک ارزی از طریق ابزارهای پوشش و قراردادهای بلندمدت اهمیت یافته است.'],
'صادرکنندگانی که سبد ارزی متنوع و قراردادهای ارزی پوشش‌دار دارند، در برابر شوک‌های نرخ ارز تاب‌آورترند.',
'FX Volatility and Iran Steel Exports', 'How currency swings affect export competitiveness.',
['Currency volatility is both an opportunity and a threat for steel exporters.'], 'Exporters with diversified currency baskets and hedged contracts are more resilient.'],
],
tech: [
['هوش مصنوعی در بهینه‌سازی کوره‌های قوس الکتریکی', 'کاهش مصرف انرژی با مدل‌های یادگیری ماشین.',
['الگوریتم‌های یادگیری ماشین با تحلیل هزاران پارامتر فرآیندی، نقطه بهینه مصرف انرژی و افزودنی‌ها را در کوره‌های قوس الکتریکی پیش‌بینی می‌کنند.', 'کارخانه‌های پیشرو تا ۱۲ درصد کاهش مصرف برق و بهبود کیفیت مذاب را گزارش کرده‌اند.'],
'سرمایه‌گذاری در زیرساخت داده و حسگرها پیش‌نیاز بهره‌برداری واقعی از هوش مصنوعی در فولادسازی است.',
'AI for Electric Arc Furnace Optimization', 'Cutting energy use with machine learning.',
['ML models predict the optimal energy and additive set-point in EAFs.'], 'Investing in data infrastructure and sensors is a prerequisite for real AI gains.'],
['دوقلوی دیجیتال در خطوط نورد', 'شبیه‌سازی بی‌درنگ برای کنترل کیفیت.',
['دوقلوی دیجیتال نسخه‌ای مجازی از خط نورد می‌سازد که امکان شبیه‌سازی سناریوها و پیش‌بینی عیوب پیش از وقوع را فراهم می‌کند.', 'این فناوری زمان توقف برنامه‌ریزی‌نشده را به‌طور محسوس کاهش می‌دهد.'],
'استقرار تدریجی دوقلوی دیجیتال از واحدهای پرریسک، مسیر کم‌هزینه‌تری برای تحول دیجیتال است.',
'Digital Twins in Rolling Mills', 'Real-time simulation for quality control.',
['A digital twin mirrors the rolling line to simulate scenarios and predict defects.'], 'Rolling out digital twins from high-risk units first is the lower-cost path.'],
['چاپ سه‌بعدی فلزی و آینده تولید قطعات', 'ساخت افزایشی در صنعت فولاد.',
['چاپ سه‌بعدی فلزی امکان تولید قطعات یدکی پیچیده و کم‌تیراژ را بدون نیاز به قالب فراهم می‌کند و زنجیره تأمین را کوتاه می‌سازد.', 'کاربرد آن در ساخت قطعات تعمیراتی کوره‌ها رو به گسترش است.'],
'ساخت افزایشی برای قطعات بحرانی و کمیاب، ریسک توقف تولید ناشی از کمبود قطعه را کاهش می‌دهد.',
'Metal 3D Printing and the Future of Parts', 'Additive manufacturing in steel.',
['Metal 3D printing enables complex, low-volume spare parts without tooling.'], 'Additive manufacturing for critical, scarce parts reduces downtime risk.'],
['اینترنت اشیای صنعتی در فولادسازی', 'پایش بی‌درنگ تجهیزات و نگهداری پیش‌بینانه.',
['با اتصال هزاران حسگر به پلتفرم‌های ابری، وضعیت سلامت تجهیزات به‌صورت لحظه‌ای پایش و خرابی‌ها پیش‌بینی می‌شود.', 'نگهداری پیش‌بینانه نرخ خرابی ناگهانی را به‌طور چشمگیری کاهش داده است.'],
'یکپارچگی داده میان واحدها، شرط تبدیل داده‌های حسگر به تصمیم‌های عملیاتی ارزشمند است.',
'Industrial IoT in Steelmaking', 'Real-time monitoring and predictive maintenance.',
['Thousands of cloud-connected sensors monitor equipment health in real time.'], 'Cross-unit data integration turns sensor data into valuable operational decisions.'],
],
commodity: [
['زنجیره تأمین عناصر نادر خاکی', 'وابستگی صنعت به مواد معدنی حیاتی.',
['عناصر نادر خاکی و فلزات حیاتی، نقش راهبردی در فناوری‌های نوین و آلیاژهای پیشرفته فولاد دارند و تمرکز عرضه آن‌ها در چند کشور، ریسک ژئواکونومیک ایجاد می‌کند.', 'توسعه ذخایر داخلی و بازیافت، اهرم کاهش این وابستگی است.'],
'نقشه‌برداری از ریسک تأمین مواد معدنی حیاتی باید بخشی از برنامه‌ریزی راهبردی صنعت باشد.',
'Rare Earth Supply Chain', 'Industry dependence on critical minerals.',
['Rare earths play a strategic role in advanced steel alloys and new tech.'], 'Mapping critical-mineral supply risk must be part of strategic planning.'],
['امنیت تأمین سنگ‌آهن داخلی', 'پایداری زنجیره مواد اولیه فولاد کشور.',
['با رشد ظرفیت فولادسازی، تقاضای سنگ‌آهن از عرضه داخلی پیشی گرفته و مدیریت ذخایر و کنسانتره اهمیت راهبردی یافته است.', 'سرمایه‌گذاری در اکتشاف و فرآوری، تضمین‌کننده تأمین بلندمدت است.'],
'تعادل میان صادرات سنگ‌آهن خام و تأمین خوراک داخلی، تصمیمی کلیدی برای سیاست‌گذار است.',
'Domestic Iron Ore Security', 'Stability of the national raw-material chain.',
['Steelmaking growth has outpaced domestic iron ore supply.'], 'Balancing raw ore exports with domestic feed is a key policy decision.'],
['بازار جهانی زغال‌سنگ کک‌شو', 'نقش زغال کک در مسیر تولید فولاد.',
['زغال‌سنگ کک‌شو نهاده کلیدی کوره‌بلند است و نوسان قیمت و محدودیت عرضه آن مستقیماً بر بهای تمام‌شده فولاد اثر می‌گذارد.', 'گذار به فناوری‌های کم‌کربن، تقاضای آتی این ماده را تحت‌تأثیر قرار می‌دهد.'],
'تنوع منابع تأمین زغال کک و قراردادهای بلندمدت، نوسان بهای تمام‌شده را مهار می‌کند.',
'Global Coking Coal Market', 'Cokes role in the steel route.',
['Coking coal is a key blast-furnace input; its price swings hit steel costs.'], 'Diversified coking-coal sources and long-term contracts curb cost volatility.'],
['تاب‌آوری زنجیره تأمین مواد اولیه', 'مدیریت ریسک اختلال در تأمین.',
['رویدادهای اقلیمی، تنش‌های تجاری و اعتصابات می‌توانند زنجیره تأمین مواد اولیه را مختل کنند؛ از این‌رو تاب‌آوری به اولویت راهبردی بدل شده است.', 'موجودی ایمنی و چندمنبعی‌سازی، دو ابزار اصلی کاهش این ریسک‌اند.'],
'طراحی زنجیره تأمین چندمنبعی با موجودی ایمنی هوشمند، تداوم تولید را در شوک‌ها تضمین می‌کند.',
'Raw-Material Supply Resilience', 'Managing disruption risk.',
['Climate events, trade tensions and strikes can disrupt raw-material chains.'], 'Multi-sourcing with smart safety stock ensures production continuity in shocks.'],
],
geo: [
['ژئوپلیتیک تعرفه‌های فولاد و امنیت اقتصادی', 'بازآرایی تجارت جهانی فولاد در سایه تعرفه‌ها.',
['موج جدید تعرفه‌ها و اقدامات حمایتی، مسیرهای صادراتی فولاد را بازآرایی کرده و امنیت اقتصادی تولیدکنندگان را به مسئله‌ای راهبردی تبدیل کرده است.', 'کشورهای صادرکننده ناچار به یافتن بازارهای جایگزین و ائتلاف‌های تجاری جدیدند.'],
'برای ایران، تمرکز بر بازارهای جنوب جهانی و کریدورهای منطقه‌ای، سپر ژئوپلیتیک تعرفه‌هاست.',
'Geopolitics of Steel Tariffs', 'Reshaping global trade under tariffs.',
['A new wave of tariffs is realigning steel export routes.'], 'For Iran, focusing on the Global South and regional corridors is the tariff shield.'],
['تحریم‌ها و مسیرهای جایگزین صادرات', 'راهبردهای دور زدن محدودیت‌های تجاری.',
['تحریم‌ها هزینه و پیچیدگی صادرات را افزایش می‌دهند، اما توسعه مسیرهای جایگزین و شرکای منطقه‌ای، فضای تنفس ایجاد می‌کند.', 'لجستیک منعطف و تنوع مقصد، کلید تداوم صادرات است.'],
'سرمایه‌گذاری در زیرساخت لجستیک منطقه‌ای، اثر تحریم بر جریان صادرات را کاهش می‌دهد.',
'Sanctions and Alternative Export Routes', 'Strategies around trade restrictions.',
['Sanctions raise export cost and complexity; alternative routes create breathing room.'], 'Investing in regional logistics infrastructure dampens sanctions impact on exports.'],
['رقابت چین و آمریکا در بازار فولاد', 'اثر رقابت دو ابرقدرت بر بازارهای هدف.',
['رقابت راهبردی چین و آمریکا بر زنجیره ارزش فولاد، از فناوری تا تجارت، سایه افکنده و بازارهای ثالث را به میدان رقابت تبدیل کرده است.', 'مازاد عرضه چین فشار قیمتی مستمری بر بازارهای آسیا و خاورمیانه وارد می‌کند.'],
'پایش سیاست‌های تجاری دو ابرقدرت، پیش‌نیاز تصمیم‌گیری صادراتی هوشمندانه است.',
'US-China Rivalry in Steel', 'Superpower competition in target markets.',
['US-China rivalry shadows the steel value chain from tech to trade.'], 'Monitoring both powers trade policy is a prerequisite for smart export decisions.'],
['کریدورهای ترانزیتی و امنیت تجارت', 'نقش کریدورهای منطقه‌ای در پایداری صادرات.',
['کریدورهای ترانزیتی شمال-جنوب و شرق-غرب، فرصت کاهش هزینه و زمان حمل فولاد به بازارهای منطقه‌ای را فراهم می‌کنند.', 'امنیت و پایداری این مسیرها مستقیماً بر رقابت‌پذیری صادرات اثر می‌گذارد.'],
'مشارکت فعال در توسعه کریدورهای منطقه‌ای، مزیت لجستیکی پایدار ایجاد می‌کند.',
'Transit Corridors and Trade Security', 'Regional corridors for export stability.',
['North-South and East-West corridors cut steel shipping cost and time.'], 'Active participation in regional corridors builds durable logistics advantage.'],
],
energy: [
['توافق‌نامه‌های تجاری منطقه‌ای و فولاد', 'فرصت‌های ناشی از پیمان‌های تجاری.',
['پیمان‌های تجاری منطقه‌ای با کاهش تعرفه و تسهیل گمرکی، دسترسی فولاد ایران به بازارهای همسایه را آسان‌تر می‌کنند.', 'بهره‌گیری از این ظرفیت نیازمند انطباق با استانداردها و گواهی‌های مقصد است.'],
'تطبیق محصولات با استانداردهای بازار هدف، پیش‌شرط بهره‌برداری از مزایای پیمان‌های تجاری است.',
'Regional Trade Pacts and Steel', 'Opportunities from trade agreements.',
['Regional trade pacts ease Iranian steel access to neighboring markets.'], 'Meeting destination standards is a precondition for reaping pact benefits.'],
['فرصت‌های صادرات به آفریقا و آسیای جنوب شرقی', 'بازارهای نوظهور با تقاضای رو به رشد.',
['رشد جمعیت و شهرنشینی در آفریقا و آسیای جنوب شرقی، تقاضای پایداری برای مقاطع ساختمانی فولاد ایجاد کرده است.', 'این بازارها کمتر در معرض فشارهای ژئوپلیتیک غرب قرار دارند.'],
'حضور زودهنگام و ساخت شبکه توزیع محلی، سهم بازار بلندمدت در این مقاصد را تثبیت می‌کند.',
'Export Opportunities in Africa and SE Asia', 'Emerging markets with rising demand.',
['Population growth and urbanization drive steady steel demand in Africa and SE Asia.'], 'Early entry and local distribution networks lock in long-term market share.'],
['تجارت مرزی و بازارهای همسایه', 'ظرفیت بازارهای کم‌فاصله برای صادرات.',
['بازارهای همسایه با هزینه حمل پایین و نیاز ساختاری به فولاد، مقصد طبیعی صادرات کوتاه‌زنجیره‌اند.', 'تسهیل تجارت مرزی و بازارچه‌ها، جریان صادرات خرد را تقویت می‌کند.'],
'تمرکز بر بازارهای همسایه با لجستیک کوتاه، حاشیه سود صادرات را به‌دلیل هزینه حمل پایین بهبود می‌دهد.',
'Border Trade and Neighboring Markets', 'Short-haul export potential.',
['Neighboring markets with low freight cost are natural short-chain export targets.'], 'Focusing on nearby markets improves export margins via low freight cost.'],
['کسب‌وکارهای صادرات‌محورِ فولاد', 'مدل‌های نوین تجارت بین‌المللی.',
['شرکت‌های صادرات‌محور با تخصصی‌سازی در بازارهای هدف و خدمات پس از فروش، ارزش افزوده بالاتری نسبت به صادرات خام ایجاد می‌کنند.', 'برندسازی و کیفیت پایدار، مزیت رقابتی این مدل است.'],
'گذار از صادرات خام به مدل صادرات‌محورِ برنددار، تاب‌آوری درآمد ارزی را افزایش می‌دهد.',
'Export-Oriented Steel Businesses', 'New international trade models.',
['Export-focused firms add more value than raw exports via specialization and after-sales.'], 'Shifting from raw exports to branded export models boosts FX revenue resilience.'],
],
};
const rows = [];
let order = 0;
const cats = Object.keys(DATA);
cats.forEach((cat, ci) => {
DATA[cat].forEach((t, i) => {
rows.push({
id: `glance-${cat}-${i + 1}`,
category: cat,
img: IMGS[(ci + i) % IMGS.length],
author_name: AUTHOR,
author_avatar: '',
title_fa: t[0], date_fa: DATES_FA[i % DATES_FA.length], excerpt_fa: t[1],
body_fa: t[2].join('\n\n'), analysis_fa: t[3],
title_en: t[4], date_en: DATES_EN[i % DATES_EN.length], excerpt_en: t[5],
body_en: t[6].join('\n\n'), analysis_en: t[7],
sort_order: order++,
});
});
});
const SQL = `
INSERT INTO radar_items
(id, category, img, author_name, author_avatar, title_fa, date_fa, excerpt_fa, body_fa, analysis_fa,
title_en, date_en, excerpt_en, body_en, analysis_en, sort_order)
VALUES
($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16)
ON CONFLICT (id) DO UPDATE SET
category=EXCLUDED.category, img=EXCLUDED.img, author_name=EXCLUDED.author_name,
title_fa=EXCLUDED.title_fa, date_fa=EXCLUDED.date_fa, excerpt_fa=EXCLUDED.excerpt_fa,
body_fa=EXCLUDED.body_fa, analysis_fa=EXCLUDED.analysis_fa,
title_en=EXCLUDED.title_en, date_en=EXCLUDED.date_en, excerpt_en=EXCLUDED.excerpt_en,
body_en=EXCLUDED.body_en, analysis_en=EXCLUDED.analysis_en, sort_order=EXCLUDED.sort_order,
updated_at=now();
`;
const main = async () => {
let n = 0;
for (const r of rows) {
await pool.query(SQL, [
r.id, r.category, r.img, r.author_name, r.author_avatar, r.title_fa, r.date_fa, r.excerpt_fa, r.body_fa, r.analysis_fa,
r.title_en, r.date_en, r.excerpt_en, r.body_en, r.analysis_en, r.sort_order,
]);
n++;
}
const counts = await pool.query(
"SELECT category, count(*)::int AS c FROM radar_items GROUP BY category ORDER BY category"
);
console.log(`seeded ${n} mock «در یک نگاه» items.`);
console.table(counts.rows);
await pool.end();
};
main().catch((e) => { console.error(e); process.exit(1); });