Добавить догрузку карточек автопрогонов
This commit is contained in:
parent
0506def909
commit
d29d885399
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -4,8 +4,8 @@
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>NDC AI Normalizer Playground</title>
|
<title>NDC AI Normalizer Playground</title>
|
||||||
<script type="module" crossorigin src="/assets/index-9w9i5XPJ.js"></script>
|
<script type="module" crossorigin src="/assets/index-BdTHVNKv.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-DW_SonhM.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-D-Jp8Dx0.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,8 @@ const LIVE_RUN_ID_PREFIX = "__live__:";
|
||||||
|
|
||||||
const AUTORUNS_UI_CONFIG_KEY = "ndc_autoruns_ui_config_v1";
|
const AUTORUNS_UI_CONFIG_KEY = "ndc_autoruns_ui_config_v1";
|
||||||
const AUTORUNS_SAVE_EVENT = "ndc-autoruns-save";
|
const AUTORUNS_SAVE_EVENT = "ndc-autoruns-save";
|
||||||
|
const AUTOGEN_HISTORY_FETCH_LIMIT = 180;
|
||||||
|
const AUTOGEN_HISTORY_CARD_BATCH_SIZE = 30;
|
||||||
const ASSISTANT_STAGES = ["Анализ запроса", "Получение данных", "Подготовка ответа"];
|
const ASSISTANT_STAGES = ["Анализ запроса", "Получение данных", "Подготовка ответа"];
|
||||||
|
|
||||||
function buildAssistantLiveFollowupMessage(inputValue: string, selectedChip: AssistantSelectionChip | null): string {
|
function buildAssistantLiveFollowupMessage(inputValue: string, selectedChip: AssistantSelectionChip | null): string {
|
||||||
|
|
@ -710,6 +712,7 @@ export function AutoRunsHistoryPanel({
|
||||||
const [autogenPersonalities, setAutogenPersonalities] = useState<AutoGenPersonalityDefinition[]>(AUTOGEN_PERSONALITIES);
|
const [autogenPersonalities, setAutogenPersonalities] = useState<AutoGenPersonalityDefinition[]>(AUTOGEN_PERSONALITIES);
|
||||||
const [autoGenSettings, setAutoGenSettings] = useState<AutoGenSettingsState>(DEFAULT_AUTOGEN_SETTINGS);
|
const [autoGenSettings, setAutoGenSettings] = useState<AutoGenSettingsState>(DEFAULT_AUTOGEN_SETTINGS);
|
||||||
const [autoGenHistory, setAutoGenHistory] = useState<AutoGenHistoryRecord[]>([]);
|
const [autoGenHistory, setAutoGenHistory] = useState<AutoGenHistoryRecord[]>([]);
|
||||||
|
const [autogenHistoryVisibleLimit, setAutogenHistoryVisibleLimit] = useState(AUTOGEN_HISTORY_CARD_BATCH_SIZE);
|
||||||
const [selectedAutogenGenerationId, setSelectedAutogenGenerationId] = useState("");
|
const [selectedAutogenGenerationId, setSelectedAutogenGenerationId] = useState("");
|
||||||
const [expandedSavedSessionGenerationId, setExpandedSavedSessionGenerationId] = useState("");
|
const [expandedSavedSessionGenerationId, setExpandedSavedSessionGenerationId] = useState("");
|
||||||
const [editableGeneratedQuestions, setEditableGeneratedQuestions] = useState<string[]>([]);
|
const [editableGeneratedQuestions, setEditableGeneratedQuestions] = useState<string[]>([]);
|
||||||
|
|
@ -806,6 +809,11 @@ export function AutoRunsHistoryPanel({
|
||||||
() => autoGenHistory.filter((item) => item.mode === autoGenSettings.mode),
|
() => autoGenHistory.filter((item) => item.mode === autoGenSettings.mode),
|
||||||
[autoGenHistory, autoGenSettings.mode]
|
[autoGenHistory, autoGenSettings.mode]
|
||||||
);
|
);
|
||||||
|
const renderedAutoGenHistory = useMemo(
|
||||||
|
() => visibleAutoGenHistory.slice(0, autogenHistoryVisibleLimit),
|
||||||
|
[autogenHistoryVisibleLimit, visibleAutoGenHistory]
|
||||||
|
);
|
||||||
|
const hiddenAutoGenHistoryCount = Math.max(0, visibleAutoGenHistory.length - renderedAutoGenHistory.length);
|
||||||
const selectedAutogenGeneration = useMemo(
|
const selectedAutogenGeneration = useMemo(
|
||||||
() => visibleAutoGenHistory.find((item) => item.generation_id === selectedAutogenGenerationId) ?? visibleAutoGenHistory[0] ?? null,
|
() => visibleAutoGenHistory.find((item) => item.generation_id === selectedAutogenGenerationId) ?? visibleAutoGenHistory[0] ?? null,
|
||||||
[selectedAutogenGenerationId, visibleAutoGenHistory]
|
[selectedAutogenGenerationId, visibleAutoGenHistory]
|
||||||
|
|
@ -1291,8 +1299,9 @@ export function AutoRunsHistoryPanel({
|
||||||
const loadAutoGenHistory = useCallback(async () => {
|
const loadAutoGenHistory = useCallback(async () => {
|
||||||
setAutogenHistoryBusy(true);
|
setAutogenHistoryBusy(true);
|
||||||
try {
|
try {
|
||||||
const payload = await apiClient.loadAutoRunAutogenHistory({ limit: 180 });
|
const payload = await apiClient.loadAutoRunAutogenHistory({ limit: AUTOGEN_HISTORY_FETCH_LIMIT });
|
||||||
setAutoGenHistory(payload.items);
|
setAutoGenHistory(payload.items);
|
||||||
|
setAutogenHistoryVisibleLimit(AUTOGEN_HISTORY_CARD_BATCH_SIZE);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
log(`Autogen history load error: ${error instanceof Error ? error.message : String(error)}`);
|
log(`Autogen history load error: ${error instanceof Error ? error.message : String(error)}`);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
@ -2310,6 +2319,17 @@ export function AutoRunsHistoryPanel({
|
||||||
});
|
});
|
||||||
}, [visibleAutoGenHistory]);
|
}, [visibleAutoGenHistory]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setAutogenHistoryVisibleLimit(AUTOGEN_HISTORY_CARD_BATCH_SIZE);
|
||||||
|
}, [autoGenSettings.mode]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!selectedAutogenGenerationId) return;
|
||||||
|
const selectedIndex = visibleAutoGenHistory.findIndex((item) => item.generation_id === selectedAutogenGenerationId);
|
||||||
|
if (selectedIndex < 0) return;
|
||||||
|
setAutogenHistoryVisibleLimit((prev) => Math.max(prev, Math.min(visibleAutoGenHistory.length, selectedIndex + 1)));
|
||||||
|
}, [selectedAutogenGenerationId, visibleAutoGenHistory]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!selectedAutogenGeneration) {
|
if (!selectedAutogenGeneration) {
|
||||||
setEditableGeneratedQuestions([]);
|
setEditableGeneratedQuestions([]);
|
||||||
|
|
@ -3094,7 +3114,7 @@ export function AutoRunsHistoryPanel({
|
||||||
{isSavedUserSessionsMode ? "Сохраненные пользовательские сессии пока пусты." : "История автогенераций пока пустая."}
|
{isSavedUserSessionsMode ? "Сохраненные пользовательские сессии пока пусты." : "История автогенераций пока пустая."}
|
||||||
</p>
|
</p>
|
||||||
) : null}
|
) : null}
|
||||||
{visibleAutoGenHistory.slice(0, 30).map((item) => {
|
{renderedAutoGenHistory.map((item) => {
|
||||||
const isRunningThisGeneration = autogenRunBusy && runningAutogenGenerationId === item.generation_id;
|
const isRunningThisGeneration = autogenRunBusy && runningAutogenGenerationId === item.generation_id;
|
||||||
const isAnotherGenerationRunning = autogenRunBusy && runningAutogenGenerationId !== item.generation_id;
|
const isAnotherGenerationRunning = autogenRunBusy && runningAutogenGenerationId !== item.generation_id;
|
||||||
return (
|
return (
|
||||||
|
|
@ -3344,6 +3364,19 @@ export function AutoRunsHistoryPanel({
|
||||||
</article>
|
</article>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
{hiddenAutoGenHistoryCount > 0 ? (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="autoruns-autogen-load-more-btn"
|
||||||
|
onClick={() =>
|
||||||
|
setAutogenHistoryVisibleLimit((prev) =>
|
||||||
|
Math.min(prev + AUTOGEN_HISTORY_CARD_BATCH_SIZE, visibleAutoGenHistory.length)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Показать еще {Math.min(AUTOGEN_HISTORY_CARD_BATCH_SIZE, hiddenAutoGenHistoryCount)} из {hiddenAutoGenHistoryCount}
|
||||||
|
</button>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1522,6 +1522,21 @@ button:disabled {
|
||||||
padding-right: 2px;
|
padding-right: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.autoruns-autogen-load-more-btn {
|
||||||
|
border: 1px solid rgba(var(--rgb-active), 0.32);
|
||||||
|
border-radius: 10px;
|
||||||
|
background: rgba(var(--rgb-active), 0.1);
|
||||||
|
color: rgb(var(--rgb-text-main));
|
||||||
|
padding: 8px 10px;
|
||||||
|
font-size: 0.78rem;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.autoruns-autogen-load-more-btn:hover {
|
||||||
|
background: rgba(var(--rgb-active), 0.18);
|
||||||
|
border-color: rgba(var(--rgb-active), 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
.autoruns-autogen-item {
|
.autoruns-autogen-item {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue