Initial commit: aplicatie de cantarire si etichetare
Aplicatie Flask + SQLite pentru productie alimentara: cantarirea componentelor unui produs finit si tiparirea etichetei prin QZ Tray. - produse finite (retete) formate din componente cantarite - designer vizual de etichete (mm/px, zona sigura, campuri variabile, cod QR cu continut din mai multe bucati) - legare produs finit -> sablon de eticheta - navigare pe doua taburi: Cantarire / Setari - administrare: componente, produse finite, sabloane, campuri, istoric - backup, resetare baza de date, checklist de pregatire, /healthz - CLI de administrare si serviciu systemd pentru productie - vendor/syncpulse-scale-bridge (GPL-3.0-or-later) pentru citirea cantarului
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
[Unit]
|
||||
Description=Cantarire si etichetare (Flask/waitress)
|
||||
Documentation=file:///opt/cantarire-etichetare/README.md
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=cantarire
|
||||
Group=cantarire
|
||||
# Necesar pentru accesul la adaptorul USB-serial al cantarului (daca e cazul).
|
||||
SupplementaryGroups=dialout
|
||||
WorkingDirectory=/opt/cantarire-etichetare
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
EnvironmentFile=-/etc/cantarire.env
|
||||
ExecStart=/opt/cantarire-etichetare/.venv/bin/python run.py --production --port 5000
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
TimeoutStopSec=15
|
||||
|
||||
# Scriere doar in folderul de date si in /tmp.
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=full
|
||||
ProtectHome=true
|
||||
ReadWritePaths=/var/lib/cantarire
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,34 @@
|
||||
@echo off
|
||||
REM Pornire pe Windows (statia cu cantarul si imprimanta termica).
|
||||
REM Ruleaza o singura data: python -m venv .venv
|
||||
REM .venv\Scripts\pip install -r requirements.txt
|
||||
|
||||
setlocal
|
||||
cd /d "%~dp0.."
|
||||
|
||||
if not exist ".venv\Scripts\python.exe" (
|
||||
echo [!] Nu exista .venv. Ruleaza intai:
|
||||
echo python -m venv .venv
|
||||
echo .venv\Scripts\pip install -r requirements.txt
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM Cheia de sesiune: genereaz-o o data si pastreaz-o intre reporniri.
|
||||
if "%CANTARIRE_SECRET_KEY%"=="" (
|
||||
if exist "instance\secret.key" (
|
||||
set /p CANTARIRE_SECRET_KEY=<instance\secret.key
|
||||
) else (
|
||||
for /f "delims=" %%k in ('.venv\Scripts\python.exe -c "import secrets;print(secrets.token_urlsafe(48))"') do set "CANTARIRE_SECRET_KEY=%%k"
|
||||
if not exist "instance" mkdir "instance"
|
||||
> instance\secret.key echo %CANTARIRE_SECRET_KEY%
|
||||
)
|
||||
)
|
||||
|
||||
echo.
|
||||
echo Cantarire ^& etichetare - http://127.0.0.1:5000/
|
||||
echo Inchide fereastra pentru a opri serverul.
|
||||
echo.
|
||||
|
||||
.venv\Scripts\python.exe run.py --production --host 127.0.0.1 --port 5000
|
||||
pause
|
||||
Reference in New Issue
Block a user