{"id":48363299,"url":"https://github.com/yxforever666gh/go-stock","last_synced_at":"2026-04-23T00:01:49.719Z","repository":{"id":349333291,"uuid":"1169592725","full_name":"yxforever666gh/go-stock","owner":"yxforever666gh","description":"基于 Go、Wails、Vue 3 的本地股票分析工具，支持桌面模式与 Web 模式，包含自选股、市场资讯、AI 分析报告、推荐收益跟踪与邮件报告能力。","archived":false,"fork":false,"pushed_at":"2026-04-14T02:04:55.000Z","size":12839,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-14T04:08:14.093Z","etag":null,"topics":["ai","desktop-app","echarts","golang","naive-ui","sqlite","stock-analysis","vite","vue3","wails"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yxforever666gh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-28T23:04:17.000Z","updated_at":"2026-04-14T02:04:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yxforever666gh/go-stock","commit_stats":null,"previous_names":["yxforever666gh/go-stock"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/yxforever666gh/go-stock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yxforever666gh%2Fgo-stock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yxforever666gh%2Fgo-stock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yxforever666gh%2Fgo-stock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yxforever666gh%2Fgo-stock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yxforever666gh","download_url":"https://codeload.github.com/yxforever666gh/go-stock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yxforever666gh%2Fgo-stock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32159962,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T17:06:48.269Z","status":"ssl_error","status_checked_at":"2026-04-22T17:06:19.037Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","desktop-app","echarts","golang","naive-ui","sqlite","stock-analysis","vite","vue3","wails"],"created_at":"2026-04-05T13:04:53.777Z","updated_at":"2026-04-23T00:01:49.702Z","avatar_url":"https://github.com/yxforever666gh.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-stock\n\n![go-stock social preview](./docs/assets/social-preview.png)\n\n基于 Go、Wails、Vue 3 和 Naive UI 的本地优先股票分析工具，支持桌面模式和本地 Web 模式，聚焦于自选股、市场资讯、AI 分析报告、推荐收益跟踪与邮件报告。\n\n[Releases](https://github.com/yxforever666gh/go-stock/releases) | [更新日志](./CHANGELOG.md) | [公开检查清单](./PUBLIC_RELEASE_CHECKLIST.md) | [仓库展示信息](./PUBLIC_REPO_METADATA.md)\n\n\u003e 来源说明：当前仓库基于公开项目 [`ArvinLovegood/go-stock`](https://github.com/ArvinLovegood/go-stock) 改编整理而来，不是原作者官方仓库；当前公开版只保留适合继续协作与二次开发的内容。\n\n## 项目定位\n\n- 本地优先：核心数据、运行时目录与大部分分析链路在本地完成，不依赖必须在线的中心化控制台\n- 双模式运行：同时支持 Wails 桌面壳与本地 Web 模式\n- AI 工作台：覆盖市场资讯总结、个股分析、推荐记录与收益率跟踪\n- 工程化可维护：应用层 API、前端路由与重型逻辑已完成分层收敛，更适合继续迭代\n\n## 第一眼能力\n\n- 自选股与分组管理，支持个股详情、K 线与分时相关视图\n- 市场行情、全球指数、行业排名与资讯总结\n- AI 分析报告历史、推荐记录与推荐收益率追踪\n- 邮件报告、运行时任务、SQLite 本地存储\n- OpenAI 兼容接口、DeepSeek、Ollama、LM Studio、火山方舟等模型接入\n\n当前仓库是一个持续迭代中的业务仓库，README 以“如何运行、如何构建、当前实际包含什么能力”为主，不再复用外部宣传型说明。\n\n## 项目来源\n\n- 当前仓库与公开项目 `ArvinLovegood/go-stock` 存在演化关系，公开前建议再次核对来源说明、版权归属和许可证兼容性。\n- 当前 `1.2.8` 公开快照已主动移除个人赞赏码、联系方式、构建产物、运行数据库和本地私有接入说明，避免把不适合公开仓库的内容继续带到云端。\n- 当前公开版不再保留二维码打赏、赞助码校验和赞助分流下载入口，只保留公开仓库版本说明与来源说明。\n- 如果你需要追溯原始公开项目，请直接访问上面的原作者仓库链接；当前仓库维护的是公开整理版的后续改动。\n- 如果你准备把当前仓库从私有切换为公开，建议先阅读 [PUBLIC_RELEASE_CHECKLIST.md](./PUBLIC_RELEASE_CHECKLIST.md) 并逐项确认。\n\n## 1.2.8 近期重点\n\n- `市场行情` 页完成新一轮分栏重构，快讯、指数、资金流、龙虎榜、公告、研报、热门题材、指标选股和名站优选等栏目改成更清晰的独立 tab 结构。\n- 顶层菜单和运行时事件从 `App.vue` 中进一步拆开，市场页与研究页切换统一走模块化入口，降低壳层与业务页耦合。\n- `收益率统计` 页补齐独立的按交易日 overview 数据链路，用来生成全库 `累计走势` 与 `单日变化` 图表，不再依赖明细页拼装统计图。\n- AI 推荐收益率重算主链路继续拆分，激活判定、提供方选择、重算调度、概览统计和写库职责更清楚，后续维护 strict 收益率更容易做定向修复。\n- 应用运行时状态与发布工程化同步收口，新增 CI 工作流，并把 README、更新日志、Release Notes、About 页和版本元数据统一切到 `1.2.8`。\n\n## AI 推荐收益率激活规则\n\n- AI 推荐记录现在区分“人类展示字段”和“机器执行字段”。\n- `recommendReason / buySignal / remarks` 继续用于人类阅读；收益率 strict 模式不再依赖这些自然语言直接判定激活时点。\n- 机器执行字段统一为 `activationRuleJson`，至少包含：\n  - `signalType`\n  - `evaluationWindow`\n  - `baseline`\n  - `operator`\n  - `thresholdValue`\n  - `confirmBars`\n  - `expireTradeDays`\n- 如果是区间触发，还会包含 `thresholdMax`；如果涉及量能阈值，还会包含 `volumeRatio / volumeWindow / volumeMetric`。\n\n最小示例：\n\n```json\n{\n  \"signalType\": \"price_range_with_volume\",\n  \"evaluationWindow\": \"5m\",\n  \"baseline\": \"avg_amount_5x5m\",\n  \"operator\": \"\u003e=\",\n  \"thresholdValue\": 9.42,\n  \"thresholdMax\": 9.56,\n  \"volumeRatio\": 1.2,\n  \"confirmBars\": 1,\n  \"volumeWindow\": 5,\n  \"volumeMetric\": \"amount\",\n  \"expireTradeDays\": 5\n}\n```\n\n对应的人类描述可以写成：\n\n```text\n价格触发：未来 5 个交易日内股价进入 9.42-9.56 主买入区；\n量能触发：5 分钟成交额不低于近 5 个 5 分钟均额的 1.2 倍；\n逻辑触发：核心催化未证伪且板块未转弱。\n```\n\n注意：\n\n- `放量 / 缩量 / 强势 / 承接 / 不追` 这类模糊词不会再直接参与收益率计算。\n- 如果 AI 只能输出自然语言、无法输出结构化规则，该记录会被标记为“未结构化”，不会进入 strict 收益率统计。\n\n## 当前能力\n\n- 股票自选与分组管理\n  - 自选股查看、分组切换、个股详情、K 线与分时相关视图\n- 市场行情\n  - 市场快讯、全球股指、重大指数、行业排名等页面\n  - 市场资讯 AI 总结与推荐补写链路\n- 研究中心\n  - AI 分析报告历史查看\n  - 股票推荐记录与推荐收益率记录\n  - 报告支持 Markdown 预览、复制、保存、社区分享\n- AI 能力\n  - 支持 OpenAI 兼容接口、DeepSeek、Ollama、LM Studio、火山方舟等模型接入\n  - 支持 AI 对话页、市场资讯总结、推荐收益相关链路\n- 邮件报告\n  - 支持测试邮件、收益率 CSV、最新 AI 分析报告发送\n  - 已补充邮件发送日志与审计能力\n- 运行时与任务\n  - 定时任务、运行时目录初始化、SQLite 数据存储\n  - 桌面模式与 `--web` 模式共用核心业务逻辑\n\n## 技术栈\n\n- 后端\n  - Go `1.25`\n  - Wails `v2`\n  - GORM + SQLite\n  - Zap 日志\n  - cron 定时任务\n- 前端\n  - Vue 3\n  - Vite\n  - Naive UI\n  - ECharts\n  - md-editor-v3\n\n## 项目结构\n\n- `app.go`\n  - Wails 暴露给前端的主要应用入口\n- `backend/`\n  - 数据抓取、推荐收益、市场资讯、配置读写等核心业务\n- `internal/service/`\n  - 运行期 service 拆分\n- `frontend/`\n  - Vue 前端工程\n- `runtime/`\n  - 默认运行时目录，包含数据库、词典等运行文件\n- `scripts/`\n  - 桌面/Web 模式开发、启动、停止、构建脚本\n\n## 环境要求\n\n### 通用\n\n- Go 1.25+\n- Node.js 18+ 与 npm\n\n### 桌面模式额外依赖\n\n- Wails CLI\n  ```bash\n  go install github.com/wailsapp/wails/v2/cmd/wails@latest\n  ```\n\n### Linux 桌面依赖\n\nUbuntu / Debian 可先安装：\n\n```bash\nsudo apt-get update\nsudo apt-get install -y build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev\n```\n\n如果发行版没有 `libwebkit2gtk-4.1-dev`，可改用 `libwebkit2gtk-4.0-dev`。\n\n## 安装前端依赖\n\n```bash\ncd frontend\nnpm install\n```\n\n## 运行方式\n\n### 1. Linux 桌面开发模式\n\n```bash\n./scripts/dev-linux.sh\n```\n\n说明：\n\n- 该脚本会检查 `wails`、`pkg-config`、GTK/WebKit 依赖\n- 默认使用低噪声模式启动 Wails 开发环境\n- 如果改动了 Wails 绑定接口，可额外手动执行一次：\n\n```bash\nwails dev -m -s\n```\n\n### 2. 本地 Web 联调模式\n\n适合前后端联调，前端走 Vite 热更新。\n\n```bash\n./scripts/dev-web.sh\n```\n\n默认：\n\n- 后端 API：`http://127.0.0.1:34115`\n- 前端开发服务：`http://127.0.0.1:5173`\n\n### 3. 本地 Web 常驻模式\n\n适合本机浏览器访问，不启动桌面壳。\n\n```bash\n./scripts/restart.sh start\n```\n\n默认地址：\n\n- `http://127.0.0.1:34115`\n\n停止服务：\n\n```bash\n./scripts/restart.sh stop\n```\n\n查看、暂停、恢复、重启：\n\n```bash\nbash scripts/webctl.sh status\nbash scripts/webctl.sh pause\nbash scripts/webctl.sh resume\nbash scripts/restart.sh restart\n```\n\n### 4. Web 模式推荐启动流程\n\n如果前端改过，先重新构建前端，再启动 Web 服务：\n\n```bash\ncd frontend\nnpm run build\ncd ..\n./scripts/restart.sh start\n```\n\n原因：\n\n- Web 模式会使用 `frontend/dist` 静态资源\n- 不先构建就启动，浏览器可能看到旧页面\n\n## 常用环境变量\n\n### Web 模式\n\n- `GO_STOCK_WEB_ADDR`\n  - Web 监听地址，默认 `127.0.0.1:34115`\n- `GO_STOCK_WEB_FOREGROUND`\n  - 设为 `1` 时前台运行\n- `GO_STOCK_SKIP_BUILD`\n  - 设为 `1` 时跳过 `restart.sh start` 里的 Go 构建\n- `GO_STOCK_RUNTIME_DIR`\n  - 指定运行时目录，默认 `./runtime`\n- `GO_STOCK_DB_PATH`\n  - 指定数据库路径或 DSN\n- `GO_STOCK_LOG_LEVEL`\n  - 应用日志级别\n- `GO_STOCK_DB_LOG_LEVEL`\n  - 数据库日志级别\n\n示例：\n\n```bash\nGO_STOCK_WEB_ADDR=127.0.0.1:34116 ./scripts/restart.sh start\n```\n\n### 公开版可选服务覆盖\n\n- `GO_STOCK_BASEINFO_BASE_URL`\n  - 覆盖基础股票资料同步地址，默认指向当前公开仓库的 `build/*.json`\n- `GO_STOCK_SHARE_UPLOAD_URL`\n  - 配置分析结果分享服务地址；未配置时，“分享分析”会提示改用本地导出\n- `GO_STOCK_SYNC_NEWS_URL_TEMPLATE`\n  - 配置资讯同步接口模板，使用 `{since}` 占位；未配置时不会主动连接外部资讯同步服务\n\n### 分钟线 / 数据源相关\n\n- 现在推荐优先在“设置页 -\u003e 分钟线数据源”里配置。\n- 默认模式是“公共源优先”，适合实时与短周期分钟线。\n- 公共源支持按开关启用：\n  - `AKShare`\n  - `新浪分钟线`\n  - `腾讯分钟线`\n- `AKShare` 支持来源偏好：\n  - `自动`\n  - `新浪`\n  - `东方财富`\n- 如果需要覆盖更长时间的历史分钟线，请切换到“私人分钟线来源”，并填写：\n  - 调用 URL\n  - API Key\n  - 超时、最小间隔、代理模式、分钟级别\n\n说明：\n\n- 公共源不是长历史分钟线方案。历史跨度较大时，请直接使用私人分钟线来源。\n- 设置页不会展示具体付费服务商品牌名，只保留通用配置入口。\n- 旧的环境变量仍然兼容，但当前更推荐把它们当作“迁移导入默认值”，保存后以设置页配置为准。\n- 历史兼容前缀仍为 `GO_STOCK_DIEMENG_*`，这只是兼容旧部署的命名，不代表当前仓库默认绑定任何特定私有服务。\n\n兼容环境变量示例：\n\n- 公共链路\n  - `GO_STOCK_MINUTE_PROVIDER`\n  - `GO_STOCK_AKSHARE_MINUTE_SOURCE`\n  - `GO_STOCK_AKSHARE_PROXY_MODE`\n  - `GO_STOCK_AKSHARE_TIMEOUT_SEC`\n- 私人分钟线来源\n  - `GO_STOCK_DIEMENG_API_KEY`\n  - `GO_STOCK_DIEMENG_BASE_URL`\n  - `GO_STOCK_DIEMENG_PROXY_MODE`\n  - `GO_STOCK_DIEMENG_TIMEOUT_SEC`\n  - `GO_STOCK_DIEMENG_MIN_INTERVAL_MS`\n  - `GO_STOCK_DIEMENG_LEVEL`\n- 其他\n  - `GO_STOCK_DB_BUSY_TIMEOUT_MS`\n\n兼容说明：\n\n- 当前内部仍兼容既有私人分钟线来源环境变量前缀 `GO_STOCK_DIEMENG_*`\n- 这些环境变量在桌面应用里更适合作为首次导入来源；保存设置后，运行时优先使用设置页中的私人分钟线配置\n- `GO_STOCK_DIEMENG_BASE_URL` 应填写你自己的私人分钟线服务地址；如果只填写站点根路径且服务接口位于 `/api`，程序会自动补齐 `/api`\n- `GO_STOCK_DIEMENG_PROXY_MODE=disable`\n  - 强制该私人来源直连\n- `GO_STOCK_DIEMENG_PROXY_MODE=inherit`\n  - 跟随系统代理\n- `GO_STOCK_DIEMENG_PROXY_MODE=settings`\n  - 使用设置页里的 HTTP 代理\n\n## 构建\n\n### 通用桌面构建\n\n```bash\n./scripts/build.sh\n```\n\n### Windows\n\n```bash\n./scripts/build-windows.sh\n```\n\n### macOS\n\n```bash\n./scripts/build-macos.sh\n```\n\n或：\n\n```bash\n./scripts/build-macos-arm.sh\n./scripts/build-macos-intel.sh\n```\n\n### Linux\n\n```bash\n./scripts/build-linux.sh\n```\n\n如果前端构建出现内存不足，可显式提高 Node 内存：\n\n```bash\nNODE_OPTIONS=--max-old-space-size=4096 ./scripts/build-linux.sh\n```\n\n## 数据与运行目录\n\n默认运行数据会放在：\n\n- `runtime/`\n\n典型内容包括：\n\n- `runtime/db/stock.db`\n- `runtime/dict/user.txt`\n\n项目里也存在一些历史导出与构建产物目录，例如：\n\n- `dist/`\n- `exports/`\n\n它们不等同于运行必需目录，但在当前仓库里属于业务流程的一部分。\n\n## 工程化命令\n\n仓库根目录新增了统一工程入口：\n\n```bash\nmake test\nmake lint\nmake build-web\nmake dev-web\nmake build-desktop\n```\n\n说明：\n\n- `make test`\n  - 运行 `go test ./...`\n- `make lint`\n  - 运行 Go 静态检查与前端 ESLint\n- `make build-web`\n  - 构建前端静态资源\n\n## 前端结构约定\n\n- `frontend/src/views/`\n  - 路由级页面入口，只负责页面装配\n- `frontend/src/components/`\n  - 业务展示组件和已有页面主体\n- `frontend/src/services/app-api.js`\n  - Wails `App` 绑定的统一导出入口，后续页面优先从这里接入\n\n## 版本信息\n\n当前仓库版本信息以以下位置为准：\n\n- 应用产品版本：`wails.json`\n- 更新说明：`CHANGELOG.md`\n\n当前版本：\n\n- `1.2.4`\n\n建议发布 `1.2.4` 时至少同步以下文件：\n\n- `wails.json`\n- `CHANGELOG.md`\n- `README.md`\n\n## 常见问题\n\n### 页面还是旧版本\n\n先重新构建前端，再重启 Web 服务：\n\n```bash\ncd frontend\nnpm run build\ncd ..\n./scripts/restart.sh stop\n./scripts/restart.sh start\n```\n\n### 34115 或 5173 端口被占用\n\n```bash\nss -ltnp | rg ':34115|:5173'\n```\n\n如果是 Web 模式占用，也可以直接：\n\n```bash\nbash scripts/webctl.sh stop\n```\n\n### `build/bin/go-stock` 不存在\n\n`restart.sh start` 默认会自动 `go build`。如果你设置了 `GO_STOCK_SKIP_BUILD=1`，需要先手动构建：\n\n```bash\ngo build -o build/bin/go-stock .\n```\n\n### Linux 下桌面模式起不来\n\n优先检查：\n\n- `wails` CLI 是否安装\n- `pkg-config` 是否存在\n- GTK / WebKit2GTK 依赖是否齐全\n\n直接运行：\n\n```bash\n./scripts/dev-linux.sh\n```\n\n脚本会把缺什么依赖打印出来。\n\n## 说明\n\n- 这是一个高频迭代中的项目仓库，README 只描述当前仓库内真实存在的功能与脚本\n- AI 分析、推荐、邮件与行情数据都依赖外部模型或第三方数据源，结果不应视为投资建议\n- 如果你准备发布版本，优先同步更新 `CHANGELOG.md`、`README.md` 与 `wails.json`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyxforever666gh%2Fgo-stock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyxforever666gh%2Fgo-stock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyxforever666gh%2Fgo-stock/lists"}