Files
ERP/legacy/dash-prototype

سامانه مدیریت انبار — فرانت‌اند متصل به استک (FastAPI + PostgreSQL + Casdoor)

معماری نهایی:

مرورگر (فرانت HTML — inventory-system.html / change-inventory.html)
   │
   ├── ورود: Casdoor (OIDC + PKCE) یا رمز آزمایشی محلی
   │        → نقش/پروژه از پروفایل محلی (ایمیل ⇄ مدیر پروژه)
   │
   └── داده: هدرهای X-User-Role / X-Project-Id / X-User-Name-B64
            → FastAPI (/api/v1) → PostgreSQL

اجرا

استک (Docker):

cd v1.2
docker compose up -d --build
  • فرانت: http://localhost:3000 (nginx — پراکسی /api به بک‌اند)
  • API: http://localhost:8000/docs
  • Casdoor: http://localhost:8080 (admin/123) — بعد از seed: کاربرها mousavi/goli/mohaghegh/razaei با رمز 123456
  • seed استک: py seed_stack.py (واحد/پروژه/برند/متریال/انبار/تراکنش نمونه)
  • seed Casdoor: cd casdoor && py seed.py (سازمان/اپلیکیشن OIDC/کاربران + تولید casdoor-config.js)

اجرای محلی بدون Docker برای فرانت:

py -m http.server 8123

و app-config.js را با apiBase: 'http://localhost:8000/api/v1' بگذارید.

ساختار

فایل نقش
inventory-system.html داشبورد، کنترل روزانه، انبارها، سازمان‌دهی، ورود
change-inventory.html صفحه تغییر موجودی (فایل مستقل — فقط «برگشت به داشبوردها»)
core.js هویت/نشست + لایه API (fetch + هدرهای نقش) + آینه داده‌ها
style.css استایل مشترک
casdoor-config.js تنظیمات اتصال به Casdoor (تولیدشده توسط seed)
app-config.js آدرس API بک‌اند
callback.html بازگشت OIDC (تبدیل کد به توکن و نشست)
test-logic-v3.mjs تست (هویت + لایه API در برابر استک واقعی) → ALL_LOGIC_V3_OK
v1.2/ استک: backend (FastAPI) + frontend (nginx) + sql + seed_stack.py + docker-compose.yml
casdoor/ docker-compose Casdoor + PostgreSQL + seed.py

مدل دسترسی

  • ادمین: فقط‌خواندنی برای موجودی؛ مدیریت ساختار (پروژه/انبار/مدیران) در «سازمان‌دهی».
  • مدیر پروژه: ثبت و مشاهده فقط در انبارهای پروژه خودش (اعمال در بک‌اند با هدر X-Project-Id).
  • کاربران محلی (ایمیل ⇄ نقش/پروژه) در localStorage نگهداری می‌شوند؛ هویت واقعی از Casdoor.
  • رمزهای آزمایشی محلی: 10 ادمین، 1/2 مدیر پروژه برج آیتا، 3 مدیر پروژه الماس.