سامانه رأی‌گیری کارکنان
========================

این نسخه برای هاست PHP طراحی شده است.

فایل‌های اصلی:
- index.html: صفحه رأی‌گیری عمومی
- results.html: پنل مدیریت و مشاهده نتایج
- employees.txt: لیست افرادی که در فرم به عنوان گزینه رأی نمایش داده می‌شوند
- voters.txt: لیست کدهای پرسنلی مجاز برای رأی دادن
- votes.json: محل ذخیره رأی‌ها
- matching_report.txt: گزارش تطبیق اسامی اکسل با users.json

ساختار employees.txt:
username|نام نمایشی|سمت یا واحد

ساختار voters.txt:
username|نام رأی‌دهنده

نکته مهم:
در این نسخه، کد اختصاصی هر نفر همان username داخل users.json است؛ یعنی کاربر در فرم فقط کد پرسنلی خودش را وارد می‌کند.
سیستم سمت سرور بررسی می‌کند که کد داخل voters.txt وجود داشته باشد و قبلاً در همین دوره رأی‌گیری استفاده نشده باشد.
بنابراین Incognito یا پاک‌کردن مرورگر باعث رأی تکراری نمی‌شود.

ریست دوره رأی‌گیری:
در results.html با رمز مدیریت وارد شوید، عبارت RESET را بنویسید و دکمه ریست را بزنید.
ریست فقط votes.json را آرشیو و خالی می‌کند و electionId جدید می‌سازد.
voters.txt تغییر نمی‌کند؛ چون کدهای پرسنلی ثابت هستند و برای دوره جدید دوباره قابل استفاده‌اند.

تنظیمات مهم:
در config.php حتماً این دو مقدار را تغییر دهید:
- secret_key
- admin_password

سطح دسترسی پیشنهادی:
- votes.json: در صورت مشکل ثبت رأی، permission را 664 یا در صورت نیاز 666 کنید.
- پوشه voting_form_app باید امکان ساخت پوشه archive را داشته باشد.

حفاظت فایل‌ها:
.htaccess دسترسی مستقیم به votes.json، employees.txt، voters.txt و config.php را می‌بندد.

وضعیت لیست این نسخه:
- تعداد گزینه‌های قابل رأی در employees.txt: 67 نفر.
- تعداد کدهای پرسنلی مجاز در voters.txt: 65 کد.
- دو مشاور «مرتضي خيردوست» و «دامون پورقاسمی مقدم» کد پرسنلی واقعی ندارند؛ برای اینکه بتوان به آن‌ها رأی داد، فقط در employees.txt با شناسه داخلی CONSULTANT-01 و CONSULTANT-02 ثبت شده‌اند و در voters.txt قرار نگرفته‌اند.
- تغییرات جدید: ماتیا مانگاسار = مانیتورینگ، محسن شایسته = مانیتورینگ، محمد صابری = مدیر پروژه، بهنام رضایی = مسئول قرارداد ها (کد 10382).

قانون رأی به خود:
- هر رأی‌دهنده نمی‌تواند به خودش رأی بدهد. کنترل هم در app.js و هم در api-vote.php انجام می‌شود.
