Park__ReportTemplate/Content/01_project_content.tex

549 lines
34 KiB
TeX
Raw 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.

\newpage
\section*{مستندات پارک امیرکبیر و راهنمای گردش‌کار تیم‌ها}
\phantomsection
\addcontentsline{toc}{section}{مستندات پارک امیرکبیر و راهنمای گردش‌کار تیم‌ها}
\textbf{هدف:} این مستند رویه‌های عملیاتی استاندارد را برای تنظیم گزارش‌های پروژه و صورتجلسات با استفاده از قالب رسمی \lr{\LaTeX} ما تعیین می‌کند. با توجه به تفاوت ماهیت کاری، این مستند به چهار فصلِ موارد مشترک، راهنمای تیم توسعه (\lr{Devs})، راهنمای تیم تحقیق‌وتوسعه (\lr{R\&D}) و راهنمای مدیران برای صورتجلسات تقسیم شده است.
% ==========================================
% Chapter 1: Common Items
% ==========================================
\newpage
\section*{فصل اول: موارد مشترک (تمامی تیم‌ها)}
\phantomsection
\addcontentsline{toc}{subsection}{فصل اول: موارد مشترک (تمامی تیم‌ها)}
موارد این فصل برای تمامی خروجی‌های تیم‌ها الزامی است تا استاندارد یکپارچه سازمان حفظ شود.
\vspace{0.3cm}
\begin{ScoreBox}
\textbf{نحوه ورود به سیستم ابری:}
در حال حاضر امکان ثبت‌نام مستقیم یا دریافت ایمیل فعال‌سازی وجود ندارد. اکانت شما از پیش در سامانه ایجاد شده است؛ بنابراین لطفاً مستقیماً به پیوست انتهای همین سند (لیست حساب‌های کاربری) مراجعه کرده و روی لینک اختصاصی خود کلیک کنید. پس از تعیین رمز عبور جدید، می‌توانید وارد حساب خود شوید.
\end{ScoreBox}
\vspace{0.3cm}
\subsection*{۱. تنظیمات کامپایلر (الزامی)}
شما \textbf{باید} از \lr{XeLaTeX} به عنوان کامپایلر استفاده کنید. مسیر تغییر کامپایلر در پلتفرم داخلی ما (\lr{latex.amirkabirpark.ir}) (و سایت \lr{overleaf.com}) به شکل زیر است:
\begin{latin}
\textbf{File > Settings > Compiler > Compiler > XeLaTeX}
\end{latin}
\begin{figure}[h!]
\centering
\includegraphics[width=1.0\textwidth]{XeLaTex.png}
\caption{اسکرین‌شات از منوی سمت چپ سیستم ابری که تنظیمات کامپایلر \lr{XeLaTeX} را نشان می‌دهد.}
\label{fig:xelatex_settings}
\end{figure}
\subsection*{۲. ساختار فایل‌ها: مجاز و غیرمجاز}
برای درک بهتر محل قرارگیری فایل‌ها، ساختار درختی پروژه به شکل زیر است:
\begin{latin}
\begin{lstlisting}[language=bash, numbers=none, escapeinside={(*}{*)}]
Project_Root/
├── Assets/
│ ├── Font/
│ ├── Image/ <-- (*\rl{محل قرارگیری تصاویر شما}*)
│ └── references.bib
├── Config/
│ ├── 00_config.tex
│ └── 00_minutes_config.tex
├── Content/ <-- (*\rl{محل نوشتن متن گزارش}*)
│ ├── 01_project_content.tex
│ ├── 02_appendices.tex
│ └── 03_glossary.tex
├── Minutes_Content/
│ └── 01_minutes_content.tex
├── System/
├── latexmkrc
├── main.tex
└── minutes_main.tex
\end{lstlisting}
\end{latin}
\vspace{0.2cm}
\noindent\textbf{\textcolor{green!70!black}{\faCheckCircle}\ فایل‌های مجاز برای ویرایش (محتوا):}
\begin{itemize}
\item \lr{Config/00\_config.tex}: تنظیم عنوان و مشخصات سند اصلی.
\item \lr{Config/00\_minutes\_config.tex}: تنظیم مشخصات صورتجلسات.
\item \lr{Content/}: نگارش متن اصلی گزارش‌ها در این پوشه.
\item \lr{Minutes\_Content/}: نگارش متن مصوبات جلسات.
\item \lr{Assets/Image/}: قرار دادن تصاویر اختصاصی پروژه صرفاً در این پوشه.
\item \lr{Assets/references.bib}: درج ارجاعات منابع.
\end{itemize}
\vspace{0.2cm}
\noindent\textbf{\textcolor{red}{\faBan}\ فایل‌های غیرمجاز (سیستم و هسته):}
\begin{itemize}
\item \textbf{فونت‌ها و لوگوها:} فونت‌های پوشه \lr{Assets/Font} و آیکون \lr{logo.png}.
\item \textbf{موتور قالب‌دهی:} \lr{System/team\_template.sty} و \lr{System/minutes\_team\_template.tex}.
\item \textbf{مدیریت پروژه و گیت:} پوشه‌های پنهان \lr{.gitea} و \lr{.github}.
\item \textbf{فایل‌های ریشه و کامپایل:} \lr{latexmkrc}، \lr{main.tex} و \lr{minutes\_main.tex}.
\end{itemize}
\subsection*{۳. متغیرهای پیکربندی گزارش اصلی (\lr{00\_config.tex})}
تمامی تنظیمات کلی گزارش شما در فایل \lr{00\_config.tex} قرار دارد. متغیرهای زیر را بر اساس پروژه خود تغییر دهید:
\vspace{0.2cm}
\textbf{الف) اطلاعات پایه:}
\begin{itemize}
\item \lr{\textbackslash DocTitle}: عنوان اصلی سند. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocTitle\}\{\rl{معماری بک‌اند پلتفرم بازی‌وارسازی}\}}}
\item \lr{\textbackslash DocHeaderTitle}: عنوان کوتاه برای هدر صفحات. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocHeaderTitle\}\{\rl{مستند معماری بک‌اند}\}}}
\item \lr{\textbackslash DocSubtitle}: زیرعنوان یا توضیحات کوتاه سند. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocSubtitle\}\{\rl{توسعه سمت سرور با فریم‌ورک جنگو}\}}}
\item \lr{\textbackslash DocVersion}: نسخه فعلی مستند. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocVersion\}\{2.0.0\}}}
\item \lr{\textbackslash DocID}: شماره شناسه سند. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocID\}\{\textbackslash lr\{[DOC-PRJ-01]\}\}}}
\item \lr{\textbackslash DocDate}: تاریخ تدوین. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocDate\}\{\textbackslash today\}} \rl{یا} \lr{\textbackslash newcommand\{\textbackslash DocDate\}\{\rl{۱۴۰۵/۰۳/۲۰}\}}}
\end{itemize}
\textbf{ب) وضعیت و سطح محرمانگی:}
\begin{itemize}
\item \lr{\textbackslash DocSecret}: سطح محرمانگی سند. یکی از گزینه‌های زیر را انتخاب کنید:
\\ \lr{\textbackslash ConfPublic} (عمومی)، \lr{\textbackslash ConfInternal} (داخلی)، \lr{\textbackslash ConfSecret} (محرمانه)، \lr{\textbackslash ConfTopSecret} (بسیار محرمانه)
\\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocSecret\}\{\textbackslash ConfInternal\}}}
\item \lr{\textbackslash DocStatus}: وضعیت فعلی مستند. یکی از گزینه‌های زیر را انتخاب کنید:
\\ \lr{\textbackslash StatusDraft} (پیشنویس)، \lr{\textbackslash StatusReview} (در حال بررسی)، \lr{\textbackslash StatusApproved} (مصوب و اجرایی)، \lr{\textbackslash StatusArchived} (آرشیو شده)
\\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocStatus\}\{\textbackslash StatusApproved\}}}
\end{itemize}
\textbf{ج) تهیه‌کنندگان و سازمان:}
\begin{itemize}
\item \lr{\textbackslash DocAuthor}: نام نویسندگان. (برای رفتن به خط بعد از \lr{\textbackslash newline} استفاده کنید).
\\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash DocAuthor\}\{\rl{علی بدیعی \lr{\textbackslash newline} مسعود قریشی}\}}}
\item \lr{\textbackslash DefaultAuthor}: با مقدار \lr{true} نام پارک علم و فناوری چاپ می‌شود و با مقدار \lr{false} نام نویسندگان.
\\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash DefaultAuthortrue}}
\item \lr{\textbackslash MultiAuthor}: با مقدار \lr{true} عبارت «تهیه‌کنندگان» و با مقدار \lr{false} عبارت «تهیه‌کننده» چاپ می‌شود.
\\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash MultiAuthorfalse}}
\end{itemize}
\textbf{د) تنظیمات ظاهری و ساختار سند:}
\begin{itemize}
\item \lr{\textbackslash ModernShapes}: با مقدار \lr{true} شکل‌های هندسی و گرافیکی در صفحات چاپ می‌شوند.
\\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash ModernShapestrue}}
\item \lr{\textbackslash SeparateCover}: با مقدار \lr{true} کاور در یک صفحه مجزا چاپ می‌شود.
\\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash SeparateCoverfalse}}
\item متغیرهای \lr{\textbackslash HasAppendices}، \lr{\textbackslash HasGlossary} و \lr{\textbackslash HasReferences}: با تنظیم روی \lr{true} یا \lr{false} می‌توانید بخش‌های پیوست، واژه‌نامه و مراجع را در انتهای سند نمایش داده یا پنهان کنید.
\\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash HasGlossarytrue}}
\end{itemize}
\subsection*{۴. راهنمای درج محتوای غنی (\lr{Rich Content})}
\textbf{الف) جعبه‌های متنی اختصاصی (\lr{ScoreBox}):}
کد ورودی:
\begin{latin}
\begin{lstlisting}[language=TeX, escapeinside={(*}{*)}]
\begin{ScoreBox}
\textbf{(*\rl{امتیاز کلی:}*)} (*\rl{متوسط رو به خوب؛ مناسب برنامه‌های درون‌سازمانی.}*)
\end{ScoreBox}
\end{lstlisting}
\end{latin}
\textbf{نتیجه ظاهری:}
\begin{ScoreBox}
\textbf{امتیاز کلی:} متوسط رو به خوب؛ مناسب برنامه‌های درون‌سازمانی.
\end{ScoreBox}
\textbf{ب) درج قطعه کد (\lr{Code Snippets}):}
کد ورودی:
\begin{latin}
\begin{lstlisting}[language=TeX]
\begin{LTR}
\begin{lstlisting}[language=Python]
def check_user_permission(user_id, role):
return True # Must be in LTR environment
\end{LTR}
\end{lstlisting}
\end{latin}
\textbf{نتیجه ظاهری:}
\begin{LTR}
\begin{lstlisting}[language=Python]
def check_user_permission(user_id, role):
return True
\end{lstlisting}
\end{LTR}
\textbf{ج) جدول ساختاریافته (الگوی استاندارد):}
از جدول‌های نوع \lr{longtable} استفاده کنید تا در صورت طولانی شدن، هدر جدول به صورت خودکار در صفحه بعد تکرار شود.
\textbf{کد ورودی:} \\
\noindent\begin{minipage}{\textwidth}
\begin{latin}
\begin{lstlisting}[language=TeX, escapeinside={(*}{*)}]
\begin{center}
\begin{longtable}{|>{\centering\arraybackslash}p{0.1\textwidth}|p{0.6\textwidth}|>{\centering\arraybackslash}p{0.2\textwidth}|}
\caption{(*\rl{لیست وظایف پروژه و وضعیت آن‌ها}*)} \\
\hline
\rowcolor{tablehead}
\textbf{ID} & \textbf{Task Title} & \textbf{Status} \\
\hline
\endfirsthead
\hline
1 & Database Structure Review & Done \\
\hline
(*\rl{۲}*) & (*\rl{توسعه \lr{API} کاربران}*) & (*\rl{در حال انجام}*) \\
\hline
\end{longtable}
\end{center}
\end{lstlisting}
\end{latin}
\end{minipage}
\textbf{نتیجه ظاهری:}
\begin{center}
\begin{longtable}{|>{\centering\arraybackslash}p{0.1\textwidth}|p{0.6\textwidth}|>{\centering\arraybackslash}p{0.2\textwidth}|}
\caption{\rl{لیست وظایف پروژه و وضعیت آن‌ها}} \\
\hline
\rowcolor{tablehead}
\lr{\textbf{ID}} & \lr{\textbf{Task Title}} & \lr{\textbf{Status}} \\
\hline
\endfirsthead
\hline
\lr{1} & \lr{Database Structure Review} & \lr{Done} \\
\hline
۲ & توسعه \lr{API} کاربران & در حال انجام \\
\hline
\end{longtable}
\end{center}
\textbf{د) باکس نقل قول (\lr{QuoteBox}):}
کد ورودی:
\begin{latin}
\begin{lstlisting}[language=TeX, escapeinside={(*}{*)}]
\begin{QuoteBox}
(*\rl{طراحی خوب یعنی حذف جزئیات غیرضروری تا زمانی که تنها هسته اصلی و ارزشمند باقی بماند.}*)
(*\rl{ما این نقل‌قول را برای جلب توجه بیشتر به این شکل طراحی کرده‌ایم.}*)
\end{QuoteBox}
\end{lstlisting}
\end{latin}
\textbf{نتیجه ظاهری:}
\begin{QuoteBox}
طراحی خوب یعنی حذف جزئیات غیرضروری تا زمانی که تنها هسته اصلی و ارزشمند باقی بماند.
ما این نقل‌قول را برای جلب توجه بیشتر به این شکل طراحی کرده‌ایم.
\end{QuoteBox}
\textbf{هـ) معادلات ریاضی (\lr{Math Equations}):}
کد ورودی:
\begin{latin}
\begin{lstlisting}[language=TeX, escapeinside={(*}{*)}]
\textbf{(*\rl{معادلات نمونه:}*)} \\
(*\rl{فرمول محاسبه خروجی بر اساس ورودی‌های سیستم:}*)
\[ \boldsymbol{Z_{total} = \sum_{i=1}^{n} (X \times Y_i)} \]
(*\rl{درصد بهره‌وری یا توزیع بار در سرور:}*)
\[ \boldsymbol{P_n = \frac{Y_n}{Z_{total}}} \]
\end{lstlisting}
\end{latin}
\textbf{نتیجه ظاهری:} \\
\textbf{معادلات نمونه:} \\
فرمول محاسبه خروجی بر اساس ورودی‌های سیستم:
\[ \boldsymbol{Z_{total} = \sum_{i=1}^{n} (X \times Y_i)} \]
درصد بهره‌وری یا توزیع بار در سرور:
\[ \boldsymbol{P_n = \frac{Y_n}{Z_{total}}} \]
\vspace{0.4cm}
\textbf{و) درج تصویر (\lr{Image}):}
ابتدا تصویر اختصاصی خود را در پوشه \lr{Assets/Image/} قرار دهید (آپلود کنید). سپس با استفاده از قطعه کد زیر، آن را در متن فراخوانی کنید:
کد ورودی:
\begin{latin}
\begin{lstlisting}[language=TeX, escapeinside={(*}{*)}]
\begin{figure}[h!]
\centering
% (*\rl{مسیر و نام فایل تصویر خود را در کروشه زیر قرار دهید}*)
\includegraphics[width=0.7\textwidth]{image.png}
\caption{(*\rl{توضیح زیر تصویر (کپشن) در اینجا نوشته می‌شود.}*)}
\label{fig:my_custom_image}
\end{figure}
\end{lstlisting}
\end{latin}
\textbf{نتیجه ظاهری:} \\
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\textwidth]{image.png}
\caption{(*\rl{توضیح زیر تصویر (کپشن) در اینجا نوشته می‌شود.}*)}
\label{fig:my_custom_image}
\end{figure}
\vspace{0.4cm}
\textbf{ز) تصاویر چندتایی (\lr{Subfigure}):}
کد ورودی:
\begin{latin}
\begin{lstlisting}[language=TeX, escapeinside={(*}{*)}]
\begin{figure}[h!]
\centering
\begin{subfigure}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{image.png}
\caption{(*\rl{تصویر الف}*)}
\label{fig:sub1}
\end{subfigure}%
\hfill
\begin{subfigure}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{image.png}
\caption{(*\rl{تصویر ب}*)}
\label{fig:sub2}
\end{subfigure}
\caption{(*\rl{نمونه قرارگیری دو تصویر در کنار هم.}*)}
\label{fig:subfigures}
\end{figure}
\end{lstlisting}
\end{latin}
\textbf{نتیجه ظاهری:} \\
\begin{figure}[h!]
\centering
\begin{subfigure}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{image.png}
\caption{\rl{تصویر الف}}
\label{fig:sub1}
\end{subfigure}%
\hfill
\begin{subfigure}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{image.png}
\caption{\rl{تصویر ب}}
\label{fig:sub2}
\end{subfigure}
\caption{\rl{نمونه قرارگیری دو تصویر در کنار هم.}}
\label{fig:subfigures}
\end{figure}
% ==========================================
% Chapter 2: Development Team
% ==========================================
\clearpage
\section*{فصل دوم: اختصاصی تیم توسعه (\lr{T\&T})}
\phantomsection
\addcontentsline{toc}{subsection}{فصل دوم: اختصاصی تیم توسعه (\lr{Devs / T\&T})}
\begin{ScoreBox}
\textbf{\large \textcolor{primary}{\faLaptopCode\ جریان‌کار تیم‌های توسعه}} \\
شما به عنوان برنامه‌نویس، مستندات نرم‌افزار را در کنار کدهای خود توسعه می‌دهید. می‌توانید از محیط محلی خود (\lr{Local}) یا سیستم ابری لاتک برای ویرایش استفاده کنید. در هر دو حالت، سورس فایل‌ها باید در پوشه \lr{docs/} مخزن پروژه‌ی اصلی قرار گیرد و خروجی \lr{PDF} مستقیماً برای مدیر تیم فنی (\lr{Head of T\&T}) ارسال گردد.
\end{ScoreBox}
\subsection*{۱. راه‌اندازی اولیه و ایجاد گزارش}
\begin{itemize}
\item \textbf{گام اول - دریافت قالب:} در پوشه ریشه پروژه نرم‌افزاری خود، می‌توانید مخزن مستندات را \lr{Clone} یا \lr{Pull} کنید، و یا فایل \lr{zip} قالب را دانلود کرده و در پروژه اکسترکت کنید. مسیر نهایی حتماً باید پوشه \lr{docs/} باشد:
\begin{latin}
\begin{lstlisting}[language=bash, numbers=none]
git clone ssh://git@ssh.git.amirkabirpark.ir:2222/bestmahdi2/Park__ReportTemplate.git docs
cd docs
\end{lstlisting}
\end{latin}
\vspace{0.2cm}
\textbf{مثال ساختار پوشه‌ها در یک پروژه واقعی (مانند جنگو و داکر):}
\begin{latin}
\begin{lstlisting}[language=bash, numbers=none, escapeinside={(*}{*)}]
My_Django_Project/
├── app/
├── core/
├── docker-compose.yml
├── Dockerfile
├── manage.py
├── requirements.txt
└── docs/ <-- (*\rl{محل قرارگیری مستندات لاتک}*)
├── Assets/
├── Content/
└── main.tex
\end{lstlisting}
\end{latin}
\item \textbf{گام دوم - کامپایل و خروجی:} شما کاملاً مختارید که به یکی از دو روش زیر فایل \lr{PDF} را بسازید:
\begin{itemize}
\item \textbf{روش اول (ابری):} فایل‌های پوشه \lr{docs/} را در سایت \lr{latex.amirkabirpark.ir} آپلود و خروجی بگیرید، سپس تغییرات فایل‌های \lr{.tex} را کپی کرده و در پروژه خود کامیت کنید.
\item \textbf{روش دوم (محلی):} با نصب بسته \lr{texlive-full} در لینوکس، مستقیماً دستور زیر را اجرا کنید:
\begin{latin}
\begin{lstlisting}[language=bash, numbers=none]
xelatex main.tex
\end{lstlisting}
\end{latin}
\end{itemize}
\end{itemize}
\subsection*{۲. قوانین \lr{.gitignore}}
فایل‌های موقت ساخته شده توسط لاتک حجم مخزن را اشغال می‌کنند. \textbf{حتماً} موارد زیر را به فایل \lr{.gitignore} پروژه اضافه کنید تا فایل‌های اضافی مثل \lr{.aux} و \lr{.log} روی سرور پوش نشوند:
\begin{latin}
\begin{lstlisting}[language=bash, numbers=none]
# LaTeX Build Files
*.aux
*.log
*.out
*.pdf
*.toc
*.bbl
*.blg
*.fls
*.fdb_latexmk
*.synctex.gz
*.xdv
\end{lstlisting}
\end{latin}
\subsection*{۳. تنظیمات پوش دوگانه (\lr{Dual-Push}) به گیتی و گیت‌هاب}
برای اینکه همزمان آپدیت‌های شما در سرور پارک (\lr{Gitea}) و مخزن اصلی بکاپ (\lr{GitHub}) قرار گیرد، از دستورات زیر استفاده کنید:
\begin{latin}
\begin{lstlisting}[language=bash, numbers=none]
# Rename current remote to prevent conflicts
git remote rename origin old-origin
# Add a unified remote named "all" pointing to both URLs
git remote add all ssh://git@ssh.git.amirkabirpark.ir:2222/bestmahdi2/your-repo.git
git remote set-url --add --push all ssh://git@ssh.git.amirkabirpark.ir:2222/bestmahdi2/your-repo.git
git remote set-url --add --push all https://github.com/bestmahdi2/your-repo.git
# Push to both remotes simultaneously:
git push all main
\end{lstlisting}
\end{latin}
\subsection*{۴. استراتژی مدیریت مخازن و نسخه‌گذاری کدها}
به منظور یکپارچگی، لطفاً موارد زیر را در فرآیند توسعه خود لحاظ کنید:
\begin{itemize}
\item \textbf{ثبت‌نام در گیت پارک:} لطفاً در سامانه \lr{\url{https://git.amirkabirpark.ir/}} ثبت‌نام کنید. پیشنهاد می‌شود دقیقاً از همان نام کاربری گیت‌هاب خود استفاده نمایید.
\item \textbf{به‌روزرسانی دوگانه مخازن:} مخازنی مشابه و با همان نام گیت‌هاب در این سامانه نیز ایجاد خواهند شد و همواره به صورت \textbf{خصوصی (\lr{Private})} باقی می‌مانند. شما موظف هستید تغییرات خود را روی هر دو ریموت آپدیت کنید.
\item \textbf{فعال‌سازی امکانات:} شما مجاز هستید قابلیت‌های \lr{Actions} و \lr{Releases} را برای مخازن خود فعال نمایید.
\item \textbf{مدیریت نسخه کدها:} هر پروژه باید فایلی برای نگهداری نسخه داشته باشد. به عنوان مثال، یک فایل \lr{\_\_version\_\_.py} با محتوای زیر ایجاد کنید:
\begin{latin}
\begin{lstlisting}[language=Python, numbers=none]
__version__ = "1.28.4"
\end{lstlisting}
\end{latin}
همچنین باید هر نسخه جدید را تگ (\lr{Tag}) زده و به ریموت‌ها پوش (\lr{Push}) کنید. از دستورات زیر برای این کار استفاده نمایید:
\begin{latin}
\begin{lstlisting}[language=bash, numbers=none, escapeinside={(*}{*)}]
git tag -a v1.28.4 -m "Release version 1.28.4"
git push all v1.28.4
# (*\rl{یا برای ارسال تمام تگ‌ها:}*)
git push all --tags
\end{lstlisting}
\end{latin}
\\ \textcolor{primary}{\faInfoCircle\ \textbf{نکته مهم:}} \textbf{نسخه‌ای که در فایل \lr{00\_config.tex} وارد می‌کنید صرفاً مربوط به سند گزارش است و ارتباطی با نسخه کد پروژه ندارد.}
\end{itemize}
% ==========================================
% Chapter 3: Research & Development Team
% ==========================================
\newpage
\section*{فصل سوم: اختصاصی تیم تحقیق‌وتوسعه (\lr{R\&D})}
\phantomsection
\addcontentsline{toc}{subsection}{فصل سوم: اختصاصی تیم تحقیق‌وتوسعه (\lr{R\&D})}
\begin{ScoreBox}
\textbf{\large \textcolor{primary}{\faFlask\ جریان‌کار تیم‌های تحقیق‌وتوسعه}} \\
تیم‌های تحقیقاتی \textbf{نیازی به نصب نرم‌افزار یا کار با ترمینال و \lr{Git} ندارند.} شما نگارش پایان‌نامه‌ها، گزارش‌های اکوسیستم و مستندات آکادمیک خود را به صورت زنده روی پلتفرم ابری ما انجام می‌دهید.
\end{ScoreBox}
\subsection*{آموزش قدم‌به‌قدم ایجاد گزارش (ویژه اعضای غیرفنی)}
اگر با برنامه‌نویسی آشنا نیستید، کافیست دقیقاً این مراحل را دنبال کنید:
\begin{itemize}
\item \textbf{مرحله اول (دانلود قالب):} مرورگر خود را باز کنید و به آدرس \lr{\url{https://git.amirkabirpark.ir/bestmahdi2/Park__ReportTemplate/releases}} بروید. از قسمت بالای صفحه، روی تب \textbf{\lr{Releases}} کلیک کنید و فایل فشرده‌ای که نامی شبیه به \lr{Overleaf\_Park\_\_ReportTemplate-v2.0.6.zip} دارد را دانلود کنید.
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\textwidth]{releases.png}
\caption{صفحه مخزن گیت پارک، که بخش \lr{Releases} برای دانلود قالب در بالای آن مشخص شده است.}
\label{fig:gitea_releases}
\end{figure}
\item \textbf{مرحله دوم (ایجاد پروژه ابری):} وارد سایت \lr{https://latex.amirkabirpark.ir} شوید و لاگین کنید. در بالا سمت چپ، روی دکمه سبز رنگ \textbf{\lr{New Project}} و سپس \textbf{\lr{Upload Project}} کلیک کنید. فایل زیپی که در مرحله قبل دانلود کردید را اینجا رها کنید.
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\textwidth]{upload.png}
\caption{اسکرین‌شات از داشبورد پلتفرم ابری که دکمه‌های \lr{New Project} و \lr{Upload Project} در آن مشخص شده‌اند.}
\label{fig:new_upload_project}
\end{figure}
\item \textbf{مرحله سوم (تغییر نام و اشتراک‌گذاری):} پس از باز شدن پروژه، حتماً در همان ابتدا نام پروژه را تغییر دهید. سپس روی دکمه \textbf{\lr{Share}} کلیک کرده و ایمیل \lr{alibad979@gmail.com} را به پروژه اضافه کنید تا ادمین همواره به مستندات شما دسترسی داشته باشد.
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\textwidth]{share.png}
\caption{اسکرین‌شات از منوی \lr{Share} و نحوه افزودن ایمیل ادمین.}
\label{fig:share_project}
\end{figure}
\item \textbf{مرحله چهارم (مهم‌ترین تنظیم):} مسیر \lr{File > Settings > compiler > compiler} را طی کرده و حتماً گزینه \textbf{\lr{XeLaTeX}} را انتخاب کنید تا فونت‌های فارسی (مثل \lr{BNazanin}) به درستی نمایش داده شوند.
\item \textbf{مرحله پنجم (شروع نوشتن و رفع خطا):} از منوی فایل‌ها در سمت چپ، پوشه \lr{Content} را باز کرده و روی فایل \lr{01\_project\_content.tex} کلیک کنید. حالا می‌توانید متن خود را در محیط ویرایشگر تایپ کنید. برای دیدن خروجی نهایی، دکمه سبز رنگ \textbf{\lr{Recompile}} را بزنید.
\\ \textcolor{primary}{\faInfoCircle\ \textbf{نکته مهم:}} \textbf{اگر در حین کار با خطای عجیبی مواجه شدید، در اکثر مواقع این مشکل با کلیک روی دکمه قرمز رنگ \lr{Clear cached files} در پایین و سمت راست صفحه برطرف می‌شود.}
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\textwidth]{clear.png}
\caption{محل قرارگیری دکمه قرمز رنگ \lr{Clear cached files} در منوی لاگ‌های کامپایل.}
\label{fig:clear_cache}
\end{figure}
\end{itemize}
% ==========================================
% Chapter 4: Meeting Minutes
% ==========================================
\newpage
\section*{فصل چهارم: راهنمای تنظیم صورتجلسات (ویژه مدیران تیم‌ها)}
\phantomsection
\addcontentsline{toc}{subsection}{فصل چهارم: راهنمای تنظیم صورتجلسات (ویژه مدیران تیم‌ها)}
این فصل صرفاً جهت استفاده مدیران و راهبران تیم‌ها (نظیر دبیران جلسات دستیاران نوآوری) برای تنظیم صورتجلسات رسمی تدوین شده است.
\subsection*{۱. تفاوت‌های کلیدی ساختار صورتجلسه}
برای ساخت صورتجلسه، شما \textbf{نباید} فایل \lr{main.tex} را کامپایل کنید. سند اصلی صورتجلسات فایل \lr{minutes\_main.tex} است. در پلتفرم ابری روی این فایل کلیک کرده و سپس \lr{Recompile} نمایید.
\subsection*{۲. متغیرهای پیکربندی صورتجلسه (\lr{00\_minutes\_config.tex})}
تنظیمات جلسه را در این فایل مدیریت کنید. تمامی متغیرهای زیر باید بر اساس اطلاعات هر جلسه به‌روزرسانی شوند:
\vspace{0.2cm}
\textbf{الف) اطلاعات پایه و زمان‌بندی:}
\begin{itemize}
\item \lr{\textbackslash MinutesDate}: تاریخ برگزاری جلسه. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesDate\}\{\rl{۱۴۰۵/۳/۱۳}\}}}
\item \lr{\textbackslash MinutesStart} و \lr{\textbackslash MinutesEnd}: زمان شروع و پایان جلسه. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesStart\}\{\rl{۱۰:۳۰}\}}}
\item \lr{\textbackslash MinutesNumber} و \lr{\textbackslash MinutesRevision}: شماره جلسه در سال جاری و شماره ویرایش فرم. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesNumber\}\{1\}}}
\item \lr{\textbackslash MinutesAttachment}: وضعیت داشتن پیوست (مثل فایل‌های ارائه یا گزارش). \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesAttachment\}\{\rl{دارد}\}}}
\end{itemize}
\textbf{ب) ارکان جلسه و حاضرین (سیستم هوشمند):}
سیستم به صورت خودکار لیست افراد را بر اساس حروف الفبا مرتب کرده و پیشوندهای اضافه (مثل دکتر، مهندس، خانم) را پاک می‌کند. اسامی را \textbf{صرفاً با کاراکتر نقطه‌ویرگول (؛)} جدا کنید.
\begin{itemize}
\item \lr{\textbackslash MinutesChair} و \lr{\textbackslash MinutesSecretary}: نام رئیس و دبیر جلسه. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesSecretary\}\{\rl{مهندس علی بدیعی}\}}}
\item \lr{\textbackslash MinutesExtraMen} و \lr{\textbackslash MinutesExtraWomen}: تخصیص رئیس و دبیر به لیست حاضرین (برای جلوگیری از تایپ مجدد نام‌ها). \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesExtraMen\}\{\textbackslash MinutesChair \rl{؛} \textbackslash MinutesSecretary\}}}
\item \lr{\textbackslash MinutesPresentMen} و \lr{\textbackslash MinutesPresentWomen}: لیست آقایان و خانم‌های حاضر در جلسه. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesPresentMen\}\{\rl{متین توکلی؛ رضا اسفندیاری؛ سام قربانی}\}}}
\item \lr{\textbackslash MinutesAbsentMen} و \lr{\textbackslash MinutesAbsentWomen}: لیست غایبین جلسه. (در صورت نبود غایب حتماً از کاراکتر \lr{-} استفاده کنید). \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesAbsentWomen\}\{-\}}}
\end{itemize}
\textbf{ج) دستور جلسه و تنظیمات تیم:}
\begin{itemize}
\item \lr{\textbackslash MinutesAgenda}: لیست موضوعات و دستور جلسه. (برای رفتن به خط بعد حتماً از \lr{\textbackslash\textbackslash} استفاده کنید). \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesAgenda\}\{\rl{۱. بررسی امور کسب‌وکار \lr{\textbackslash\textbackslash} ۲. توسعه وب‌سایت}\}}}
\item \lr{\textbackslash MinutesTeam}: تعیین تیم برگزارکننده جلسه. این متغیر به صورت هوشمند عنوان جلسه و آیکون مربوطه را تنظیم می‌کند. مقادیر مجاز شامل \lr{Club} (باشگاه)، \lr{TT} (تیم فنی)، \lr{RD} (تحقیق‌وتوسعه) و \lr{TT-RD} (جلسه مشترک) می‌باشند. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesTeam\}\{TT-RD\}}}
\item \lr{\textbackslash MinutesTeamLogo}: نام فایل لوگوی اختصاصی تیم که باید در پوشه \lr{Assets/Image} قرار داشته باشد. \\ \textcolor{gray}{\textbf{مثال:} \lr{\textbackslash newcommand\{\textbackslash MinutesTeamLogo\}\{team\_logo.png\}}}
\end{itemize}
\subsection*{۳. نحوه نگارش محتوای مصوبات}
وارد فایل \lr{Minutes\_Content/01\_minutes\_content.tex} شوید. برای ثبت هر مصوبه یا وظیفه محول شده، از ماکروی \lr{\textbackslash DiscussionItem} استفاده کنید که مستقیماً جدول پیگیری را در زیر آن رسم می‌کند.
\textbf{کد ورودی:}
\begin{latin}
\begin{lstlisting}[language=TeX, escapeinside={(*}{*)}]
\DiscussionItem{(*\rl{استقرار پلتفرم اجتماعی}*)}
{(*\rl{نسخه جدید باید از طریق کانتینرهای داکر روی سرور مجازی اصلی مستقر شود تا دسترسی تیم فنی فراهم گردد.}*)}
{(*\rl{علی بدیعی}*)}
{(*\rl{۱۴۰۵/۰۳/۲۰}*)}
\end{lstlisting}
\end{latin}
\textbf{نتیجه ظاهری:} یک بلوک اختصاصی که عنوان با یک آیکون \faAngleLeft\ در کنار آن به رنگ اصلی برجسته شده، سپس شرح وظیفه با تو‌رفتگی چاپ می‌شود، و در زیر آن جدولی مرتب شامل "مسئول اقدام" و "مهلت" برای پیگیری آسان در جلسات آینده قرار می‌گیرد.
\DiscussionItem{استقرار پلتفرم اجتماعی}
{نسخه جدید باید از طریق کانتینرهای داکر روی سرور مجازی اصلی مستقر شود تا دسترسی تیم فنی فراهم گردد.}
{علی بدیعی}
{۱۴۰۵/۰۳/۲۰}