gui: deduplicate sessions from multi-agent index, fix field mapping
- Deduplicate session entries in refreshSessions and onEventReadyRead using QSet to skip duplicate session IDs from multi-agent index. - Fix field mapping: index format is name\tstate\tcwd\tbackend\tmodel\tagent - Added QSet include
This commit is contained in:
parent
5fc4ebe64e
commit
ef03cdc7f3
|
|
@ -1,6 +1,7 @@
|
|||
#include "ollie9pclient.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QSet>
|
||||
#include <QStandardPaths>
|
||||
#include <QDebug>
|
||||
|
||||
|
|
@ -89,16 +90,22 @@ void Ollie9pClient::refreshSessions()
|
|||
QString raw = QString::fromUtf8(out);
|
||||
|
||||
m_sessions.clear();
|
||||
QSet<QString> seen;
|
||||
if (!raw.isEmpty()) {
|
||||
for (const QString &line : raw.split('\n', Qt::SkipEmptyParts)) {
|
||||
QStringList parts = line.split('\t');
|
||||
// Skip lines where the first field (session name) is empty
|
||||
if (parts.isEmpty() || parts[0].isEmpty()) continue;
|
||||
QString sid = parts[0];
|
||||
if (seen.contains(sid)) continue; // already added (multi-agent)
|
||||
seen.insert(sid);
|
||||
QVariantMap session;
|
||||
session["id"] = parts[0];
|
||||
session["id"] = sid;
|
||||
session["state"] = parts.size() > 1 ? parts[1] : "";
|
||||
session["model"] = parts.size() > 2 ? parts[2] : "";
|
||||
session["agent"] = parts.size() > 3 ? parts[3] : "";
|
||||
session["cwd"] = parts.size() > 2 ? parts[2] : "";
|
||||
session["backend"] = parts.size() > 3 ? parts[3] : "";
|
||||
session["model"] = parts.size() > 4 ? parts[4] : "";
|
||||
session["agent"] = parts.size() > 5 ? parts[5] : "";
|
||||
m_sessions.append(session);
|
||||
}
|
||||
}
|
||||
|
|
@ -541,16 +548,22 @@ void Ollie9pClient::onEventReadyRead()
|
|||
QString raw = QString::fromUtf8(data);
|
||||
|
||||
m_sessions.clear();
|
||||
QSet<QString> seen;
|
||||
if (!raw.isEmpty()) {
|
||||
for (const QString &line : raw.split('\n', Qt::SkipEmptyParts)) {
|
||||
QStringList parts = line.split('\t');
|
||||
// Skip lines where the first field (session name) is empty
|
||||
if (parts.isEmpty() || parts[0].isEmpty()) continue;
|
||||
QString sid = parts[0];
|
||||
if (seen.contains(sid)) continue; // already added (multi-agent)
|
||||
seen.insert(sid);
|
||||
QVariantMap session;
|
||||
session["id"] = parts[0];
|
||||
session["id"] = sid;
|
||||
session["state"] = parts.size() > 1 ? parts[1] : "";
|
||||
session["model"] = parts.size() > 2 ? parts[2] : "";
|
||||
session["agent"] = parts.size() > 3 ? parts[3] : "";
|
||||
session["cwd"] = parts.size() > 2 ? parts[2] : "";
|
||||
session["backend"] = parts.size() > 3 ? parts[3] : "";
|
||||
session["model"] = parts.size() > 4 ? parts[4] : "";
|
||||
session["agent"] = parts.size() > 5 ? parts[5] : "";
|
||||
m_sessions.append(session);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Reference in New Issue