diff --git a/server/src/tools/calculate.ts b/server/src/tools/calculate.ts index 5882819..6a87c2d 100644 --- a/server/src/tools/calculate.ts +++ b/server/src/tools/calculate.ts @@ -18,10 +18,12 @@ function tokenize(input: string): Token[] { while (i < input.length) { const c = input[i]; if (/\s/.test(c)) { i++; continue; } - if (/[0-9.]/.test(c)) { + if (/[0-9.,]/.test(c)) { let num = ""; - while (i < input.length && /[0-9._]/.test(input[i])) num += input[i++]; - const value = Number(num.replace(/_/g, "")); + while (i < input.length && /[0-9._,]/.test(input[i])) num += input[i++]; + // Das Modell rechnet mit deutschen Beträgen und schreibt "87,50". + // Komma gilt deshalb als Dezimaltrenner. + const value = Number(num.replace(/_/g, "").replace(",", ".")); if (!Number.isFinite(value)) throw new ToolError(`Ungültige Zahl: ${num}`); tokens.push({ kind: "num", value }); continue; @@ -95,7 +97,8 @@ export const calculateTool: Tool = { name: "calculate", description: "Berechnet einen arithmetischen Ausdruck exakt. Nutze dies für jede " + - "Rechnung statt selbst zu rechnen. Erlaubt: + - * / % ^ und Klammern.", + "Rechnung statt selbst zu rechnen. Erlaubt: + - * / % ^ und Klammern. " + + "Dezimaltrenner darf Punkt oder Komma sein (87.50 wie 87,50).", parameters: { type: "object", properties: { diff --git a/web/src/styles.css b/web/src/styles.css index b0bf939..094de12 100644 --- a/web/src/styles.css +++ b/web/src/styles.css @@ -545,6 +545,14 @@ body { outline-offset: -4px; } +/* .composer ist ursprünglich eine Flex-Zeile. Die Anhang-Vorschau gehört + darüber, deshalb wird der Container zur Spalte und .composer-row übernimmt + die frühere Zeilen-Rolle. */ +.composer { + flex-direction: column; + align-items: stretch; +} + .composer-row { display: flex; align-items: flex-end;