fix(movements): allow the movements path, and describe its one cache entry

- The session client's new read-path allowlist (#78) gains
  `/insider/company/majorholder?`, the one endpoint movements reads; without
  it every live movements query would fail before leaving the process. The
  mock does not go through the client, so its tests could not show this.
- docs/ARCHITECTURE.md described one cache entry per page: a query's pages
  are read and cached together, keyed by the page count, and a failed later
  page returns the rows before it with `incomplete` (Pullfrog on #80).

Claude-Session: https://claude.ai/code/session_01RqPPVeVDrnLoP7NUZmLRxY
This commit is contained in:
Rasyidan Akbar F. 2026-11-04 20:44:51 +07:00
commit 8f5c56e464
2 changed files with 14 additions and 5 deletions

View file

@ -304,10 +304,12 @@ WIB as the fallback.
- Shareholder movements (`movements`, `api/stockbit/movement.rs`) read
`/insider/company/majorholder`: IDX insider disclosures and KSEI 5% holder
changes, 50 rows a page, filtered by Stockbit (`symbol`, `date_start`,
`date_end`, `insider` (holder id), `action_type`, `source_type`). Each page
is cached an hour under `stockbit-movements`, keyed by every filter and the
page. `ownership movements` and `get_shareholder_movements` read up to 10
pages; the KSEI register in SQLite is not involved.
`date_end`, `insider` (holder id), `action_type`, `source_type`).
`ownership movements` and `get_shareholder_movements` read up to 10 pages
as one answer, cached an hour under `stockbit-movements`, keyed by every
filter and the page count. If a page after the first fails, the rows read
before it come back with `incomplete` set and nothing is cached. The KSEI
register in SQLite is not involved.
### Capability Gating
```