feat: multi-plate grouping, compensation badges, pieces_override on slots
Deploy via Portainer / deploy (push) Successful in 0s
Deploy via Portainer / deploy (push) Successful in 0s
This commit is contained in:
@@ -268,6 +268,7 @@ def init_db():
|
||||
'ALTER TABLE jobs ADD COLUMN plate_name TEXT DEFAULT ""',
|
||||
'ALTER TABLE printers ADD COLUMN ha_entity_prefix TEXT DEFAULT ""',
|
||||
'ALTER TABLE print_slots ADD COLUMN pieces_ignored INTEGER DEFAULT 0',
|
||||
'ALTER TABLE print_slots ADD COLUMN pieces_override INTEGER DEFAULT NULL',
|
||||
]
|
||||
for sql in migrations:
|
||||
try:
|
||||
@@ -1631,6 +1632,15 @@ def api_slots():
|
||||
SELECT ps.id, ps.job_id, ps.printer_id, ps.planned_start, ps.planned_end,
|
||||
ps.status, ps.failure_note,
|
||||
COALESCE(ps.pieces_ignored, 0) as pieces_ignored,
|
||||
ps.pieces_override,
|
||||
COALESCE(ps.pieces_override, j.pieces_per_plate) as effective_pieces,
|
||||
(SELECT COUNT(*) FROM print_slots ps2
|
||||
WHERE ps2.job_id = ps.job_id
|
||||
AND ps2.planned_start <= ps.planned_start
|
||||
AND ps2.id <= ps.id) as plate_num,
|
||||
(SELECT COUNT(*) FROM print_slots WHERE job_id = ps.job_id) as total_plates,
|
||||
(SELECT COALESCE(SUM(COALESCE(pieces_ignored,0)), 0) FROM print_slots
|
||||
WHERE job_id = ps.job_id) as job_total_ignored,
|
||||
j.name as job_name, j.print_time_s, j.final_price,
|
||||
j.pieces_per_plate, j.order_qty, j.weight_g,
|
||||
j.plate_name,
|
||||
@@ -1647,6 +1657,21 @@ def api_slots():
|
||||
conn.close()
|
||||
return jsonify([dict(s) for s in slots])
|
||||
|
||||
@app.route('/api/slots/<int:id>/pieces_override', methods=['POST'])
|
||||
@login_required
|
||||
def api_slot_pieces_override(id):
|
||||
d = request.get_json(silent=True) or {}
|
||||
pieces = d.get('pieces')
|
||||
conn = get_db()
|
||||
if pieces is None:
|
||||
conn.execute('UPDATE print_slots SET pieces_override=NULL WHERE id=?', (id,))
|
||||
else:
|
||||
conn.execute('UPDATE print_slots SET pieces_override=? WHERE id=?', (max(1, int(pieces)), id))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
return jsonify({'ok': True})
|
||||
|
||||
|
||||
def _check_capacity(conn, start_dt, end_dt, max_printers, exclude_id=None):
|
||||
"""Vérifie si ajouter ce créneau dépasserait max_printers simultanés.
|
||||
Retourne (True, peak_count) si limite atteinte, (False, peak_count) sinon.
|
||||
|
||||
Reference in New Issue
Block a user