refactor(frontend): dedupliziere JS-Code und fixe Bugs
- fix: _oldestLoadedMessageId → _oldestLoadedSortKey (chat.js, chat-page.js) - move: formatTimestamp nach ui-helpers.js (war _formatTimestamp in msg-actions.js) - move: _isReviewMessage nach ui-helpers.js (war in history.js) - add: _getSubAgentMeta + _createSubAgentHeader in ui-helpers.js - refactor: stream-ui.js + history.js nutzen _createSubAgentHeader - refactor: flushText() Hilfsfunktion in _renderReviewGroup (history.js) - refactor: shared-page.js nutzt _mergeConsecutiveAssistantTexts statt eigener Kopie - refactor: _initCardMenu + _onCardMenuAction Helper in dashboard.js -53 Zeilen netto
This commit is contained in:
1 parent
57560cbbea
commit
33934b2c4a
9 files changed
+114
-167
No files matched your search
@@ -154,6 +154,19 @@ function formatDate(iso) {
|
||||
});
|
||||
}
|
||||
|
||||
function formatTimestamp(isoString) {
|
||||
if (!isoString) return '';
|
||||
var d = new Date(isoString);
|
||||
if (isNaN(d.getTime())) return '';
|
||||
var dd = String(d.getDate()).padStart(2, '0');
|
||||
var mm = String(d.getMonth() + 1).padStart(2, '0');
|
||||
var yyyy = d.getFullYear();
|
||||
var hh = String(d.getHours()).padStart(2, '0');
|
||||
var min = String(d.getMinutes()).padStart(2, '0');
|
||||
var ss = String(d.getSeconds()).padStart(2, '0');
|
||||
return dd + '.' + mm + '.' + yyyy + ' ' + hh + ':' + min + ':' + ss;
|
||||
}
|
||||
|
||||
// ── Meta Bar ──
|
||||
|
||||
function setMeta(text) {
|
||||
@@ -205,6 +218,40 @@ function removeArchiveLoadButton() {
|
||||
btns.forEach(b => b.remove());
|
||||
}
|
||||
|
||||
// ── Review/Sub-Agent Helpers ──
|
||||
|
||||
function _isReviewMessage(content) {
|
||||
return content && (content.startsWith('[Review:') || content.startsWith('[Review-Feedback') || content.startsWith('[Finalizer:') || content.startsWith('[Preparer:'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns { icon, defaultName } for a sub-agent type.
|
||||
* @param {string} agentType - 'preparer', 'finalizer', or 'review'
|
||||
*/
|
||||
function _getSubAgentMeta(agentType) {
|
||||
if (agentType === 'preparer') return { icon: 'fa-filter', defaultName: 'Vorbereiter-Agent' };
|
||||
if (agentType === 'finalizer') return { icon: 'fa-flag-checkered', defaultName: 'Finalizer-Agent' };
|
||||
return { icon: 'fa-check-circle-o', defaultName: 'Review-Agent' };
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a review/sub-agent header element.
|
||||
* @param {string} agentType - 'preparer', 'finalizer', or 'review'
|
||||
* @param {string} agentName - Display name of the agent
|
||||
* @param {object} [extra] - Optional: { round, maxRounds } for review
|
||||
*/
|
||||
function _createSubAgentHeader(agentType, agentName, extra) {
|
||||
var meta = _getSubAgentMeta(agentType);
|
||||
var header = document.createElement('div');
|
||||
header.className = 'review-header';
|
||||
var html = '<i class="fa ' + meta.icon + '"></i> <strong>' + esc(agentName || meta.defaultName) + '</strong>';
|
||||
if (agentType === 'review' && extra && extra.round) {
|
||||
html += ' <span class="review-round">Runde ' + extra.round + '/' + extra.maxRounds + '</span>';
|
||||
}
|
||||
header.innerHTML = html;
|
||||
return header;
|
||||
}
|
||||
|
||||
// ── Streamed Elements ──
|
||||
|
||||
function removeStreamedElements() {
|
||||
|
||||
Reference in new issue
Block a user