<feed xmlns='http://www.w3.org/2005/Atom'>
<title>fund-lab.git/README.md, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/fund-lab.git/atom?h=main</id>
<link rel='self' href='http://git.somhairle.bid/fund-lab.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/'/>
<updated>2026-09-20T19:03:59+00:00</updated>
<entry>
<title>fix(api): 加固行情采集子进程超时、取消与进程组清理并脱敏错误</title>
<updated>2026-09-20T19:03:59+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T19:03:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=ea3a5026ad76028562ee4aa6b70c79c94fb17d4b'/>
<id>urn:sha1:ea3a5026ad76028562ee4aa6b70c79c94fb17d4b</id>
<content type='text'>
- MarketDataService: setsid 独立会话启动采集器，硬超时覆盖子进程退出与管道 EOF 两个阶段；超时、取消与异常路径按进程组杀灭（含持有管道的后台子进程），不遗留孤儿进程
- App.ts/Search/RefreshNav 传入 ctx.RequestAborted，客户端断开即取消采集
- 对外错误仅返回统一短消息（503 MARKET_DATA_UNAVAILABLE 等），不泄露路径、stderr 或密钥；stderr 仅记录服务端日志
- 新增 9 项子进程回归（成功/stderr 洪泛/超时杀灭/取消杀灭/孤儿管道恢复/畸形载荷/非零退出/启动失败/缺脚本）与 HTTP 脱敏回归；全文套件 66 通过（Domain 19 / Web 17 / API 30）
- 实机验证：挂起采集器 503 2.4s 无进程残留；真实 akshare 1.18.96 搜索 000001 返回 200，净值刷新持久化 6010 条观测
- README 与 qa/README 补充环境变量、回归命令、G1 过滤断言口径与真实建档标签辨析
</content>
</entry>
<entry>
<title>feat(web): 基金创建/读取界面与仓库内浏览器 QA</title>
<updated>2026-09-20T18:23:43+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T18:23:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=f55ed58d2c75b53774ef7256fddb973ae3e73323'/>
<id>urn:sha1:f55ed58d2c75b53774ef7256fddb973ae3e73323</id>
<content type='text'>
[变更性质]
- 本提交完成 3c-1 切片：Web 端基金建档（创建/重读）表单接入既有幂等 API，并提供仓库内可复现的端到端 QA 入口与生命周期回归。

[新增功能]
- 前端新增 03 / CREATE 面板：名称与初始现金（decimal 字符串）输入、创建/重新读取按钮、服务端返回的基金档案行（份额诚实显示 0、来源标注真实建档/合成标记）；移动端单列布局。
- 创建请求携带 32 位十六进制 Idempotency-Key；网络失败重试复用同一 key，输入变更或成功后换新 key；token 变更清空档案并按序列号拒绝过期响应。

[实现方案]
- 金额全程 decimal 字符串，不经 JS float；update 层 fundSeq 守卫 FundCreate/FundRead 完成消息；BoundaryTests 新增 FundBoundaryTests 9 项（幂等键长度/复用、token 失效、stale 读取拒绝等）。
- qa/run.sh 一次性拉起非默认端口 Postgres/API/Vite（桩行情，_synthetic 标记），清理仅限本次创建的容器（ID+名称归属校验）；临时目录 mktemp 隔离；qa/lifecycle-test.sh 验证拒绝路径不破坏既有资源。

[影响范围]
- Web 测试增至 17 项，全套 56 项通过；浏览器 QA 30/30 通过；README 更新阶段描述。本提交不包含 docs/overnight-progress.md 的现有修改。
</content>
</entry>
<entry>
<title>feat(api): 接入基金 PostgreSQL 持久化与幂等接口</title>
<updated>2026-09-20T16:06:45+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T16:06:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=2ada70d6467aec11b45328112d598454ca50f2d6'/>
<id>urn:sha1:2ada70d6467aec11b45328112d598454ca50f2d6</id>
<content type='text'>
[变更性质]
- 本提交新增基金创建与读取的 PostgreSQL 持久化能力，并完成 3a API 收口验证。

[新增功能]
- 提供带事务和幂等键的基金创建、重放、冲突检测及基金读取接口。
- 覆盖认证、JSON 输入、数值边界、进程重启持久化和 SQL 故障回滚测试。

[实现方案]
- 使用 Npgsql 建立 `funds` 与 `fund_idempotencies` 表，并以 advisory lock 串行化同一幂等键。
- 通过真实 Kestrel 子进程和临时 PostgreSQL 验证 HTTP 行为；同步更新环境、构建和交接文档。

[影响范围]
- API 新增 PostgreSQL 配置要求 `FUND_LAB_DATABASE_URL`，前端构建入口和本地验证命令同步明确。
- 本提交不包含 `docs/overnight-progress.md` 的现有 Hermes 修改。
</content>
</entry>
<entry>
<title>feat(core): 建立 fund-lab 可运行基线</title>
<updated>2026-09-20T14:59:00+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T14:59:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=c60905e9e7f992a7f8c79c3812e92a44b2d606f5'/>
<id>urn:sha1:c60905e9e7f992a7f8c79c3812e92a44b2d606f5</id>
<content type='text'>
[变更性质]
- 本提交冻结当前可构建、可测试的应用基线，不包含 PostgreSQL 持久化。

[新增功能]
- 建立 F# Domain、API、Worker、Web 及测试项目。
- 增加 Bearer 认证、健康检查、账本领域模型和中文空状态页面。

[实现方案]
- 使用环境变量模板注入认证配置，并排除数据、凭证和构建产物。
- 保留 19 个 Domain 测试和 5 个 API 测试作为后续变更基准。

[影响范围]
- 为后续 3a PostgreSQL FOF 创建/读取切片提供可回滚基线。
- 当前仍不接入真实基金数据、真实交易或数据库。
</content>
</entry>
</feed>
