- معرفی
- معماری
- تکنولوژیها
- نصب و راهاندازی
- ساختار پروژه
- API Documentation
- دیتابیس
- امنیت
- Deployment
- توسعه
STEELMETRICS یک سامانه جامع تحت وب برای مدیریت و تحلیل فرایندهای تولید فولاد است که شامل سه بخش اصلی میباشد:
- ⚡ EAF - کوره قوس الکتریکی (Electric Arc Furnace)
- 🔧 LF - کوره پاتیلی (Ladle Furnace)
- 🏭 CCM - ریختهگری مداوم (Continuous Casting Machine)
این سامانه با معماری Monorepo طراحی شده و شامل Frontend و Backend جداگانه است.
steelmetrics/
├── 📁 client/ # Frontend (React + Vite)
├── 📁 server/ # Backend (Node.js + Express)
├── 📁 shared/ # کدهای مشترک
├── 📄 docker-compose.yml
├── 📄 Dockerfile
└── 📄 README.md
┌─────────────────────────────────────────────────────────────┐
│ Frontend (React) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Pages │ │ Components │ │ Hooks │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓ HTTP/REST
┌─────────────────────────────────────────────────────────────┐
│ Backend (Node.js + Express) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Routes │ │ Controllers │ │ Middleware │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓ SQL
┌─────────────────────────────────────────────────────────────┐
│ PostgreSQL Database │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Users │ │ Heats │ │ Audit Logs │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
| تکنولوژی | نسخه | کاربرد |
|---|---|---|
| React | 18.2 | کتابخانه UI |
| TypeScript | 5.0 | زبان برنامهنویسی |
| Vite | 6.4 | Build Tool |
| Tailwind CSS | 4.0 | استایلدهی |
| React Router | 6.x | مدیریت مسیرها |
| Recharts | 2.x | نمودارها |
| تکنولوژی | نسخه | کاربرد |
|---|---|---|
| Node.js | 18+ | Runtime |
| Express | 4.18 | Web Framework |
| TypeScript | 5.0 | زبان برنامهنویسی |
| PostgreSQL | 16 | دیتابیس |
| JWT | 9.x | احراز هویت |
| bcrypt | 2.4 | رمزگذاری رمز عبور |
| تکنولوژی | کاربرد |
|---|---|
| Docker | Containerization |
| Docker Compose | Orchestration |
| Nginx | Reverse Proxy |
git clone https://github.com/yourusername/steelmetrics.git
cd steelmetrics# رفتن به پوشه server
cd server
# نصب وابستگیها
npm install
# کپی فایل .env
cp .env.example .env
# ویرایش .env با تنظیمات خودتان
nano .env
# ایجاد دیتابیس
createdb steelmetrics
# اجرای migration
npm run migrate
# seed دادههای اولیه
npm run seed
# اجرای سرور
npm run devBackend روی http://localhost:5000 اجرا میشود.
# برگشت به ریشه پروژه
cd ..
# نصب وابستگیها
npm install
# کپی فایل .env
cp .env.example .env
# ویرایش .env
nano .env
# اجرای سرور توسعه
npm run devFrontend روی http://localhost:3000 اجرا میشود.
git clone https://github.com/yourusername/steelmetrics.git
cd steelmetrics# ساخت و اجرای همه سرویسها
docker-compose up -d
# مشاهده لاگها
docker-compose logs -f
# توقف سرویسها
docker-compose downسرویسها:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- PostgreSQL: localhost:5432
- Nginx: http://localhost:80
steelmetrics/
│
├── 📁 client/ # Frontend
│ ├── 📁 src/
│ │ ├── 📁 components/ # کامپوننتهای مشترک
│ │ ├── 📁 contexts/ # React Contexts
│ │ ├── 📁 hooks/ # Custom Hooks
│ │ ├── 📁 pages/ # صفحات
│ │ ├── 📁 utils/ # ابزارهای کمکی
│ │ ├── App.tsx # کامپوننت اصلی
│ │ └── main.tsx # نقطه ورود
│ ├── package.json
│ └── vite.config.ts
│
├── 📁 server/ # Backend
│ ├── 📁 src/
│ │ ├── 📁 config/ # تنظیمات
│ │ ├── 📁 controllers/ # Controllers
│ │ ├── 📁 database/ # Database
│ │ ├── 📁 middleware/ # Middleware
│ │ ├── 📁 routes/ # Routes
│ │ └── server.ts # نقطه ورود
│ ├── package.json
│ └── tsconfig.json
│
├── 📁 shared/ # کدهای مشترک
│ ├── types/ # TypeScript Types
│ └── utils/ # Utility Functions
│
├── 📄 docker-compose.yml # Docker Compose
├── 📄 Dockerfile # Frontend Dockerfile
├── 📄 .env.example # نمونه فایل env
├── 📄 nginx.conf # تنظیمات Nginx
└── 📄 README.md # این فایل
ورود کاربر و دریافت token.
Request:
{
"username": "19029",
"password": "19029"
}Response:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "19029",
"fullName": "مدیر سایت",
"role": "admin",
"unitAccess": ["EAF", "LF", "CCM"]
}
}دریافت لیست ذوبها با pagination و فیلتر.
Query Parameters:
page(default: 1)limit(default: 50)search(Heat ID)shift(A, B, C, D)grade(Steel Grade)dateStart(YYYY/MM/DD)dateEnd(YYYY/MM/DD)
Response:
{
"data": [...],
"pagination": {
"page": 1,
"limit": 50,
"total": 1250,
"totalPages": 25
}
}ایجاد ذوب جدید.
Headers:
Authorization: Bearer <token>
Request:
{
"heatId": "1250",
"date": "1403/09/15",
"shift": "A",
"steelGrade": "4402"
}ذخیره دادههای EAF.
Request:
{
"powerOn": 45,
"tappingStartTime": "11:00",
"tappingEndTime": "11:30",
"tappingWeight": 85,
"refractoryCounters": {
"walls": 10,
"centerPiece": 11,
"bottom": 20,
"taphole": 14
},
...
}دریافت لیست کاربران (فقط admin).
ایجاد کاربر جدید.
Request:
{
"username": "19999",
"password": "19999",
"fullName": "کاربر جدید",
"role": "eaf_user",
"unitAccess": ["EAF"]
}دریافت اعلانها.
ارسال اعلان (فقط admin).
Request:
{
"message": "تعمیراتscheduled برای فردا"
}| Column | Type | Description |
|---|---|---|
| id | SERIAL | شناسه |
| username | VARCHAR(50) | نام کاربری |
| password_hash | VARCHAR(255) | رمز عبور hash شده |
| full_name | VARCHAR(100) | نام کامل |
| role | VARCHAR(20) | نقش |
| is_active | BOOLEAN | وضعیت فعال |
| unit_access | TEXT[] | دسترسی به واحدها |
| Column | Type | Description |
|---|---|---|
| id | SERIAL | شناسه |
| heat_id | VARCHAR(50) | شماره ذوب |
| date | VARCHAR(20) | تاریخ |
| shift | VARCHAR(10) | شیفت |
| steel_grade | VARCHAR(20) | گرید فولاد |
| eaf_status | VARCHAR(20) | وضعیت EAF |
| lf_status | VARCHAR(20) | وضعیت LF |
| ccm_status | VARCHAR(20) | وضعیت CCM |
| Column | Type | Description |
|---|---|---|
| id | SERIAL | شناسه |
| heat_id | VARCHAR(50) | شماره ذوب (FK) |
| data | JSONB | دادهها به صورت JSON |
# اجرای migration
npm run migrate
# seed دادههای اولیه
npm run seed- JWT Token برای احراز هویت
- bcrypt برای hash کردن رمز عبور
- Token Expiration برای امنیت بیشتر
- Role-based Access Control (RBAC)
- Unit-based Access Control
- Audit Logging برای تمام عملیاتها
- Helmet برای security headers
- CORS برای cross-origin requests
- Rate Limiting (قابل تنظیم)
- ✅ رمزهای عبور hash شده
- ✅ JWT با expiration
- ✅ Input validation
- ✅ SQL injection prevention
- ✅ XSS protection
- ✅ CSRF protection
- ✅ HTTPS (در production)
NODE_ENV=production
DB_HOST=your-db-host
DB_PORT=5432
DB_NAME=steelmetrics
DB_USER=your-db-user
DB_PASSWORD=your-secure-password
JWT_SECRET=your-super-secret-jwt-key
CORS_ORIGIN=https://steelmetrics.ir# Build Backend
cd server
npm run build
# Build Frontend
cd ../client
npm run builddocker-compose -f docker-compose.prod.yml up -dserver {
listen 80;
server_name steelmetrics.ir;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name steelmetrics.ir;
ssl_certificate /etc/letsencrypt/live/steelmetrics.ir/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/steelmetrics.ir/privkey.pem;
# Frontend
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
}
# Backend API
location /api {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}-
Branch Strategy:
main- productiondevelop- developmentfeature/*- ویژگیهای جدیدbugfix/*- رفع باگ
-
Commit Convention:
feat: اضافه کردن قابلیت جدید fix: رفع باگ docs: بهروزرسانی مستندات style: تغییرات ظاهری refactor: بازنویسی کد test: اضافه کردن تست chore: تغییرات build -
Code Review:
- همه PR ها باید review شوند
- حداقل 1 approval لازم است
- CI باید pass شود
# Backend tests
cd server
npm test
# Frontend tests
cd client
npm test
# E2E tests
npm run test:e2e| نقش | نام کاربری | رمز عبور |
|---|---|---|
| مدیر سایت | 19029 |
19029 |
| کاربر EAF | 19377 |
19377 |
| کاربر LF | 19513 |
19513 |
| کاربر CCM | 19616 |
19616 |
| تحلیلگر | 19452 |
19452 |
- Email: support@steelmetrics.ir
- Website: https://steelmetrics.ir
- Documentation: https://docs.steelmetrics.ir
این نرمافزار تحت مجوز اختصاصی منتشر شده است.
استفاده تجاری بدون اجازه کتبی ممنوع است.
STEELMETRICS — سامانه مدیریت و تحلیل تولید فولاد
نسخه 2.0.0 | 1403