mirror of
https://github.com/0xrsydn/idx-cli.git
synced 2026-11-07 09:45:36 +00:00
refactor(core): move ownership queries, import, and sync into idx-core
Phase 3c of docs/DESIGN.md. `ownership` handlers are now argument parsing, one idx-core call, and rendering. - investor.rs: Investor (also Idx::investor()) with releases, ticker, entity, search, cross_holders, concentration, flow, changes, graph, unresolved, map_alias, merge_entities, discover, sync, and import. Import orchestration (input resolution, download, SHA-256 dedup, PDF/XLSX/archive parsing, entity resolution, release write) moves from the CLI unchanged. - Typed inputs: ImportSource, HolderSource, ConcentrationRank, and parse_report_family, with the same error messages. - CoreConfig gains an ownership_db override; db::open_db_at opens an explicit path. idx-cli no longer depends on rusqlite, sha2, or ureq at runtime. - Behavior note: an invalid `ticker --source` or `concentration --by` is now rejected before the database file is opened (and created); the error and exit code are unchanged. - Fix: building idx-cli without the ownership feature no longer warns about the ownership-only `blue` style. All 143 goldens unchanged; 170 core + 7 CLI unit tests and 62 CLI tests pass; clippy clean for default, release, testing, and no-default feature sets. Live A/B against main: 16/16 stocks identical; ownership discover got IDX 403 on both (exit 4 vs 1 is the phase 1 change). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
86cb1b4b7c
commit
1d8b615857
12 changed files with 774 additions and 490 deletions
|
|
@ -5,7 +5,8 @@
|
|||
The repo is a Cargo workspace with one shared version:
|
||||
|
||||
- `crates/idx-core` (library): the `Idx` entry point with `market()`,
|
||||
`financial()`, and `analysis()` (cache policy and `Fetched<T>` in `client.rs`),
|
||||
`financial()`, `analysis()`, and `investor()` (cache policy and `Fetched<T>` in
|
||||
`client.rs`; ownership queries, import, sync, and discovery in `investor.rs`),
|
||||
providers (`api/`), `analysis/`, `cache`, `config` (`CoreConfig`),
|
||||
`ownership/` (SQLite, parsers, discovery, snapshot sync), `error`, and
|
||||
`runtime` (quiet/info/warn). It owns the shared test fixtures in
|
||||
|
|
@ -14,8 +15,8 @@ The repo is a Cargo workspace with one shared version:
|
|||
color resolution (`config.rs`, `IdxConfig`), and rendering (`output/`). Its
|
||||
`tests/` hold the CLI integration and golden output suites.
|
||||
|
||||
Ownership import/sync orchestration still lives in
|
||||
`crates/idx-cli/src/cli/ownership.rs` until phase 3c of `docs/DESIGN.md`.
|
||||
`crates/idx-cli/src/cli/` holds no fetching, caching, or database logic: each
|
||||
command parses arguments, makes one idx-core call, and renders the result.
|
||||
|
||||
## Domain Map
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# System Design: idx-core and its frontends
|
||||
|
||||
**Status:** Accepted 2026-10-14. Implementation on `refactor/idx-core`; phases 0-2 done.
|
||||
**Status:** Accepted 2026-10-14. Implementation on `refactor/idx-core`; phases 0-3 done.
|
||||
|
||||
## Goal
|
||||
|
||||
|
|
@ -119,8 +119,8 @@ Key decisions:
|
|||
| ownership command orchestration (`cli/ownership.rs`) | `investor` |
|
||||
| `IdxConfig.output`, `no_color` | stay in `idx-cli` |
|
||||
|
||||
After the move, `cli/stocks.rs` and `cli/ownership.rs` should be argument
|
||||
parsing plus a call into core plus rendering.
|
||||
Done in phase 3: `cli/stocks.rs` and `cli/ownership.rs` are argument parsing,
|
||||
one idx-core call, and rendering.
|
||||
|
||||
## Error Model
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue