fix(admin): dashboard data points
This commit is contained in:
parent
a2ca82aacd
commit
e69d3d0db3
2 changed files with 33 additions and 21 deletions
|
|
@ -189,7 +189,7 @@ async def get_all_admin_data(
|
|||
query = query.order_by(sort_column.asc())
|
||||
else:
|
||||
# DEFAULT: Show oldest first when no order is specified
|
||||
query = query.order_by(Submission.created_at.asc())
|
||||
query = query.order_by(Submission.created_at.desc())
|
||||
|
||||
# 3. PAGINATION
|
||||
submissions = query.offset(start).limit(length).all()
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@
|
|||
</div>
|
||||
|
||||
<!-- Column 3: Processing Submissions -->
|
||||
<div class="col-md-3">
|
||||
<div class="col-md-3" style="display: none;">
|
||||
<div class="alert alert-light mb-0 h-100 d-flex align-items-center">
|
||||
<span>
|
||||
Video Queue:
|
||||
|
|
@ -197,9 +197,10 @@
|
|||
return isRelative ? MEDIA_BASE_URL + path : path;
|
||||
}
|
||||
|
||||
// Fetch and display Sonauto credits
|
||||
// Fetch and update system status metrics
|
||||
function loadCredits() {
|
||||
fetch('/back/api/admin/queue-status')
|
||||
const STATUS_ENDPOINT = `/back/api/admin/queue-status`;
|
||||
fetch(STATUS_ENDPOINT)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
// Update all three metrics from the API
|
||||
|
|
@ -215,6 +216,8 @@
|
|||
});
|
||||
}
|
||||
loadCredits();
|
||||
// Poll every 2 minutes
|
||||
setInterval(loadCredits, (2*60*1000));
|
||||
|
||||
// Initialize DataTable
|
||||
const table = $('#usersTable').DataTable({
|
||||
|
|
@ -268,6 +271,7 @@
|
|||
{
|
||||
data: null,
|
||||
title: 'Actions',
|
||||
name: 'actions',
|
||||
defaultContent: '',
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
|
|
@ -277,52 +281,60 @@
|
|||
</button>`;
|
||||
}
|
||||
},
|
||||
{ data: 'session_id', title: 'Session', defaultContent: 'N/A' },
|
||||
{ data: 'session_id', title: 'Session', name: 'session_id', defaultContent: 'N/A', visible: false },
|
||||
{
|
||||
data: 'created_at',
|
||||
title: 'Created',
|
||||
ordering: true,
|
||||
name: 'created_at',
|
||||
defaultContent: 'N/A',
|
||||
visible: true,
|
||||
render: (data) => {
|
||||
if (!data) return 'N/A';
|
||||
return luxon.DateTime.fromISO(data).toFormat('yyyy-MM-dd HH:mm:ss') + ' UTC';
|
||||
}
|
||||
},
|
||||
{ data: 'cookie_id', title: 'Cookie ID', defaultContent: 'N/A' },
|
||||
{ data: 'owner_name', title: 'Owner', defaultContent: 'N/A' },
|
||||
{ data: 'pet_name', title: 'Pet Name', defaultContent: 'N/A' },
|
||||
{ data: 'cookie_id', title: 'Cookie ID', name: 'cookie_id', defaultContent: 'N/A', visible: false },
|
||||
{ data: 'owner_name', title: 'Owner', name: 'owner_name', defaultContent: 'N/A' },
|
||||
{ data: 'pet_name', title: 'Pet Name', name: 'pet_name', defaultContent: 'N/A' },
|
||||
{
|
||||
data: 'photo_path',
|
||||
title: 'Photo',
|
||||
name: 'photo_path',
|
||||
defaultContent: '',
|
||||
visible: true,
|
||||
render: (data) => {
|
||||
const imgPath = fixStoragePath(data) || "https://placehold.co/500x500/fbba0e/e11d48/jpg?text=No\nImage";
|
||||
return `<img src="${imgPath}" class="user-photo img-preview" style="cursor:pointer">`;
|
||||
}
|
||||
},
|
||||
{ data: 'pet_type', title: 'Type', defaultContent: 'N/A' },
|
||||
{ data: 'music_vibe', title: 'Vibe', defaultContent: 'N/A' },
|
||||
{ data: 'retry_count', title: 'Retries', defaultContent: 'N/A' },
|
||||
{ data: 'sent_to_LLM', title: 'Sent to LLM', defaultContent: 'N/A' },
|
||||
{ data: 'LLM_task_id', title: 'Task ID', defaultContent: 'N/A' },
|
||||
{ data: 'received_from_LLM', title: 'LLM Recv', defaultContent: 'N/A' },
|
||||
{ data: 'pet_type', name: 'pet_type', title: 'Type', defaultContent: 'N/A' },
|
||||
{ data: 'music_vibe', name: 'music_vibe', title: 'Vibe', defaultContent: 'N/A' },
|
||||
{ data: 'retry_count', name: 'retry_count', title: 'Retries', defaultContent: 'N/A', visible: false },
|
||||
{ data: 'sent_to_LLM', name: 'sent_to_LLM', title: 'Sent to LLM', defaultContent: 'N/A' },
|
||||
{ data: 'LLM_task_id', name: 'LLM_task_id', title: 'Task ID', defaultContent: 'N/A', visible: false },
|
||||
{ data: 'received_from_LLM', name: 'received_from_LLM', title: 'LLM Recv', defaultContent: 'N/A', visible: false },
|
||||
{
|
||||
data: 'LLM_response',
|
||||
title: 'LLM Response',
|
||||
name: 'LLM_response',
|
||||
defaultContent: 'N/A',
|
||||
visible: false,
|
||||
render: (data) => data ? (data.substring(0, 30) + '...') : 'Pending'
|
||||
},
|
||||
{ data: 'LLM_full_response', defaultContent: 'N/A', visible: false },
|
||||
{ data: 'generated_song_path', title: 'Song', defaultContent: '', render: d => d ? 'Yes' : 'No' },
|
||||
{ data: 'LLM_status', title: 'LLM Status', defaultContent: 'N/A' },
|
||||
{ data: 'lyrics', title: 'Lyrics', defaultContent: '', visible: false },
|
||||
{ data: 'video_creation_start', title: 'Vid Start', defaultContent: '', visible: false },
|
||||
{ data: 'video_creation_end', title: 'Vid End', defaultContent: '', visible: false },
|
||||
{ data: 'generated_video_path', title: 'VideoGen', defaultContent: '', render: d => d ? 'Yes' : 'No' },
|
||||
{ data: 'LLM_full_response', name: 'LLM_full_response', defaultContent: 'N/A', visible: false },
|
||||
{ data: 'generated_song_path', name: 'generated_song_path', title: 'Song', defaultContent: '', render: d => d ? 'Yes' : 'No' },
|
||||
{ data: 'LLM_status', name: 'LLM_status', title: 'LLM Status', defaultContent: 'N/A', visible: true },
|
||||
{ data: 'lyrics', name: 'lyrics', title: 'Lyrics', defaultContent: '', visible: false },
|
||||
{ data: 'video_creation_start', name: 'video_creation_start', title: 'Vid Start', defaultContent: '', visible: false },
|
||||
{ data: 'video_creation_end', name: 'video_creation_end', title: 'Vid End', defaultContent: '', visible: false },
|
||||
{ data: 'generated_video_path', name: 'generated_video_path', title: 'VideoGen', defaultContent: '', render: d => d ? 'Yes' : 'No', visible: false },
|
||||
{
|
||||
data: 'entry_status',
|
||||
title: 'Status',
|
||||
name: 'entry_status',
|
||||
defaultContent: '',
|
||||
visible: true ,
|
||||
render: (data) => {
|
||||
return `<span>${data}</span>`;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue