Commit Graph
71 Commits
Author SHA1 Message Date
eezd dd50cb7df8 fix(news): preserve event scope and bound research context
Development CI / check-and-build (push) Successful in 1m57s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 2m30s
Select assignment-specific keyword snapshots, improve model-token recall and calendar dates, and reuse supplied originals. Keep extraction boundaries while checking compaction against the final research context.
2026-11-04 15:40:59 +08:00
eezd 4929a32a0a feat(news): index news packages and research persistent events
Extract reusable literal keywords once per source revision, assign complete news packages to long-lived events, and research all event members with immutable evidence and references.

Add additive research storage, vocabulary snapshots, the two-stage workspace, isolated acceptance coverage, and a paused rollout with an initial fixed 50-news production trial.
2026-11-04 12:09:58 +08:00
eezd be3cf45362 fix(news): exclude null AI results from homepage reading inputs
Development CI / check-and-build (push) Failing after 1m23s
Development CI / deploy-development (push) Skipped
GitHub Git mirror / mirror (push) Successful in 6s
2026-11-02 21:20:44 +08:00
eezd 8f1d3b249b fix(news): harden exclusive batch completion and timeline evidence
Development CI / check-and-build (push) Successful in 2m10s
GitHub Git mirror / mirror (push) Successful in 7s
Development CI / deploy-development (push) Successful in 2m31s
2026-11-02 20:53:53 +08:00
eezd 8240ec44d1 fix(news): keep contextual opinions within the primary news package
Development CI / check-and-build (push) Successful in 2m8s
GitHub Git mirror / mirror (push) Successful in 5s
Development CI / deploy-development (push) Successful in 2m31s
2026-11-02 19:35:37 +08:00
eezd 3606a4f112 fix(news): compact large synthesis inputs by package
GitHub Git mirror / mirror (push) Successful in 5s
Development CI / check-and-build (push) Successful in 2m2s
Development CI / deploy-development (push) Successful in 2m31s
2026-11-02 19:17:14 +08:00
eezd 531ef724f3 feat(news): tune package research and add exclusive historical rechecks
Development CI / check-and-build (push) Successful in 3m17s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 4s
2026-11-02 19:14:12 +08:00
eezd adb73f956b fix: harden news analysis and deploy verified image tags
Development CI / check-and-build (push) Successful in 2m4s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 2m30s
2026-11-02 15:37:42 +08:00
eezd 0a150eca0f fix: preserve bigint batch identities in news AI queries
Development CI / check-and-build (push) Successful in 2m28s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 2m30s
Use BIGINT casts for JSON batch references in queue filters, retries and legacy job reconciliation. Cover real large batch references and absent 64-bit IDs in isolated PostgreSQL acceptance.
2026-11-01 15:13:44 +08:00
eezd b45981ec30 feat: add historical news AI backfill and visible task queue
Development CI / check-and-build (push) Successful in 2m44s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Failing after 7s
Freeze date-range previews and model settings, track per-news progress and downstream targets, and share completion-driven scheduling with realtime analysis.

Prevent overlapping retries for the same news, retain batch queue associations, and refresh selected details with session-safe pagination.
2026-11-01 14:47:54 +08:00
eezd cbd2618a20 feat: bound news AI concurrency with immediate task refill
Development CI / check-and-build (push) Successful in 2m35s
GitHub Git mirror / mirror (push) Successful in 5s
Development CI / deploy-development (push) Failing after 7s
2026-11-01 12:29:03 +08:00
eezd f1d060d475 feat: organize news packages into verified event timelines
Development CI / check-and-build (push) Successful in 2m33s
GitHub Git mirror / mirror (push) Successful in 5s
Development CI / deploy-development (push) Failing after 7s
Add optional events, evidence-backed timelines, versioned package corrections and bounded historical reprocessing. Keep independent packages readable and isolate retries by failed stage. Configure reasoning effort per model stage and refresh default news Skill drafts without publishing.
2026-11-01 11:46:11 +08:00
eezd 80d266dba7 Add three-stage cross-domain news research and reading briefings
Group original news into tagged fact packages, review each package with evidence and read-only research, and build complete 72-hour reading lists with independent model selections.

Add paused RSS/Atom subscriptions, news-scoped Skills, versioned analysis records, and locked deployment support for SearXNG. Preserve original news and keep live migration and legacy AI cleanup separately authorized.

Validate with 604 backend tests, 49 frontend tests, 19 CI control tests, lint, type checks, production build, and disposable PostgreSQL migration and three-stage smoke checks.
2026-10-31 22:08:59 +08:00
eezd c79522ee7c Fix Jin10 calendar backfill, retries and withdrawn schedules
Development CI / check-and-build (push) Failing after 2m46s
Development CI / deploy-development (push) Skipped
GitHub Git mirror / mirror (push) Successful in 6s
Refresh historical previews after the local day ends and isolate retries by date without resetting browser scheduling progress.

Preserve withdrawal and restoration revisions, exclude withdrawn fallback values, and cover the behavior with isolated regression checks.
2026-10-31 13:40:38 +08:00
eezd e840557d22 Add authenticated global economic calendar with Jin10 fallback
Collect macroeconomic releases, events and holidays through the official browser SDK with resumable history from 2025. Preserve evidence, revisions and observation times, and merge verified series with official fields taking priority.

Add category filters, field provenance, coverage and connection status. Verify calendar persistence and deployment recovery in isolated acceptance checks.
2026-10-31 12:57:14 +08:00
eezd 57424fd661 Handle Jin10 QR expiration reported by upstream 2026-10-31 10:57:37 +08:00
eezd 4184bc68e6 Add official monthly ADP calendar collection 2026-10-31 10:57:31 +08:00
eezd 8d6cbeeb40 Add official DOL and EIA economic calendar feeds
Collect weekly claims and precise commercial petroleum inventory changes with official schedule exceptions, distinct reporting periods, raw evidence, and revisions.

Extend explicit history backfills without changing their default source scope. Report archive gaps and reject mismatched weeks instead of filling current values into history.
2026-10-30 23:11:40 +08:00
eezd 62d8c7eb65 Add Jin10 QR connection with cancellable login tasks
Store account credentials encrypted and bind QR tasks to administrator sessions. Report calendar access as awaiting validation after login.

Prevent late polls and status responses from overwriting cancelled or newer operations, and clean up QR tasks when settings unmount. Cover authentication, cancellation races, and stale frontend responses.
2026-10-30 22:42:26 +08:00
eezd 5a991e3d29 Clarify uncertainty and direction rules for news analysis
Development CI / check-and-build (push) Successful in 56s
GitHub Git mirror / mirror (push) Successful in 5s
Development CI / deploy-development (push) Successful in 2m28s
2026-10-30 19:31:08 +08:00
eezd 376d07250e Add provider model catalogs to news risk settings
Development CI / check-and-build (push) Successful in 1m30s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 2m28s
2026-10-30 19:11:44 +08:00
eezd b54863f40a Clarify news risk evidence validation
Development CI / check-and-build (push) Successful in 55s
GitHub Git mirror / mirror (push) Successful in 5s
Development CI / deploy-development (push) Successful in 2m29s
2026-10-30 19:08:09 +08:00
eezd b801c83c60 Fix news risk window query parsing
Development CI / check-and-build (push) Successful in 55s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 3m9s
2026-10-30 18:57:04 +08:00
eezd 91bc65df75 Refresh visible news risk ratings after analysis
Development CI / check-and-build (push) Successful in 1m29s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Failing after 5s
Poll only visible news IDs and update ratings for matching revisions without replacing the feed, scrolling, or clearing pending-news notifications. Bind refresh results to the page and session, and cover stale responses and bounded ID queries.
2026-10-30 18:41:03 +08:00
eezd 4f43ca8b57 Add AI news risk analysis and dashboard
Analyze news revisions with independent model settings, evidence-backed risk ratings, event grouping, and rolling market outlooks. Add a default homepage, archival history, pending-result refresh, and isolated regression coverage.

Keep analysis disabled until explicitly enabled. Require a separately authorized schema migration before deployment and preserve compatibility with the previous six-service instance.
2026-10-30 18:35:49 +08:00
root b4f29d4966 Add Gitea CI and automatic dev deployment
Main CI / check-and-build (push) Successful in 1m18s
Development CI / check-and-build (push) Successful in 34s
GitHub Git mirror / mirror (push) Successful in 7s
Development CI / deploy-development (push) Successful in 25s
2026-10-29 21:30:28 +08:00
eezd 66e811b23b Fix European economic archive parsing
Handle German CPI corrections, year-end wording and monthly employment titles, and accept ONS labour-market titles without a colon.

Select EA21 rows when published and verify unemployment totals against the bulletin overview. Add real archive fixtures covering the backfill failures.
2026-10-27 16:19:18 +08:00
eezd 1b2076a41b Parse historical Eurostat GDP and unemployment wording
Match GDP table labels without case sensitivity and accept the observed seasonally-adjusted wording. Add real 2025 announcement excerpts and verify dates, previous values, and rejection of non-GDP tables.
2026-10-26 22:09:35 +08:00
eezd 2dedaf3127 Limit German archive pagination to filtered results
Exclude the independent latest-release list from archived links and date boundaries. Cover stopping before the requested year, continuing within range, and rejecting pages without a filtered result block.
2026-10-26 22:07:42 +08:00
eezd 9f5b3550fa Backfill Michigan calendar results from official archives
Fetch annual report indexes, skip stored PDFs, and stop the source on rate limits. Match report periods, stages, and publication dates to official schedules while preserving received results and keeping revised monthly series separate.
2026-10-26 17:20:19 +08:00
eezd da289686be Parse official Michigan survey archive reports
Extract original preliminary and final results with publication dates and validated table headers. Add annual report discovery and real report fixtures covering cross-month releases and PDF text layout differences.
2026-10-26 17:19:37 +08:00
eezd 0886e74e21 Preserve received calendar results when latest pages roll over
Keep previously captured BLS and Michigan releases valid when their rolling latest pages advance to a newer period or stage. Continue reporting missing historical releases explicitly and never substitute newer values.

Verify unchanged values, first-arrival timestamps, revisions, and cleared source errors with isolated worker tests. Run all 74 calendar and history tests against the staged snapshot.
2026-10-26 14:24:23 +08:00
eezd 641351a002 Cancel remaining entries before fetching break-even fees
After the first take-profit fills, cancel outstanding entry orders before calculating remaining-position protection. Missing fee records still fail explicitly and leave existing stops in place without allowing the old entry to remain open.

Cover complete and incomplete fees on Binance and Bybit, including cancellation before the recovery fetch and no duplicate cancellation. Verify the staged snapshot with 61 trading safety and plan tests.
2026-10-26 14:23:51 +08:00
eezd d1a6325ed7 Fix workspace detail races and provider default handling
Keep analysis and Skill detail responses bound to the selected request, reject stale publish confirmations, and clear failed position-history results with retry controls.

Reject removal of the current default provider with HTTP 409 and reflect that contract in the form. Track the OpenAPI page and API module by restricting the docs ignore rule to the repository root.

Validate the staged provider contract with four isolated tests. Reuse the matching candidate's frontend lint, type check, 26 test groups, and production build results.
2026-10-26 14:22:40 +08:00
eezd f67a8ca402 Align backend authentication and API response contracts
Replace cookie authentication with revocable Bearer sessions, optional one-use PNG challenges, bounded login limits, and short-lived market WebSocket tickets. Keep captcha disabled by default.

Standardize ordinary JSON responses while preserving HTTP statuses, raw OpenAPI, redirects, SSE, and WebSocket semantics. Revoke long connections with their owning session.

Expose official calendar data and collector status to the frontend and research tools, support bilingual news topics, and keep summaries and forward-only labels explicit. Verify the staged snapshot with all 305 backend tests.
2026-10-26 12:04:21 +08:00
eezd b9d7497a7d Protect remaining positions using actual entry costs
Calculate remaining-position break-even from actual entry fees and estimated closing fees, preserve confirmed tighter stops, and keep existing protection when fill fees are incomplete.

Build historical trade summaries from execution sizing when an acceptance fill has no setup. Clarify unverified price zones and avoid suggesting fabricated structure to satisfy validation.

Verify the staged snapshot with 57 trading safety and plan tests.
2026-10-26 12:03:28 +08:00
eezd e8ca4daa0e Add official US and European collection and calendar storage
Collect official RSS and Atom summaries, preserve historical captures, and poll macro releases with bounded cadence and Retry-After handling. Separate news collectors from the economic calendar worker.

Track statistical periods, publication stages, first observations, revisions, and current official series. Include explicit migration files and isolated archive, parsing, and import tests; no migration or import is executed by this commit.

Keep dependency declarations and lockfile together for PDF archives and the upcoming captcha integration. Verify the staged snapshot with 90 focused tests.
2026-10-26 12:03:00 +08:00
eezd 5fa1e37fd4 Preserve public summaries for unavailable historical paid articles
Validate Wallstreetcn business responses and retain list provenance for historical paid articles whose detail API returns code 50000. Keep other failures explicit and cover the boundary with eight isolated tests.
2026-10-26 12:01:29 +08:00
eezd 77b33e5e77 Refresh news metadata independently of content revisions 2026-10-20 18:51:39 +08:00
eezd ab6c875b1f Serialize chat resets with message generation 2026-10-20 18:50:05 +08:00
eezd 193af01913 Validate reevaluation conditions against their declared timeframe 2026-10-20 18:47:23 +08:00
eezd 285b3952d7 Support selectable demo exchanges and configurable analysis limits
Persist manual requests until exchange confirmation, preserve stop protection, and reconcile fills before settling plans. Tighten model stream, crawler, skill, research accounting, and frontend race handling, with regression coverage. Keep queued analyses pending until a fresh account snapshot is available.
2026-10-20 18:45:00 +08:00
eezd fcaedfb358 Show recent filled plans in the demo analysis prompt
List each plan filled in the last 24 hours with its zone, entry, fill and
close times, close reason and net result, so the model can apply the
skill rules on consecutive stops, re-entry after a stop and the daily
entry cap.
2026-10-17 15:12:10 +08:00
eezd 23a9a5175e Record news signals forward for a no-trade edge test
The trader labels crypto news published after 2026-10-16 15:00 with
the configured model (category and BTC direction) and, four hours
later, backfills BTC/ETH 1m opens at publish, +5m, +1h and +4h from
the klines table. A drawer on the trading page shows the cumulative
returns of trading the labelled direction, after fees. Nothing is
traded; this only collects an out-of-sample record.
2026-10-16 14:47:06 +08:00
eezd 0397e30870 Run demo trading and allocate capital per symbol
Move running, running_changed_at and capital_usdt from the account to
each trading symbol; the migration copies the account capital to every
symbol and leaves them all stopped. Each symbol is sized against its
own capital with a 3x notional cap, and the capitals together must not
exceed account equity. Scheduling, dry-run decisions and the executor
follow the per-symbol flag. The global start/stop button is replaced by
start/stop and capital controls on each symbol's plan card.
2026-10-16 13:44:02 +08:00
eezd e3242f2b7a Add per-symbol close position and clear orders actions to demo trading
The API queues the request in Redis and the executor applies it on its
next pass, so it never races reconciliation. Both actions cancel every
open order on the symbol, including manual ones, and market-close any
position. Plans end as manual_close or manual_cancel without queueing
a new analysis. Closing also stops trading so the engine does not
reopen right away.
2026-10-16 13:25:59 +08:00
eezd 010d89e0f5 Rebuild position history from Binance fills
Sync account fills into a new trading_fills table every 60s and
reconstruct closed positions from them, so positions opened outside
the program are included and external closes get an exit price.
Positions link to plans by order id. The history drawer gains symbol,
close-date, outcome and source filters, a summary bar and pagination.
2026-10-16 11:57:45 +08:00
eezd a2e51a3011 Guard the news detail panel against stale responses and load errors
The detail is now a persistent side panel, so quick clicks can interleave
requests: only the latest request's result is applied, and a failed load
shows an error state with a retry button instead of spinning forever.

Also correct the position history comments: only plans from before plan
3.1 could hand their position over to a replacing plan.
2026-10-16 11:05:18 +08:00
eezd fb63ebb697 Add a position history view to demo trading
New GET /api/trading/positions/history lists closed plans (entry filled,
position back to zero) newest first with before/limit paging. Each row
carries the filled quantity, volume-weighted entry and exit prices from
the plan's own fills, the close reason and the realized PnL, commission
and net from the plan result.

The positions panel gets a "历史仓位" button that opens a drawer with the
table, a "load earlier" button and links to each plan's analysis.
2026-10-15 23:10:09 +08:00
eezd 859408386c Revert "Restyle the web UI as a dark trading terminal"
This reverts commit d5fa78f1ad.
2026-10-15 18:44:46 +08:00