Commit Graph
515 Commits
Author SHA1 Message Date
github-actions[bot] 29f35c5c87 chore: update manifest image to 1.0.320 [skip ci] 2026-05-02 10:40:54 +00:00
junv 68dd32d2cd update performance chart logic! 2026-05-02 20:36:32 +10:00
github-actions[bot] f60c6bff67 chore: update manifest image to 1.0.319 [skip ci] 2026-04-28 04:21:44 +00:00
junvandGitHub e5ea1e9bf4 Merge pull request #85 from wahyd4/feature/invest-portfolio
fix: remove duplicate serializer classes causing 500 on Transaction API
2026-04-28 14:17:12 +10:00
OpenClaw Sub-agentandCopilot 5125e69db5 fix: remove duplicate serializer classes causing 500 on Transaction API
The serializers.py file had two issues:
1. A second definition of TransactionSerializer that included a
   non-existent 'price_per_share' field, overriding the correct one
   and causing 500 errors on GET/POST /api/invest/transactions/.
2. Duplicate AIHoldingInputSerializer and AIUpdateSerializer blocks
   that were redundant (same content as the first definitions).

Removed all duplicate class definitions, leaving only the correct
single definitions that match the Transaction model fields.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-28 14:15:37 +10:00
github-actions[bot] 59794d9ddb chore: update manifest image to 1.0.317 [skip ci] 2026-04-25 02:03:08 +00:00
junv e82a9c285e Update invest UI 2026-04-25 11:58:42 +10:00
junv 748a39975f Fix snapshot! 2026-04-25 11:58:42 +10:00
github-actions[bot] 0c4918db82 chore: update manifest image to 1.0.315 [skip ci] 2026-04-25 01:04:11 +00:00
junv 971fa992dc fix: pull --rebase before manifest push to avoid rejection 2026-04-25 11:00:34 +10:00
junv 9646cd7c7a fix: derive portfolio header change from sum of per-stock changes for consistency 2026-04-25 10:58:24 +10:00
github-actions[bot] b4a02654d0 chore: update manifest image to 1.0.313 [skip ci] 2026-04-25 00:50:21 +00:00
junv f3e9e13297 fix: compare live portfolio value against last week snapshot (not this week) 2026-04-25 10:46:55 +10:00
junv 18c5a554d2 feat: show dollar + % week change per stock in portfolio table 2026-04-25 10:45:30 +10:00
junv 3acaa328cb feat: add per-stock weekly price change column to portfolio table 2026-04-25 10:42:21 +10:00
junv d4183f30e6 fix: show live values and correct change% on invest dashboard cards 2026-04-25 10:40:46 +10:00
github-actions[bot] eb02eca719 chore: update manifest image to 1.0.309 [skip ci] 2026-04-18 13:45:58 +00:00
junvandGitHub c0093ac6ab Merge pull request #83 from wahyd4/feature/invest-portfolio
fix: API bugs in invest portfolio
2026-04-18 23:42:21 +10:00
github-actions[bot] 328ec3173f chore: update manifest image to 1.0.308 [skip ci] 2026-04-18 13:35:37 +00:00
junv e9f7c90420 add transaction history section to invest dashboard 2026-04-18 23:29:56 +10:00
OpenClaw Sub-agent aee64a6df8 fix: remove duplicate PortfolioViewSet and add missing add_transaction helper 2026-04-18 23:24:38 +10:00
github-actions[bot] 52becdeaab chore: update manifest image to 1.0.306 [skip ci] 2026-04-18 13:07:28 +00:00
junv 8209ac34c7 fix weekly overview: use asof snapshot lookup and 5-day gap for last_week 2026-04-18 23:03:33 +10:00
github-actions[bot] e7d24eb781 chore: update manifest image to 1.0.303 [skip ci] 2026-04-18 13:02:49 +00:00
junv 56bb5df57c cache benchmark prices in DB, refresh weekly 2026-04-18 22:58:25 +10:00
junv 221cdcdbee add yfinance dependency 2026-04-18 22:56:16 +10:00
github-actions[bot] f96a6e0a4a chore: update manifest image to 1.0.302 [skip ci] 2026-04-18 12:47:27 +00:00
junv 3c2d97b31d update ui 2026-04-18 22:43:58 +10:00
junv b345534277 update dockerfile 2026-04-18 22:43:58 +10:00
junv 028b2eda76 Update ui 2026-04-18 22:43:58 +10:00
github-actions[bot] 401836041d chore: update manifest image to 1.0.301 [skip ci] 2026-04-18 12:34:22 +00:00
junv f6f9bd167d fix build 2026-04-18 22:30:41 +10:00
junvandGitHub 55c9285967 Merge pull request #82 from wahyd4/feature/invest-portfolio
feat(invest): Add investment portfolio management feature
2026-04-18 22:26:46 +10:00
junv 93bc6bd1e5 Update 2026-04-18 22:25:55 +10:00
junv a5e9fe9cbb Update UI 2026-04-18 22:24:17 +10:00
junv e202304043 ui update 2026-04-18 22:16:45 +10:00
junv 830171b38a UI update 2026-04-18 22:04:01 +10:00
junv d933a99b8d Update logic 2026-04-18 22:01:34 +10:00
OpenClaw Sub-agent c34806a2e6 feat(invest): simplify model - Portfolio/Stock/Transaction, real-time P/L via yfinance 2026-04-18 21:25:48 +10:00
junv f44d76e9ad Rebase 2026-04-18 14:19:51 +10:00
OpenClaw Sub-agent 8d05a11eb6 feat(invest): Add investment portfolio management feature
- Portfolio management (MOMO, IBKR personal, IBKR Yanhua)
- Stock holdings with transaction history (buy/sell)
- Weekly AI report generation
- Real-time price cache via Finnhub API
- Dashboard with tree view and performance charts
- REST API with AI-friendly batch update endpoint
- Management command for scheduled report generation

For大哥's personal investment advisor system.
2026-04-18 11:26:48 +10:00
github-actions[bot] 0b9534668e chore: update manifest image to 1.0.296 [skip ci] 2026-04-16 07:10:56 +00:00
junvandCopilot 11fa2ad673 routermon: replace ISP column with Target Service badge in WAN table
- Remove ISP column (always empty with local MMDB — no ISP data)
- Add Target Service column with color-coded badges (SSH/RDP/VNC/SMB=red,
  HTTP/HTTPS=blue, MySQL/PostgreSQL/Redis/MongoDB=purple, SMTP/POP3/IMAP=green,
  DNS=yellow, FTP=orange)
- Restore inline service label in Dst Port cell (e.g. '22 SSH')
- Expand port mapping: 21 ports covered (FTP, Telnet, SMTP, DNS, POP3,
  IMAP, SMB, MSSQL, MySQL, RDP, PostgreSQL, VNC, Redis, HTTP-alt,
  HTTPS-alt, Elasticsearch, MongoDB)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-16 17:06:55 +10:00
github-actions[bot] f8a341f932 chore: update manifest image to 1.0.294 [skip ci] 2026-04-16 06:49:42 +00:00
junvandCopilot 3955e95b9e geo: replace ip-api.com with local DB-IP City Lite MMDB
- Rewrite nginxmon/geo.py to use maxminddb + DB-IP City Lite MMDB
  (https://cdn.jsdelivr.net/npm/dbip-city-lite/dbip-city-lite.mmdb.gz)
  instead of ip-api.com HTTP API — eliminates all network timeouts and
  rate-limit issues; lookups are now sub-millisecond in-process
- Keep _lookup_batch() signature unchanged so routermon receiver
  requires no changes
- MMDB downloaded on first use (lazy) and refreshed monthly via
  APScheduler; reader cached module-level (thread-safe for reads)
- Add management command: manage.py download_geo_db
- Update k8s init container to download MMDB on first deploy if absent
- Add maxminddb==3.1.1 dependency

CC BY 4.0 — DB-IP (https://db-ip.com)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-16 16:44:02 +10:00
github-actions[bot] c66295cb87 chore: update manifest image to 1.0.293 [skip ci] 2026-04-16 06:39:42 +00:00
junvandCopilot 60dd5aeffb routermon: break chunk loop early when circuit breaker fires
Stop sending further API requests mid-batch once the backoff is
triggered, saving remaining missing IPs as empty placeholders
immediately instead of waiting for them to timeout one-by-one.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-16 16:35:00 +10:00
github-actions[bot] 52c39ebdb1 chore: update manifest image to 1.0.292 [skip ci] 2026-04-16 06:30:02 +00:00
junvandCopilot dde1c6640c routermon: add circuit breaker for ip-api.com geo lookups
After _GEO_MISS_THRESHOLD (2) consecutive large all-empty API responses,
assume ip-api.com is unreachable and enter a 5-minute backoff.
During backoff all missing IPs are immediately saved as empty IPGeoCache
placeholders so they are not re-queued. Resets automatically when the
backoff expires and any result is returned.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-16 16:24:33 +10:00
github-actions[bot] f8ee2fe2a7 chore: update manifest image to 1.0.291 [skip ci] 2026-04-16 06:17:09 +00:00