<feed xmlns='http://www.w3.org/2005/Atom'>
<title>fund-lab.git/src/FundLab.Api/FundLab.Api.fsproj, 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-21T19:25:00+00:00</updated>
<entry>
<title>Add real AKShare stock daily history probe slice (3d-19)</title>
<updated>2026-09-21T19:25:00+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T19:25:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=7dd0e3f42105569b6e6ec02aeeec9b5a8bbd9dd3'/>
<id>urn:sha1:7dd0e3f42105569b6e6ec02aeeec9b5a8bbd9dd3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add real AKShare stock quote probe slice (3d-17)</title>
<updated>2026-09-21T18:13:04+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T18:13:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=7da3c3d938e4b64a43963d602ab4a0a8c89f6f9e'/>
<id>urn:sha1:7da3c3d938e4b64a43963d602ab4a0a8c89f6f9e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add real AKShare bond quote probe slice (3d-14)</title>
<updated>2026-09-21T17:12:52+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T17:12:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=3cc0b4dcfeed042e5a69628c6b7f45580ad1e2f9'/>
<id>urn:sha1:3cc0b4dcfeed042e5a69628c6b7f45580ad1e2f9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add real NAV series multi-day returns (3d-13)</title>
<updated>2026-09-21T16:56:35+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T16:56:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=70e1ad4fc8ba248f835d415faade8a91ac3dc1f8'/>
<id>urn:sha1:70e1ad4fc8ba248f835d415faade8a91ac3dc1f8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add real AKShare NAV-date probe slice (3d-12)</title>
<updated>2026-09-21T16:19:09+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T16:19:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=0597ac74757e223c17a6477ff49d69a559168279'/>
<id>urn:sha1:0597ac74757e223c17a6477ff49d69a559168279</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(app): 接入 AKShare 行情采集、净值查询与前端净值曲线</title>
<updated>2026-09-20T17:40:10+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T17:40:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/fund-lab.git/commit/?id=be1afd248e4cc9b03a1e21090602a945af6988b2'/>
<id>urn:sha1:be1afd248e4cc9b03a1e21090602a945af6988b2</id>
<content type='text'>
[变更性质]
- 本提交完成 3b 行情闭环：真实 AKShare 搜索与净值采集、PostgreSQL 持久化、鉴权 API 与 Fable 前端净值曲线展示。

[新增功能]
- API 新增 /api/instruments/search、/api/instruments/{code}/nav 与 nav/refresh 接口，经 Bearer 鉴权调用 AKShare Python 采集器并幂等落库。
- 前端提供基金搜索、精确代码选择、历史净值刷新/重读与 SVG 折线图，token 变更即清空私有结果并失效在途请求。

[实现方案]
- MarketData 以 requiredProperty 校验采集器 payload，净值观测按 (code, nav_date) 幂等 upsert 并保留来源与哈希。
- 前端以 requestId 序列守卫 SearchCompleted/SearchFailed/NavCompleted/NavFailed，TokenChanged 同时递增 searchSeq/navSeq 拒绝过期响应；边界解码兼容 F# option 的 {"case":"Some"} 线格式。

[影响范围]
- 新增 FundLab.Web.Tests（边界解码、序列失效、图表纯函数共 8 项），扩展 API 测试至 20 项；vite dev 代理 /api 至本地 API。
- 真实 AKShare 端到端依赖本机 akshare 环境，由负责人另行验收；本提交不包含 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>
