Add login gate, calculation history, and AI markdown download.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-13 09:39:38 +08:00
parent abf78cbbb5
commit 462bec2739
23 changed files with 878 additions and 74 deletions
+22 -1
View File
@@ -16,6 +16,7 @@ import RegionSelect, {
} from "@/components/shared/region-select";
import { calculateBazi, type BaziChart } from "@/lib/calc/bazi";
import { streamAiCompletion } from "@/lib/ai/client-stream";
import { saveHistoryEntry } from "@/lib/history/storage";
export default function BaziForm() {
const [date, setDate] = useState(todaySolarYmd());
@@ -80,7 +81,7 @@ export default function BaziForm() {
setIsLoading(true);
try {
await streamAiCompletion(
const text = await streamAiCompletion(
{
mode: "bazi",
payload: {
@@ -91,6 +92,18 @@ export default function BaziForm() {
},
setCompletion,
);
saveHistoryEntry({
mode: "bazi",
title: "生辰八字解读",
question,
summary: activeChart.lunarDate,
completion: text,
meta: {
出生地域: location!.name,
: `${input.date} ${input.time}`,
农历: activeChart.lunarDate,
},
});
} catch (err) {
setError(err instanceof Error ? err.message : String(err));
} finally {
@@ -98,6 +111,12 @@ export default function BaziForm() {
}
}
const activeChartPreview = chart;
const downloadPreamble =
completion && location
? `# 生辰八字 AI 解读\n\n- 问事:${question}\n- 出生地域:${location.name}\n- 阳历:${date} ${unknownHour ? "时辰不详" : time}\n${activeChartPreview ? `- 农历:${activeChartPreview.lunarDate}\n` : ""}`
: undefined;
return (
<ModeWorkspace
aiPanel={
@@ -108,6 +127,8 @@ export default function BaziForm() {
onCompletion={handleAnalyze}
error={error}
emptyHint="排盘后点击「AI 测算」获取解读"
downloadFilename={completion ? "生辰八字解读.md" : undefined}
downloadPreamble={downloadPreamble}
/>
}
>