Skip to content

feat: add zero-intrusion position ingestion and exposure - #1

Merged
elexingyu merged 18 commits into
mainfrom
codex/v0.2-position-ingestion
Jul 20, 2026
Merged

feat: add zero-intrusion position ingestion and exposure#1
elexingyu merged 18 commits into
mainfrom
codex/v0.2-position-ingestion

Conversation

@elexingyu

@elexingyu elexingyu commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • 零侵入接入:从现有 CSV、JSON、JSONL 仓位文件进行只读预览和正式导入,使用版本化声明式映射配置适配字段、时间、方向与分类,不要求修改策略或连接券商。
  • 可审计分析:新增原子仓位快照契约、幂等重放与晚到修订、严格 portfolio 四元身份选择,以及基于 Decimal 的 gross、net、Top-1、Top-5、HHI 和分类敞口。
  • 完整产品路径:仓位摘要与敞口 API、React 观察台、Markdown 报告和完全合成的演示数据共用同一计算口径,并保留事件和映射哈希证据引用。
  • 开源可用性:补齐接入文档、架构、安全边界、贡献规范、真实演示截图与 v0.2.0 发布记录;输入总量、单条记录和单快照均有明确资源上限。
  • 持续集成:功能分支只由拉取请求触发检查,main 保留 push 检查,避免同一提交重复运行两套任务。

Test Coverage

  • 测试文件:11 → 17(新增 6 个)。
  • 高风险路径覆盖:CSV/JSON/JSONL 读取与边界、映射与时区、预览/导入/重放/修订、敞口口径、API 状态、报告、前端部分失败与剪贴板拒绝。
  • 浏览器验收覆盖 1440/1280/1024/900/899px、空状态、部分失败、API 明细和无横向溢出。

Pre-Landing Review

  • 审查发现并修复 1 个资源边界问题:读取前的 stat 检查不足以约束读取期间增长或替换的文件;现在三类来源在实际读取过程中持续执行总字节限制,JSON 使用有界二进制读取。
  • SQL 参数化、事务回滚、枚举消费者、时间边界、原始证据泄漏与 API 错误语义均已逐项检查,无未解决问题。
  • 独立 Codex CLI 审查因本机安装缺少可执行文件而不可用,未把该项计为通过。

Design Review

  • 浏览器 QA 健康度 100/100。
  • 修复剪贴板权限被拒绝时的静默失败,现在会提示用户手动复制。
  • 900px 及以上为明确支持范围,899px 显示宽度说明。

Eval Results

没有修改提示词或模型调用,跳过模型评测。

Scope Drift

范围检查通过。没有加入券商直连、订单执行、成交重建、因子 Beta、VaR、压力测试、告警派发或 AI 数据外发。

Plan Completion

v0.2 实施计划 9/9 项完成:契约、映射、来源读取、版本化导入、敞口分析、API、报告/演示、前端和文档/验收均有对应实现与测试。

Verification Results

  • make verify:160 个 Python 测试通过,17 个前端测试通过。
  • Python ty、TypeScript tsc --noEmit、Vite 生产构建通过。
  • OpenAPI 重新生成后无差异,工作树干净。
  • 合成数据端到端路径和真实浏览器页面已验收。

Test plan

  • CSV / JSON / JSONL preview 与正式导入
  • 幂等重放、晚到修订、未来快照和严格身份选择
  • 仓位覆盖、集中度、分类敞口和证据引用
  • API 契约、前端类型、页面状态和报告输出
  • 资源上限、安全错误和原始证据不经 API 返回

Generated with Codex.

@elexingyu
elexingyu merged commit 0499848 into main Jul 20, 2026
2 checks passed
@elexingyu
elexingyu deleted the codex/v0.2-position-ingestion branch July 20, 2026 11:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant