-
Notifications
You must be signed in to change notification settings - Fork 54.3k
Feature/dev #1272
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Feature/dev #1272
Changes from all commits
Commits
Show all changes
93 commits
Select commit
Hold shift + click to select a range
369c1e4
fix: silence LiteLLM log noise, deduplicate realtime quotes, fast-fai…
rex0104 9744c86
feat: add startup schema migration infrastructure
rex0104 52e1f83
feat: add User, UserWatchlist, SharedReport ORM models
rex0104 42fdc39
feat: add UserService for registration, login, password change
rex0104 a3a3b96
feat: add user_id-based session create/verify to auth module
rex0104 6f9811e
refactor: auth middleware uses user sessions, enforces when users exist
rex0104 f8514c6
feat: multi-user auth API — register, login, status with hasUsers
rex0104 63af21b
feat: first-user data claim — orphan rows assigned on first registration
rex0104 b5ebd97
feat: watchlist API — add, remove, list per-user favorites
rex0104 1c17363
feat: thread user_id through repositories, services, and API endpoints
rex0104 74b71d5
feat: report sharing API — create, view, list, revoke public share links
rex0104 7fa715d
feat: frontend multi-user auth — register page, email login, routing
rex0104 6cc587c
feat: share UI — ShareButton, public SharePage with brand header
rex0104 39bc3d6
feat: watchlist UI — favorites panel on homepage with star toggle
rex0104 d9430b7
feat: UserMenu dropdown in Shell — nickname, change password, logout
rex0104 868d50b
fix: update existing tests for multi-user auth model
rex0104 382d697
docs: changelog and env.example for multi-user, watchlist, sharing
rex0104 50453f8
feat: per-user settings storage — each user has isolated config
rex0104 c0d539f
docs: add per-user settings to changelog
rex0104 c921381
fix: show watchlist panel with empty-state hint instead of hiding it
rex0104 e63cb08
fix: align UserMenu trigger with nav item sizing and add top border s…
rex0104 92beffd
feat: promote watchlist to dedicated page with sidebar nav entry
rex0104 3c87908
fix: move theme toggle from sidebar to page top-right corner
rex0104 87ba07e
docs: watchlist enriched page design spec with portfolio linkage
rex0104 d4bd7c9
feat: watchlist groups schema — migration v3, UserWatchlistGroup model
rex0104 43e897d
feat: enriched watchlist API with price, analysis, sparkline, positio…
rex0104 4e7b33b
feat: enriched watchlist page — sparkline, analysis, positions, groups
rex0104 7def04e
fix: enrich timeline with analysis summary, theme toggle icon-only on…
rex0104 68df065
fix: A-share market detection with .SZ/.SH suffix, trim share API pay…
rex0104 49dd072
feat: watchlist uses realtime quotes with Tushare auto-priority when …
rex0104 0711a05
fix: correct DataFetcherManager import for realtime quotes
rex0104 f001018
fix: thread user_id through analysis pipeline, restore star toggle on…
rex0104 959048b
fix: pass user_id through task_queue and AnalysisService to pipeline
rex0104 375a77e
fix: pass user_id in sync analysis path (_handle_sync_analysis)
rex0104 53d229f
docs: design spec for scheduled analysis and onboarding wizard
rex0104 d3d7108
feat: add schedule and onboarding columns to users table (migration v4)
rex0104 7d7da8d
feat: onboarding API — status check and completion endpoint
rex0104 80f026b
feat: onboarding wizard — 3-step guided setup for new users
rex0104 54fee25
feat: per-user schedule service and API for watchlist auto-analysis
rex0104 314fa0a
feat: schedule settings UI and watchlist schedule badge
rex0104 60d74ef
docs: changelog for watchlist enrichment, onboarding wizard, schedule…
rex0104 47d951f
perf: parallel realtime quotes with 60s cache for watchlist enrichment
rex0104 2a0da63
fix: replace Unicode escapes with actual Chinese text in watchlist sc…
rex0104 6580dcd
feat: activate per-user scheduled analysis with notification routing
rex0104 2f41f6e
feat: forgot-password / reset-password flow
rex0104 bc887b9
feat: mobile adaptation — bottom tab bar, responsive watchlist, OG me…
rex0104 0720683
feat: use CN stock color convention (up=red, down=green) for price ch…
rex0104 219c90b
feat: embed K-line chart in report (candlestick + MA5/MA20 + volume, …
rex0104 aa81d5b
fix: consume ?q= URL param in HomePage to analyze correct watchlist s…
rex0104 d236a65
docs: add graphify knowledge graph rules to AGENTS.md
rex0104 76c6e2f
fix: watchlist analyze shows existing history instead of triggering n…
rex0104 3e596b1
feat: 3-column layout with analyzing banner and market sentiment panel
rex0104 982863e
feat: show analyzing skeleton placeholder when task running but no re…
rex0104 4052ffc
feat: remove inline market sentiment from report, keep right column p…
rex0104 206f409
feat: align three columns under shared header, merge banner and actio…
rex0104 3ac30be
fix: sidebar top-aligned to page edge, active tab clipped within roun…
rex0104 d7793a1
fix: align sidebar top padding with search header height
rex0104 d38aa34
feat: nickname display and editing; fix strategy price display in sid…
rex0104 3461161
feat: add chartAnnotations utility with TDD tests
rex0104 4b4dbe5
fix: use trailing 10-element window for MA20 slope in determineTrend
rex0104 dd96b77
feat(chart): add annotation rendering to KLineChart
rex0104 d482c08
fix: KLineChart annotation quality — use ref for onDataLoaded, baseVa…
rex0104 902a272
feat: wire AI annotations from report data to K-line chart
rex0104 21f5433
feat: add 4 preset stock screening strategies with tests
rex0104 3e8b8d5
feat: add screener service with async orchestration and LLM summaries
rex0104 28ead81
feat: add screener SSE API endpoint and strategy list
rex0104 41e4759
feat: add screener API module and components
rex0104 2c21e97
feat: add DiscoverPage for AI stock screener
rex0104 e05194c
feat: add discover page to navigation and routing
rex0104 951ef16
fix: move onDataLoaded ref update into useEffect to satisfy lint
rex0104 87db6f5
docs: add design spec and implementation plan for K-line annotations …
rex0104 b9a443a
fix: use addBaselineSeries for KLineChart support/resistance bands
rex0104 3da6e87
feat(chat): inline report-scoped chat drawer on HomePage
rex0104 2d23ebe
feat(dx): smoother first-run — dep-error hint, 404 shows path, README…
rex0104 ae124b0
docs: design + plan for watchlist reanalyze, identity normalization, …
rex0104 50c1472
feat(identity): add stock_identity_service with StockIdentityNotFound
rex0104 550583d
feat(identity): support HK/US prefixes and akshare fallback test
rex0104 4dbabc6
fix(identity): align Task 2 tests to codebase canonical form (no .HK …
rex0104 1b2ea09
feat(watchlist): normalize stock identity on add (code is source of t…
rex0104 1d11e41
feat(analysis): normalize stock identity before persisting history
rex0104 43c7842
fix(analysis): override result.name with canonical name in sync path
rex0104 2e64455
fix(analysis): thread canonical_name into pipeline so AnalysisHistory…
rex0104 c4c07c2
feat(watchlist): split analyze button into history + reanalyze
rex0104 4500586
feat(home): honor ?force=1 query param to trigger fresh analysis
rex0104 2d4164b
fix(layout): unify tab pages to AppPage, drop 100vh hacks
rex0104 72f6178
chore(api): register global StockIdentityNotFound handler as safety net
rex0104 323b459
docs(changelog): record watchlist/identity/layout changes
rex0104 e9c6a90
feat(web): support deploying under a configurable sub-path via VITE_B…
rex0104 08d563a
fix(web): stock index fetch must respect base path for sub-path deploys
rex0104 f350c43
chore: add restart.sh for production deploy
rex0104 7e84b9c
chore: add restart.sh for production deploy
rex0104 4fdfc6b
chore: ignore .server.pid runtime file
rex0104 34d7eb3
chore: bind to port 3001 per service registry
rex0104 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the
has_users()database query throws (e.g. transient DB outage, migration mismatch), this returnsFalse, anddispatch()then skips authentication for every/api/v1/*route. That turns backend failures into an authorization bypass, exposing protected APIs exactly when infrastructure is unstable. The middleware should deny by default (or return 503) when user existence cannot be determined.Useful? React with 👍 / 👎.