featend(front):保存AI分析结果为Markdown文件时可以选择保存目录

- 在 App.d.ts 中添加 SaveAsMarkdown 函数声明
- 在 app.go 中实现 SaveAsMarkdown 方法,用于保存分析结果
- 在 App.js 中添加 SaveAsMarkdown 函数的 JavaScript 调用接口- 在 stock.vue 中添加保存为 Markdown 的功能按钮,并实现相关逻辑
This commit is contained in:
ArvinLovegood 2025-03-28 22:20:30 +08:00
parent 076dc4f9ef
commit 2b41dc11c1
4 changed files with 35 additions and 3 deletions

23
app.go
View File

@ -780,7 +780,28 @@ func (a *App) FollowFund(fundCode string) string {
func (a *App) UnFollowFund(fundCode string) string {
return data.NewFundApi().UnFollowFund(fundCode)
}
func (a *App) SaveAsMarkdown(stockCode, stockName string) string {
res := data.NewDeepSeekOpenAi(a.ctx).GetAIResponseResult(stockCode)
if res != nil && len(res.Content) > 100 {
analysisTime := res.CreatedAt.Format("2006-01-02_15_04_05")
file, err := runtime.SaveFileDialog(a.ctx, runtime.SaveDialogOptions{
Title: "保存为Markdown",
DefaultFilename: fmt.Sprintf("%s[%s]AI分析结果_%s.md", stockName, stockCode, analysisTime),
Filters: []runtime.FileFilter{
{
DisplayName: "Markdown",
Pattern: "*.md;*.markdown",
},
},
})
if err != nil {
return err.Error()
}
err = os.WriteFile(file, []byte(res.Content), 0644)
return "已保存至:" + file
}
return "分析结果异常,无法保存。"
}
func OnSecondInstanceLaunch(secondInstanceData options.SecondInstanceData) {
notification := toast.Notification{
AppID: "go-stock",

View File

@ -15,7 +15,7 @@ import {
SetCostPriceAndVolume,
SetStockSort,
UnFollow,
ShareAnalysis
ShareAnalysis, SaveAsMarkdown
} from '../../wailsjs/go/main/App'
import {
NAvatar,
@ -752,7 +752,12 @@ async function copyToClipboard() {
message.error('复制失败: ' + err);
}
}
function saveAsMarkdown() {
function saveAsMarkdown(){
SaveAsMarkdown(data.code,data.name).then(result => {
message.success(result)
})
}
function saveAsMarkdown_old() {
const blob = new Blob([data.airesult], { type: 'text/markdown;charset=utf-8' });
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);

View File

@ -31,6 +31,8 @@ export function NewChatStream(arg1:string,arg2:string,arg3:string):Promise<void>
export function SaveAIResponseResult(arg1:string,arg2:string,arg3:string,arg4:string,arg5:string):Promise<void>;
export function SaveAsMarkdown(arg1:string,arg2:string):Promise<string>;
export function SendDingDingMessage(arg1:string,arg2:string):Promise<string>;
export function SendDingDingMessageByType(arg1:string,arg2:string,arg3:number):Promise<string>;

View File

@ -58,6 +58,10 @@ export function SaveAIResponseResult(arg1, arg2, arg3, arg4, arg5) {
return window['go']['main']['App']['SaveAIResponseResult'](arg1, arg2, arg3, arg4, arg5);
}
export function SaveAsMarkdown(arg1, arg2) {
return window['go']['main']['App']['SaveAsMarkdown'](arg1, arg2);
}
export function SendDingDingMessage(arg1, arg2) {
return window['go']['main']['App']['SendDingDingMessage'](arg1, arg2);
}