ci: 配置 master 自动验证与服务器部署

This commit is contained in:
2026-10-09 20:42:31 +08:00
parent 57882ff568
commit 2cad6d7533
14 changed files with 504 additions and 9 deletions
+60 -4
View File
@@ -1,6 +1,62 @@
# 开发记忆与交接状态
更新日期:2026-10-08。
更新日期:2026-10-09。
## 最新 CI/CD 配置(2026-10-09)
- 用户要求参考 sundynix-pets 接入自动部署,并指定先创建 dev、禁止直接提交 master、CI/CD 只由 master push(包括 PR 合并)触发。已创建 dev 并保留当天全部修改;AGENTS.md 已记录分支规则。
- Gitea 仓库 Actions 已启用;全局 sundynix-global-128 Runner 在线,标签 ubuntu-latest。已在仓库网页保存 DEPLOY_PASSWORD 与 DEPLOY_KNOWN_HOSTS Secret,不在代码或文档记录凭据。
- 已在 Gitea 创建 master 分支保护:禁用推送、禁用强制推送、管理员须遵守,无绕过白名单;保留通过 PR 合并。按用户仅 master 触发要求,不配置依赖 dev/PR 流水线的合并前状态检查。
- 部署目标为 192.168.100.132:/home/workspace/sundynix-veyra,默认端口 8080;SSH 已验证。服务器 Docker 28.2.2、Compose 2.36.2、flock 可用,检查时 8080 未监听。
- 服务器 configs/.env 已经通过 SSH 初始化为 600 权限,使用已有开发配置与加密主密钥,不覆盖已存在的服务器配置,不包含 SSH 部署字段。保持开发环境认证,不声称正式生产认证已实现。
- 新增 .gitea/workflows/ci-cd.yml、根 Dockerfile/.dockerignore 和 deploy/ 脚本与说明。Gitea token 归档检出、Docker 内验证 App/管理端/Go/独立 PostgreSQL,成功后构建完整 SHA 镜像并 SSH 传输校验包。运行镜像包含管理端 embed、Python、CA、时区,UID 10001,日志 bind 至部署目录 logs/。
- 发布脚本加锁,保留服务器配置,先建库/迁移,再等待 /readyz;健康失败回滚上一镜像与 Compose,迁移失败不替换原运行服务。数据库迁移不自动回退。脚本测试覆盖成功、迁移失败、健康失败、损坏包、缺配置与首次配置保留,共 6 项。
- 本地脚本 6 项、Go race(真实 PostgreSQL 临时 schema)、go vet、gofmt、Go 构建、管理端类型/构建/embed、App 12 项测试/类型检查/双平台导出通过;工作流 YAML、内嵌 shell 与服务器 Compose config --quiet 已校验。服务器完整 Docker 检查与最终运行镜像构建也已通过,包含容器内发布测试和独立 PostgreSQL 17 的全部 Go race 测试。服务器 proxy.golang.org 超时、goproxy.cn 返回 200,构建阶段已切换 goproxy.cn 并验证成功,不关闭 checksum。
- 运行镜像已在隔离网络、只读文件系统、临时日志目录中启动验证:内嵌管理端 200,缺少数据库/Redis 时 readyz 正确返回 503,Python 3.11.2 可执行。验证容器已清理,没有连接开发数据库或启动实际部署实例。
- 本机 Docker daemon 未运行,使用指定部署主机的独立 /tmp/veyra-verify-* 构建目录验证。CI 文件在 dev,通过 PR 进入 master 后才触发首次自动部署。自动筛选与股票工作台已在 dev 提交 57882ff;后续 CI 配置提交不直接操作 master。
## 最新开发状态(2026-10-09,管理端重排与真实候选联调)
- 用户要求配置并实际生成自动候选,以及重新规划管理端 UI,使其围绕股票而非服务状态。已完成可见的管理端重排与真实源验证;不再要求用户逐条录入候选。
- 总览改为 A 股研究总览:实际已同步证券数量、近期待审核/有效发布候选数量、已启用策略数、股票名称/代码/价格/行情时间、真实未复权日线与待审核信号卡片。候选与策略统计明确为最近 100 条范围,不冒充全量;没有指数、涨跌幅、成交额和行业数据,不虚构相应指标。
- 新增“股票行情”一级入口,支持代码/名称搜索、股票报价与真实日线图。导航将股票研究与运行配置分组,原 PostgreSQL/Redis/服务状态移至数据健康,模拟回放收进辅助开发区。管理端保持暖白、炭黑、焦糖橙。
- 候选审核以自动筛选为主入口,手工补录为辅助。股票卡片突出名称、交易所/代码、参考区间、风险/目标价格;详情包含真实日线、来源、版本、依据、风险与审核记录。总览信号卡可直达对应候选详情。
- 新增同源管理员 POST /api/admin/v1/strategy-screenings/run(202 异步)与 GET /api/admin/v1/strategy-screening-status。当前进程状态显示排队/运行/完成/失败、最近一批检查/生成/跳过/失败数量与时间;运行或排队中的重复请求复用现有任务,不创建新 Worker。进程状态不声称跨重启持久化,实际筛选记录与候选仍持久化。
- 选定范围配置上限扩为 100 只,每批最多 20 只,定时轮转。后台已按用户本轮要求创建并启用均线交叉研究基线修订 3:5/20 日 SMA,上涨交叉;固定取行情列表按代码排序的前 100 个有效报价中剔除名称含 ST 的 96 只。参考区间 ±100 基点、风险观察 −500 基点、目标观察 +1000 基点、有效 24 小时。此为开发研究预览参数,已保存在不可覆盖的后台策略版本,可修订;不是经过验证的投资建议或全市场自动选股。
- 真实新浪公开日线的 96 只已分五批全部完成,无跳过、无失败,生成两条 PENDING_REVIEW:中洲控股 000042、胜利股份 000407,信号日 2026-10-09。证券、依据、参考价格、来源及版本均自动生成;没有植入演示候选,没有自动审核发布。首批旧修订 2 的 20 只没有信号,记录如实保留。
- 十三版 veyra_strategy_screening 保存不可覆盖的策略版本、来源/配置版本、日线输入快照和 SHA-256;按版本/证券/日期/来源唯一去重。自动创建、提交审核、筛选记录与审计同事务,并发重复不会留额外候选。
- 只使用完整日线与实际观察时间,未复权;当日上海时间 16:00 前不筛选。报价观察须最近 24 小时,报价与日线接收时间在 10 分钟内,来源/版本与最后日线日期匹配;不把重新接收陈旧收盘价当新观察。
- 自动候选及后续人工修订保留策略版本绑定。策略暂停/切换时不能发布旧自动候选或建立新计划,App 有效列表排除它,未完成计划失效并释放预算;手工候选独立,已记录成交与持仓保留。
- 十四版公开行情报价与模拟回放分开保存;同步只为有效计划产生近期报价事件,最近一分钟实际观察可触发一次站内通知,重复时间/关闭来源/错误版本跳过。提醒不写账。五分钟同步不保证捕获瞬时变化,远程推送尚未接通。
- 开发库已应用 14 版迁移。PostgreSQL 临时 schema race 测试覆盖并发去重、输入不可覆盖、审核前 App 隔离、公开提醒不改变账本、失效来源跳过、暂停后预算释放;新增手动触发权限、重复排队、Worker 完成与取消验证。Go vet 与管理端类型检查/构建/embed通过;App 前轮 12 项测试/类型检查/双平台 Hermes 导出通过,本轮未改 App 代码。
- Chrome 已验证新版总览的 5213 条行情快照/2 条待审核信号、股票价格及 40 条实际日线;候选页已打开中洲控股,确认自动生成的依据、来源/策略版本、价格区间和审核发布/退回入口可见。页面保留在待审核详情,未执行审核发布。
- 本次预览后端 0.0.0.0:8083,管理端 http://127.0.0.1:8083;Metro 8081,电脑内网 IP 192.168.100.2,App API 指向 8083。Expo 地址 exp://192.168.100.2:8081。App 真机 UI 未验证,APK/IPA 未生成;两条候选还待人工审核,App 有效候选仍为空。
- 本段功能开发时尚未提交;后续分支与提交状态以最新 CI/CD 记录为准。昨晚交接修改保留;凭据只在私有配置,主密钥不重置。
### 接下来
1. 人工核验两条真实自动候选并决定是否发布,真机验证 App 候选 → 计划 → 提醒 → 成交及冲正。当前公开源与研究参数不替代正式市场规则。
2. 补全交易日历、复权、证券及板块交易限制;推进全市场筛选的容量、授权与增量调度,不把当前 96 只范围称为全市场。
3. AI 分析、用户偏好/关注、正式认证、远程推送及生产行情授权仍待开发。
## 2026-10-08 交接(历史,以下未实现项以最新记录为准)
- 用户已要求今天停止开发,明天再继续;未创建自动任务,不在用户未继续指示时推进开发。
- 今日代码已提交并推送至 origin/master,提交 92329dd(完整 SHA:92329ddce2860a77fc492e70c752b76799e94713);已核对远端一致。此次交接文档更新在该提交之后保存,本地尚未另行提交。
- 已完成:单 Go module / 单 main 入口、独立前端依赖、管理端 embed、供应商加密配置、App 模拟交易闭环、候选审核、计划预算、不可覆盖成交及冲正、FIFO 持仓与复盘、站内提醒、zap 文件日志、研究策略版本、Python 异步回测、可配置 A 股公开行情自动同步。
- 自动行情已实际成功同步 5213 条沪深有效报价;新浪为当前开发源,东方财富保留适配器但联调出现连接关闭。日线自动获取与回测已完成实际验证。十二版迁移已应用开发数据库。
- 自动行情尚未驱动策略筛选、候选生成或计划条件提醒;现有候选仍由后台录入/审核,条件提醒仍由模拟价格回放驱动。研究版本选用和暂停也尚未联动候选/计划,不能描述为完整自动选股产品。
- 已完成真实 PostgreSQL 临时 schema 的 race 测试、go vet、管理端类型检查/构建/embed、App 12 项测试及双平台 Hermes 导出;App 真机/模拟器界面未验证,未生成 APK/IPA。
- 最近保留的预览:后端 8083,Metro 8081;App 本地 API 地址指向电脑内网 IP 的 8083。下次先检查进程和网卡地址,不假设这些进程隔夜仍存活;需要启动时使用同一 Go 可执行文件,不新增 main 或 Makefile。常规后端配置端口为 8080。
- 配置与凭据保持本地 configs/.env;禁止写入代码、文档或提交。供应商加密主密钥不得重置。LLM 已保存连接地址和加密密钥,模型名称为空且关闭;AI 调用尚未接通。
### 下次继续顺序
1. 将已有自动行情/日线与后台策略版本接起来,生成带来源、参数版本和数据时间的候选草稿,进入审核队列;减少手工新建,不自动发布未经审核的候选。
2. 联动有效行情、策略暂停、候选版本与计划时效,接通自动条件提醒;保持提醒不产生成交或现金变动,陈旧行情不重新触发。
3. 验证 App 真机完整流程与公开数据展示,按实际验证修复问题;再推进后台配置的 AI 分析、偏好/关注和正式推送。
以上顺序为交接建议,用户明天的新要求优先。正式行情授权、完整交易规则与正式认证仍待完成。
## 产品与依据
@@ -132,7 +188,7 @@
- 管理端候选审核、通知任务、数据健康中的模拟价格回放已替代占位;App 候选/证据/预算/计划/成交/持仓/冲正/站内通知及累计账本复盘已接通。
- 真实 PostgreSQL 临时 schema 下的 race 测试通过:候选并发审核、历史保护、发布与事件失败回滚、计划现金争用与取消、部分成交、偏离说明、冲正不重开计划、FIFO 舍入、重复请求、冲正失败回滚、不可覆盖成交、模拟可卖时间、过期快照、不重复提醒、提醒不改账本与复盘金额。
- 管理端类型检查/生产构建/embed、App 类型检查/12 项客户端测试/iOS 与 Android Hermes 导出、go vet/唯一二进制编译已通过;后续代码变更按需复验。
- 本机 8080 由用户 IDE 的旧进程占用,没有关闭用户进程。当前自有验证服务运行 8081;新增管理端与 App HTTP 读接口及登录/退出已通过,不向开发账户插入候选、资金或成交。
- 本机 8080 由用户 IDE 的旧进程占用,没有关闭用户进程。当时自有验证服务运行 8081,后续已改为 8083;新增管理端与 App HTTP 读接口及登录/退出已通过,不向开发账户插入候选、资金或成交。
- 本轮 Chrome 已可用,实际验证新版候选队列、空白录入表单、通知任务与模拟价格入口,未保存任何业务数据。先前无浏览器是历史环境事实;尚未验证 App 真机/模拟器。
- 待继续:策略版本管理、Python 历史回测、自动行情与供应商调用、偏好与关注、生产服务授权及正式认证/远程推送。本轮改动纳入此次用户授权的提交。
@@ -152,7 +208,7 @@
- 用户要求“做完这个功能就先停止”,本轮在 A 股自动接入验证后停止开发,预览服务保留。后续待自动筛选/审核、AI 分析、偏好与关注、生产授权、正式认证和远程推送;不自动继续扩展。本轮改动纳入此次用户授权的提交,原始两份设计文件未修改。
## 本轮提交准备
## 本轮代码提交记录
- 用户已明确要求提交并 push,本次提交包含工程目录整理、后台配置、App 模拟业务闭环、zap 日志、策略与回测及 A 股自动接入。验证状态和未完成能力以上文最新记录为准。
- 本地环境、密钥、日志、依赖目录和构建产物不纳入提交;原始设计文件保持不变。目标分支为 master,远端为 origin。
- 本地环境、密钥、日志、依赖目录和构建产物不纳入提交;原始设计文件保持不变。已推送至 origin/master,提交为 92329dd,远端 SHA 已核对一致。