Page /audit: liste les audits en cours avec bouton Reprendre
This commit is contained in:
parent
3c4244597c
commit
2a10ec55ab
@ -76,11 +76,21 @@ async def audit_page(request: Request, db=Depends(get_db),
|
|||||||
domains = db.execute(text("SELECT code, name FROM domains ORDER BY display_order")).fetchall()
|
domains = db.execute(text("SELECT code, name FROM domains ORDER BY display_order")).fetchall()
|
||||||
zones = db.execute(text("SELECT DISTINCT name FROM zones ORDER BY name")).fetchall()
|
zones = db.execute(text("SELECT DISTINCT name FROM zones ORDER BY name")).fetchall()
|
||||||
|
|
||||||
|
# Jobs audit en cours (RAM)
|
||||||
|
from ..services.realtime_audit_service import _audit_jobs
|
||||||
|
active_jobs = [
|
||||||
|
{"id": j["id"], "total": j["total"], "done": j["done"],
|
||||||
|
"parallel": j.get("parallel", "?"), "started_at": j.get("started_at", 0)}
|
||||||
|
for j in _audit_jobs.values() if not j.get("finished")
|
||||||
|
]
|
||||||
|
active_jobs.sort(key=lambda x: -x["started_at"])
|
||||||
|
|
||||||
ctx = base_context(request, db, user)
|
ctx = base_context(request, db, user)
|
||||||
ctx.update({
|
ctx.update({
|
||||||
"app_name": APP_NAME, "entries": entries, "stats": stats,
|
"app_name": APP_NAME, "entries": entries, "stats": stats,
|
||||||
"filter": filter, "search": search,
|
"filter": filter, "search": search,
|
||||||
"last_audit": last_audit, "domains": domains, "zones": zones,
|
"last_audit": last_audit, "domains": domains, "zones": zones,
|
||||||
|
"active_jobs": active_jobs,
|
||||||
})
|
})
|
||||||
return templates.TemplateResponse("audit.html", ctx)
|
return templates.TemplateResponse("audit.html", ctx)
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{% if active_jobs %}
|
||||||
|
<div class="card p-3 mb-4" style="border:1px solid #22c55e">
|
||||||
|
<div class="text-sm font-bold text-cyber-green mb-2">⏳ Audits en cours</div>
|
||||||
|
{% for j in active_jobs %}
|
||||||
|
<div class="flex justify-between items-center py-1">
|
||||||
|
<span class="text-xs font-mono text-gray-400">{{ j.id }}</span>
|
||||||
|
<span class="text-xs">{{ j.done }}/{{ j.total }} — {{ j.parallel }} en parallèle</span>
|
||||||
|
<a href="/audit/realtime/progress/{{ j.id }}" class="btn-sm bg-cyber-accent text-black">Reprendre</a>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Lancer audit global -->
|
<!-- Lancer audit global -->
|
||||||
{% set p = perms if perms is defined else request.state.perms %}
|
{% set p = perms if perms is defined else request.state.perms %}
|
||||||
{% if p.audit in ('edit', 'admin') %}
|
{% if p.audit in ('edit', 'admin') %}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user