feat(api): per-client rate limiting In review

feat/rate-limit → main Author: @lin.zhao Reviewer: Agent (static read + test run) Head: a3f9c1e
One blocker before merge: the limiter keys on the proxy IP
Behind the load balancer every request shares req.ip, so all clients drain a single bucket. The bucket map also never evicts. Tests pass because they call the middleware directly, without a proxy hop.
Files changed
–
–
Blocking findings
–
–
Tests
14 / 14
pass locally · no proxy case
Files reviewed
–
No files match this filter