Improve narrative rules, update temperature defaults, fix session character loading

This commit is contained in:
Alexej Wolff
2026-05-04 00:59:56 +02:00
parent f52c86b049
commit 1f7d13e44c
3 changed files with 45 additions and 21 deletions
+5 -5
View File
@@ -77,7 +77,7 @@ export default function CreateStoryPage() {
plot: "",
firstMessage: "",
isNsfw: false,
temperature: 1.3, // Креативность ИИ
temperature: 0.9, // Креативность ИИ
narrativeRules: "", // Правила повествования для ИИ
// NPC персонажи мира
characters: [{ name: "", description: "", role: "Союзник" }] as Character[],
@@ -116,7 +116,7 @@ export default function CreateStoryPage() {
plot: story.plot || "",
firstMessage: story.firstMessage || "",
isNsfw: story.isNsfw || false,
temperature: story.temperature || 1.3,
temperature: story.temperature || 0.9,
narrativeRules: story.narrativeRules || "",
characters:
story.characters?.length > 0
@@ -448,9 +448,9 @@ export default function CreateStoryPage() {
</p>
<div className="temperature-selector">
{[
{ value: 1.0, label: "🎯 Сосредоточенный", desc: "1.0" },
{ value: 1.3, label: "⚖️ Сбалансированный", desc: "1.3" },
{ value: 1.5, label: " Креативный", desc: "1.5" },
{ value: 0.9, label: "⚖️ Сбалансированный", desc: "0.9" },
{ value: 0.95, label: "✨ Живой", desc: "0.95" },
{ value: 1.05, label: "🎨 Креативный", desc: "1.05" },
].map((opt) => (
<button
key={opt.value}
+21 -2
View File
@@ -10,6 +10,7 @@ import {
saveSession as apiSaveSession,
deleteSession,
getPlayerCharacter,
getPlayerCharacters,
type SessionListItem,
} from "../services/api";
import {
@@ -96,6 +97,13 @@ export default function GamePage() {
if (characterId) {
character = await getPlayerCharacter(characterId);
setPlayerCharacter(character);
} else {
// Если персонаж не указан в URL, загружаем первого доступного (или избранного)
const characters = await getPlayerCharacters();
if (characters.length > 0) {
character = characters.find(c => c.isFavorite) || characters[0];
setPlayerCharacter(character);
}
}
// Если есть сессии, загружаем последнюю (или создаём новую)
@@ -107,11 +115,21 @@ export default function GamePage() {
console.log("[GamePage] Session data loaded:", sessionData);
if (sessionData) {
setSession(sessionData);
// Загружаем персонажа из сессии если не выбран
// Загружаем персонажа: приоритет URL > сессия
if (!character && sessionData.playerId) {
character = await getPlayerCharacter(sessionData.playerId);
setPlayerCharacter(character);
}
// Если в сессии нет playerId, но персонаж выбран в URL — обновляем сессию
if (!sessionData.playerId && character) {
const updatedSession = { ...sessionData, playerId: character.id };
await apiSaveSession(id, latestSession.id, updatedSession);
setSession(updatedSession);
}
// Если сессия пустая (нет сообщений) — запускаем историю
if (sessionData.messages.length === 0 && character) {
startStory(normalizedStory, sessionData, character, latestSession.id);
}
}
} else if (characterId) {
// Нет сессий и выбран персонаж — создаём новую
@@ -608,7 +626,8 @@ export default function GamePage() {
// Используем персонажа из текущей сессии или выбранного
const characterId = playerCharacter?.id || session?.playerId;
if (!characterId) {
alert("Не выбран персонаж для игры");
// Перенаправляем на страницу выбора персонажа
window.location.href = `/story/${id}`;
return;
}