ZhuLinsen/daily_stock_analysis
49.1
Weak · 26 September 2026
206.7k
lines of production code
Python
with TypeScript
4
measurements over time
What this system is
This system is a multi-platform stock analysis and investment decision support platform that aggregates real-time market data, news, and fundamentals to generate AI-driven trading signals. It features a modular multi-agent architecture that synthesizes specialized technical, sentiment, and risk analyses into weighted consensus recommendations, supported by backtesting engines and portfolio management tools. The system delivers these insights through a React-based web interface, an Electron desktop client, and a unified bot interface for messaging platforms like Telegram and Feishu.
Features
Add dark mode support with system preference detection
The application now supports light, dark, and system-following theme modes. A new ThemeProvider component wraps the app to manage theme state using next-themes, defaulting to dark mode while respecting the user's operating system preference. Users can switch themes via a new ThemeToggle component, which is available in default, navigation, and rail variants to fit different UI contexts.
apps/dsa-web/src/components/theme · high confidence
Added branded loading screen for the desktop renderer
The desktop application now displays a styled loading page while the local analysis service initializes. This new \loading.html\ file presents the 'Daily Stock Analysis' title, a pulsing status indicator, and helpful tips regarding API keys and network connectivity. It also includes logic to display specific error messages passed via URL parameters, improving the user experience during startup.
apps/dsa-desktop/renderer · high confidence
Added region selector for market review filtering
Users can now select specific market regions (CN, HK, US, JP, KR) or revert to the server default when viewing market reviews. This new selector component allows toggling between individual markets, selecting all markets, or using the server's default configuration, with the selection state serialized for API requests.
apps/dsa-web/src/components/market-review · high confidence
Added seed data for A-share indices and major Japanese and Korean stocks
The stock index seeds module now includes comprehensive reference data to support A-share index tracking and autocomplete for Japanese and Korean markets. A new index registry (index\_registry.csv) defines canonical codes, display names, and aliases for major Chinese indices such as the Shanghai Composite, CSI 300, and sector-specific indices like CSI Banks and CSI Liquor, sourced from Tencent and East Money. Additionally, new CSV files (stock\_list\_jp.csv and stock\_list\_kr.csv) provide seed data for prominent Japanese companies (e.g., Toyota, Sony, Nintendo) and Korean companies (e.g., Samsung, SK Hynix, LG), enabling improved search and autocomplete functionality for these regions.
_scripts/stock\_index\seeds · high confidence
Initial Docker deployment with non-root security and permission auto-repair
The application now provides a complete Docker deployment package (Dockerfile, docker-compose.yml, and entrypoint script) that builds a multi-stage image using Node 20 for the frontend and Python 3.11 for the backend. A key improvement is the enforcement of non-root execution (user 'dsa') to enhance security, accompanied by an entrypoint script that automatically repairs bind-mount directory permissions to prevent write failures. The configuration also includes specific fixes for efinance cache directory ownership, support for Longbridge OAuth token persistence, and resource limits for the FastAPI server and analyzer services.
docker · high confidence
Initial i18n framework and UI text definitions for the web application
The web application now includes a foundational internationalization structure with the addition of \apps/dsa-web/src/i18n/uiText.ts\. This file defines the supported UI languages (Chinese and English) and provides the complete set of static text strings for the interface, including navigation labels (Home, AI Suggestions, Screening, etc.), common action buttons, theme settings, and specific content for the Login, Home, and Usage pages. This change establishes the text layer required for the UI to render localized content.
apps/dsa-web/src/i18n · high confidence
Introduce API v1 Pydantic schema contracts
The API v1 now exposes a comprehensive set of Pydantic models that define the request and response structures for the platform's core capabilities. This includes schemas for stock and market analysis (with support for async tasks, report languages, and phases), portfolio management (accounts, trades, and positions), decision signals (creation, outcomes, and calibration), and alerting (rules, triggers, and notifications). Additionally, the API defines contracts for backtesting results, data source capabilities, intelligence ingestion, and structured research artifacts, providing a unified and validated interface for all client interactions.
api/v1/schemas · high confidence
Introduce Agent Chat with multi-backend support and conversation persistence
The system now includes a new Agent Chat module that enables multi-turn, LLM-driven stock analysis conversations. This feature introduces a backend-agnostic architecture, defaulting to the LiteLLM integration while also supporting an experimental Codex App Server backend for local code-generation workflows. The module provides persistent conversation history with automatic context compression to manage token limits, and includes a background EventMonitor for real-time price, volume, and sentiment alerts. Users can now engage in continuous, stateful dialogues with the agent, with the system handling session management, tool execution, and result streaming.
src/agent · high confidence
Introduce Electron-based desktop application with auto-update and secure installation
The desktop client now runs on Electron, providing a native cross-platform experience. This release adds an automatic update mechanism that checks for new versions and installs them silently in the background. To ensure stability, the Windows installer (NSIS) has been updated to force per-user installations and block system-protected directories (like Program Files), preventing runtime write failures for configuration and log files. Additionally, the installer includes logic to correctly handle uninstallation of previous versions, even when installation paths contain spaces.
apps/dsa-desktop · high confidence
Introduce Web Alert Center with technical indicator and portfolio rule support
The Web application now includes a new Alert Center, providing UI components to create, list, and review alert rules. Users can define rules for single symbols, watchlists, portfolio holdings, and market regions, covering technical indicators (MA, RSI, MACD, KDJ, CCI), price/volume changes, and portfolio-specific metrics (stop-loss, concentration, drawdown). The interface supports filtering, enabling/disabling rules, and viewing trigger history with status and data quality details.
apps/dsa-web/src/components/alerts · high confidence
Introduce agent trajectory evaluation entry point
Added a new evaluation module under \evals/agent\_trajectory\ that provides a runnable entry point (\run\_eval.py\) to score real agent execution trajectories against golden samples. This includes a pure-function metrics layer (\metrics.py\) that computes quality indicators such as tool hit rates, redundancy, caching, failures, and retries, along with a \golden\_samples.json\ file containing initial test cases for stock analysis tasks.
evals · high confidence
Introduce backtesting engine and market review infrastructure
The system now includes a dedicated backtesting evaluation engine that assesses historical analysis accuracy by comparing operation advice against forward daily price bars, supporting configurable evaluation windows and stop-loss/take-profit logic. Additionally, a comprehensive market review module has been added, enabling daily recap analysis for A-shares, Hong Kong, US, Japan, and Korea markets. This feature uses region-specific strategy blueprints and market profiles to generate structured reports, supported by a new execution lock to prevent overlapping runs and a runtime builder to centralize LLM and search service initialization.
src/core · high confidence
Introduce multi-agent architecture with specialized analysis roles
The agent pipeline now uses a multi-agent structure where distinct specialists handle specific analysis scopes: TechnicalAgent for price and indicator analysis, IntelAgent for news and sentiment, RiskAgent for screening red flags, DecisionAgent for synthesizing final recommendations, and PortfolioAgent for multi-stock allocation. This replaces the previous single-agent approach with a coordinated pipeline that aggregates structured opinions from each specialist to produce more robust and explainable investment decisions.
src/agent/agents · high confidence
Introduce new React web application shell with routing and dashboard components
The web interface now uses a new React-based application structure. This includes a central App component that manages authentication, language settings, and client-side routing for pages such as Home, Chat, Portfolio, Backtest, and Settings. The layout is wrapped in a ThemeProvider and Shell component, and the UI relies on Tailwind CSS with a defined set of design tokens. New reusable dashboard components, including DashboardPanelHeader and DashboardStateBlock, have been added to support the home page layout, accompanied by corresponding unit tests.
apps/dsa-web/src · high confidence
Introduce pluggable multi-strategy skill system with weighted consensus and deliberation
The agent now uses a new modular skill architecture in \src/agent/skills\ where trading strategies are defined as natural-language YAML bundles rather than hard-coded Python logic. A \SkillRouter\ selects skills based on user requests, market regime detection, or defaults, while an \AgentSkillScheduler\ runs them concurrently. Opinions from multiple skills are aggregated by \SkillAggregator\ using performance-based weights to produce a weighted consensus signal. The system also includes a \DeliberationMediator\ to resolve material conflicts between skills and a \StrategyEngine\ to orchestrate the full pipeline, replacing the previous single-strategy approach with a multi-agent deliberation workflow.
src/agent/skills · high confidence
Introduce unified bot command system with multi-platform webhook support
The bot module now provides a structured command infrastructure that unifies message handling across Feishu, DingTalk, WeCom, and Telegram. This change introduces a central dispatcher to parse and route commands (such as /analyze, /market, /batch, /help, and /status), standardized data models for messages and responses to abstract platform differences, and webhook handlers that process incoming requests and manage rate limiting. Users can now interact with the stock analysis features through a consistent command interface regardless of the chat platform used.
bot · high confidence
Introduce unified platform adapter layer for DingTalk, Feishu, and Discord
A new \bot/platforms\ module provides a standardized adapter architecture for external messaging services, allowing the bot to support multiple platforms through a consistent interface. The module includes a base \BotPlatform\ class that defines core behaviors such as signature verification, message parsing, and response formatting. Specific implementations are added for DingTalk (including a new Stream mode via WebSocket that removes the need for a public IP), Feishu (also supporting Stream mode with Markdown reply formatting and international domain resolution), and Discord (with strict Ed25519 signature verification and deferred interaction handling). This change centralizes platform-specific logic, improves security through rigorous signature checks, and enables flexible connection modes for DingTalk and Feishu.
bot/platforms · high confidence
Introduce web-based run-flow diagnostics and topology viewer
A new RunFlow panel has been added to the web application, providing a visual topology graph, a summary bar with key metrics (elapsed time, fallbacks, failures, data sources), and a detailed event list with filtering capabilities. The component renders a lane-based graph of execution nodes and edges, supports node selection to highlight related paths, and displays a side panel with granular node details including provider metrics, attempt history, and context pack quality scores. This enables users to inspect the live state and structure of analysis tasks directly in the browser.
apps/dsa-web/src/components/run-flow · high confidence
Introduces AnalysisContextPack overview and daily market context guardrails
The system now exposes a low-sensitivity public overview of the AnalysisContextPack, allowing users to see the status and data quality of analysis blocks (quote, daily bars, technical, news, fundamentals, chip) without exposing sensitive internal details. Additionally, a new decision guardrail has been added that softens aggressive buy advice and caps confidence levels when the daily market context is conservative or high-risk, ensuring that stock analysis recommendations align with broader market conditions.
src · high confidence
Introduces comprehensive TypeScript type definitions for the web application's core domains
The web application now includes a complete set of TypeScript type definitions in \apps/dsa-web/src/types\ to strictly model the API contracts for key features. This addition covers the new Alert Center (defining rule parameters, triggers, and notification statuses), Decision Signals (including profiles, reassessment previews, and outcomes), Portfolio management (positions, risk metrics, and stop-loss logic), and Backtesting (result items and performance metrics). It also formalizes the Analysis context (report types, market phases, and language support), Research Artifacts (thesis, evidence, and invalidation conditions), Run Flow diagnostics (node/edge status tracking), Stock Index autocomplete data, and System Configuration (including LLM backend health checks and setup status).
apps/dsa-web/src/types · high confidence
Introduces new Zustand-based state management for agent chat, analysis, and stock pool
The application now uses dedicated Zustand stores (agentChatStore, analysisStore, stockPoolStore) to manage state for the new Web UI features. This introduces persistent chat session handling with stream progress tracking and error fallbacks, a dedicated analysis state for managing report results and history views, and a comprehensive stock pool state that supports multi-strategy selection, push notification toggles, and detailed history/market review management.
apps/dsa-web/src/stores · high confidence
Introduction of API v1 router and error handling infrastructure
The API v1 module has been initialized with a central router that aggregates endpoints for authentication, agents, analysis, history, stocks, backtesting, system configuration, usage tracking, portfolio management, alerts, decision signals, screening, data capabilities, intelligence ingestion, and health checks. This change introduces a unified /api/v1 prefix for these services and adds shared helpers for generating consistent error responses (HTTPException and JSONResponse) across the API.
api/v1 · high confidence
New Pydantic schemas for analysis context, decision taxonomy, and market structure
The \src/schemas\ package introduces a suite of Pydantic models that formalize the internal contracts for report generation and decision logic. This includes an \AnalysisContextPack\ schema to validate input data quality and provenance, a canonical \DecisionScale\ and \DecisionAction\ taxonomy that maps 0-100 scores to an eight-state display action (buy, add, hold, reduce, sell, watch, avoid, alert) while preserving the legacy three-state \decision\_type\ for statistics, and structured schemas for \MarketStructure\ (themes, stock positions) and \MarketLight\ snapshots. These schemas also enforce guardrail logic to ensure score-action consistency and provide validation for signal attribution contributions.
src/schemas · high confidence
New React-based web application with dark mode, language switching, and Playwright E2E testing
The DSA web interface has been replaced with a new React application built on Vite and Tailwind CSS. Users can now toggle between light and dark themes, with the dark theme applied immediately on first load to prevent flashing. A new UI language toggle allows switching between Chinese and English. The application includes end-to-end testing via Playwright and unit testing via Vitest, ensuring stability for the new web UI surfaces.
apps/dsa-web · high confidence
New Task Panel for monitoring active analysis tasks
The web application now includes a TaskPanel component in the sidebar that displays a list of active analysis tasks (pending, processing, or cancel requested). Users can see real-time progress bars, status badges, and requested analysis phase labels for each stock. The panel supports collapsing into a summary view, viewing trace IDs for diagnostics, and opening a run-flow viewer for specific tasks. Cancelled tasks are no longer shown in the active list.
apps/dsa-web/src/components/tasks · high confidence
New Web API client layer for agent, analysis, and portfolio features
The web application now includes a dedicated API client layer in \apps/dsa-web/src/api\ that exposes structured TypeScript interfaces and functions for interacting with the backend. This new module introduces dedicated API clients for agent chat (including streaming and session management), stock analysis (sync/async modes and market reviews), portfolio management (accounts, trades, snapshots), screening, alerts, and authentication. It also provides a centralized error handling system that categorizes API errors (e.g., LLM configuration issues, portfolio oversell, timeouts) and a unified axios instance with interceptors for authentication redirects and error attachment.
apps/dsa-web/src/api · high confidence
New common UI component library for the web application
The \apps/dsa-web/src/components/common\ directory now provides a comprehensive set of reusable UI components, establishing a unified design system for the web interface. This includes presentation elements like \Badge\, \Button\, \Card\, \ScoreGauge\, and \ParticleBackground\; structural containers such as \AppPage\, \PageHeader\, \Drawer\, and \Collapsible\; and interactive controls including \Input\ (with password visibility toggling), \Select\, \Checkbox\, and \Pagination\. The collection also introduces specialized utility components like \ApiErrorAlert\ for handling API errors, \ConfirmDialog\ for user confirmations, \JsonViewer\ for data inspection, and \Loading\/\EmptyState\ for feedback, all styled with a consistent terminal-inspired aesthetic.
apps/dsa-web/src/components/common · high confidence
New data access layer for alerts, backtests, and decision signals
The application introduces a dedicated repository layer in src/repositories to manage persistence for several new and existing capabilities. This includes an AlertRepository for managing alert rules, triggers, and notification history; a BacktestRepository for storing and querying backtest results and candidate analysis history; and DecisionSignalRepository/DecisionSignalOutcomeRepository for persisting AI-generated decision signals, their feedback, and forward-looking outcomes. Additionally, new repositories handle Intelligence sources and items, Skill Opinion samples and outcomes, and Portfolio account and trade data, providing a structured database access interface for these domains.
src/repositories · high confidence
New data source adapters and unified real-time quote types
The data provider layer now includes new fetcher implementations for AlphaVantage, Finnhub, efinance, Futu OpenD, Longbridge, and Pytdx, expanding support for US, Hong Kong, and A-share markets with specific capabilities such as multi-source fallbacks, circuit breakers, and static info caching. These adapters are unified by a new \UnifiedRealtimeQuote\ data structure and a \RealtimeSource\ enum in \realtime\_types.py\, which standardizes real-time quote fields and introduces a circuit-breaker mechanism to prevent cascading failures across data sources.
_data\provider · high confidence
New decision signal web surfaces and profile calibration views
Users can now view decision signals through three new interactive web components: a detailed display card with outcome feedback and post-hoc validation stats, a timeline visualization showing signal history by horizon and action, and a profile calibration panel that breaks down hit rates and returns by decision style (conservative, balanced, aggressive). These components render signal metadata, entry ranges, and status badges with proper localization and XSS-safe JSON handling.
apps/dsa-web/src/components/decision-signals · high confidence
New desktop app update indicator and unified application shell layout
The web application now includes a new DesktopUpdateIndicator component in the top-right corner of the layout, allowing users to check for, download, and install desktop application updates directly from the web interface. Additionally, the layout has been restructured with a new Shell component that provides a consistent application frame, featuring a collapsible sidebar navigation (with a new compact 'rail' mode), a sticky header displaying the current page title and description, and integrated controls for theme and language toggling. Error handling for page loads has also been improved with a new RouteBoundary component that catches rendering errors and displays a user-friendly error state with options to reload or return home.
apps/dsa-web/src/components/layout · high confidence
New desktop build and CI gate scripts
Added shell and PowerShell scripts to automate the desktop application build pipeline on macOS and Windows, including backend packaging with PyInstaller and desktop packaging with Electron. Introduced a CI gate script to run syntax checks, flake8, and offline tests with sharding support, along with a test sharding utility. Added helper scripts to validate static assets, AI governance assets, and Feishu bot notifications.
scripts · high confidence
New desktop update management and web UI hooks
The web application now includes a complete desktop update management system, introducing hooks and utilities in the desktop module to check for, download, and install application updates via IPC, along with a shared state store and UI notice generation. Additionally, a new set of React hooks has been added to the web UI to handle core functionalities: \useAutocomplete\ for stock search suggestions, \useDashboardLifecycle\ for managing dashboard data refresh and task streaming, \useHomeDashboardState\ for centralizing home page state, \useRunFlowSnapshot\ for visualizing analysis execution flows, \useStockIndex\ for loading stock data, \useSystemConfig\ for managing application settings, \useTaskStream\ for real-time SSE task updates, and \useWatchlist\ for managing user watchlists.
apps/dsa-web/src/hooks · high confidence
New history management UI with batch operations and stock-level aggregation
The history panel now features a redesigned list (\HistoryList\) that supports multi-select and batch deletion of analysis records, along with infinite scroll loading. A new \StockBar\ component aggregates history by stock, displaying a single entry per stock with its latest analysis time and count, and allows deleting individual stocks. A \StockHistoryTrendDrawer\ provides a detailed view of a stock's historical sentiment scores, advice, and model usage over configurable time ranges. The UI also enforces a structured action taxonomy (e.g., 'Avoid', 'Hold') over legacy free-text advice, ensuring consistent labels and preventing ambiguous English phrases from being rendered as actions.
apps/dsa-web/src/components/history · high confidence
New localized strings and help content for backtest, alert, and portfolio features
The Web UI now includes comprehensive English and Chinese translations for the Strategy Backtest, Alert Rules, and Portfolio Analysis pages. Users will see localized labels for backtest phases (pre-market, intraday, post-market), alert types (price crossing, RSI, MACD, etc.), and portfolio metrics (FIFO, drawdown, sector concentration). Additionally, detailed help text is provided for system configuration settings, including AI model routing, local CLI generation backends, and SearXNG discovery options, ensuring users understand the impact of these settings in their preferred language.
apps/dsa-web/src/locales · high confidence
New modular LLM generation backend architecture with local CLI support
The LLM runtime has been restructured into a modular backend system that introduces a unified \GenerationBackend\ protocol, a factory for instantiating backends, and a registry for resolving configuration. This change adds support for local CLI generation backends (specifically \codex\_cli\, \claude\_code\_cli\, and \opencode\_cli\) alongside the existing \litellm\ backend, allowing users to route generation requests to local tools. It also introduces a robust parameter recovery mechanism for LiteLLM that automatically detects and corrects unsupported provider parameters (such as temperature or top\_p) on the first retry, and adds a dedicated Hermes local HTTP generation channel for OpenAI-compatible local services.
src/llm · high confidence
New modular agent tool surface with execution policies and cooperative timeouts
The \src/agent/tools\ package introduces a structured tool registry and execution layer for the stock analysis agent. It provides a \ToolRegistry\ and \@tool\ decorator to define and manage tools (such as \analyze\_trend\, \get\_realtime\_quote\, and \search\_stock\_news\) with explicit \ToolPolicy\ metadata for permissions and side effects. The new \execution\ module adds cooperative cancellation and deadline enforcement, allowing long-running tool calls to be interrupted gracefully. This refactors the agent's capabilities into a reusable, policy-aware surface.
src/agent/tools · high confidence
New modular bot command system with agent-driven analysis and chat
The bot now uses a structured command module (\bot/commands\) with a base class and auto-registration for a set of new and refactored commands. Users can now use \/ask\ to analyze stocks using specific Agent skills (including multi-stock comparison), \/research\ for deep, budget-controlled research on stocks or topics, and \/chat\ for free-form conversation with the Agent (scoped to users/groups). The \/analyze\ command has been enhanced to support explicit index codes, display names, and legacy stock formats with clearer error handling. New commands include \/strategies\ to list and filter available trading strategies, \/history\ to view and clear user-scoped conversation sessions, and \/batch\ for bulk analysis of watchlists. The \/status\ command now reports on additional search providers (Brave, MiniMax, SearXNG) and notification channels, while \/market\ includes trading-day checks to skip reviews when relevant markets are closed.
bot/commands · high confidence
New report templates with market snapshots, strategy synthesis, and LLM model visibility
The system introduces new Jinja2 templates (\report\_markdown.j2\, \report\_brief.j2\, \report\_wechat.j2\, and \\_macros.j2\) that significantly expand the content and structure of generated reports. Users will now see detailed market snapshots (including price, volume, and turnover metrics) via a shared macro, as well as a new 'Strategy Synthesis' section that displays final signals, consensus levels, conflicts, and supporting/opposing skills. The reports also include a 'Phase Decision' section for action windows and watch conditions, and a 'Signal Attribution' section breaking down technical, news, and fundamental weights. Additionally, a new brief report format provides a compact summary, and all templates now support a configurable language setting and an optional toggle to display the LLM models used in the analysis.
templates · high confidence
New report transparency, diagnostics, and structured market views
The report view now includes several new components to improve transparency and data presentation. The Analysis Context Summary displays the status and quality of input data blocks (such as quotes, news, and fundamentals) with multilingual labels. The Report Diagnostics component shows the health of the data fetch, LLM, and notification pipelines, helping users troubleshoot issues. A new Report Details panel allows users to inspect the raw analysis result and context snapshot JSON. The Market Review Report View and Market Structure Card provide structured displays for market indices, sectors, and themes, including stock role and theme phase. Additionally, the full report drawer now supports copying both Markdown and plain text, and the Report News component displays related news with a refresh action.
apps/dsa-web/src/components/report · high confidence
New service layer for alerts, agent chat, and portfolio imports
The \src/services\ directory now contains a new service layer that introduces several capabilities: an Alert API MVP with technical indicator rules (MA, RSI, MACD, KDJ, CCI) and background evaluation workers; Agent Chat session management and model deployment listing; and a new broker integration for importing real stock holdings from Futu OpenD. Additionally, EastMoney data access is patched to handle authorization tokens, and the services package uses lazy loading to defer heavy dependencies.
src/services · high confidence
New settings page components for backend status, auth, and LLM configuration
The settings area now includes dedicated UI components for managing system state and configuration. The AgentBackendStatusPanel and GenerationBackendStatusPanel provide real-time health checks and status indicators for agent and generation backends, including support for previewing changes before saving. A new AuthSettingsCard and ChangePasswordCard allow users to enable/disable authentication and change passwords directly from the settings page, with client-side validation for password requirements. The LLMChannelEditor offers a visual interface for configuring multi-channel LLM providers, supporting protocol selection, API surface configuration, and capability testing. Additionally, the IntelligentImport component enables parsing stock lists from images, files, or pasted text with confidence-based merging, while the NotificationTestPanel allows testing various notification channels with custom payloads and timeouts.
apps/dsa-web/src/components/settings · high confidence
New shared utility modules for analysis data normalization and sanitization
The \src/utils\ package introduces several new modules that standardize how analysis data is processed and secured. \data\_processing.py\ provides helpers to normalize model usage, parse JSON fields, and clean up sector rankings and board associations, ensuring consistent data structures for downstream features. \sanitize.py\ adds robust text sanitization and redaction capabilities to protect sensitive information (such as API keys and tokens) in logs, diagnostics, and persisted decision signals. \market\_review\_region.py\ defines strict and lenient normalization rules for market review regions (e.g., cn, hk, us), while \analysis\_metadata.py\ centralizes constants for selection sources. \sniper\_points.py\ extracts and parses price targets from various report formats.
src/utils · high confidence
New stock autocomplete component with multi-market support
Introduced the StockAutocomplete component in the web app, providing a stock code and name search input with keyboard navigation, IME support, and a dropdown suggestion list. The component now supports suggestions for multiple markets including CN (A-shares), HK, US, JP, KR (Korea), and BSE (Beijing Stock Exchange), displaying market-specific badges and match types (exact, prefix, contains, fuzzy) in the suggestions. It includes error handling with a fallback to a plain input field if the autocomplete logic fails.
apps/dsa-web/src/components/StockAutocomplete · high confidence
New utility library for stock analysis web application
This change introduces a comprehensive set of utility functions in the \apps/dsa-web/src/utils\ directory to support the new web-based stock analysis interface. Key additions include \chatExport.ts\ for exporting chat sessions as Markdown files, \chatFollowUp.ts\ for managing context in follow-up analysis queries, and \chatStockCode.ts\ for robust stock code extraction from free-text input. The update also adds \decisionSignalTimeline.ts\ and \decisionSignalProfile.ts\ to visualize and interpret decision signals, \reportLanguage.ts\ to handle multi-language (Chinese, English, Korean) report text, and \searchStocks.ts\ for stock index searching with scoring. Additional utilities cover formatting (\format.ts\, \portfolioFormat.ts\), market phase handling (\marketPhase.ts\), and build information resolution (\constants.ts\).
apps/dsa-web/src/utils · high confidence
New web application pages for core DSA features
The web interface now includes dedicated pages for the Alert Center, Backtesting, Chat, Decision Signals, Home Dashboard, Portfolio, and Settings. These pages provide the user-facing UI for managing alerts, running backtests, interacting with the agent, viewing decision signals, managing the home workspace, handling portfolio data, and configuring system settings.
apps/dsa-web/src/pages · high confidence
Architecture
Initial project scaffolding and legacy code removal
The repository has been initialized with a new project structure, including AI collaboration governance files (AGENTS.md, SKILL.md), a CITATION file, and a new FastAPI-based server entry point (server.py) and WebUI launcher (webui.py). This change also removes the legacy monolithic Python files (analyzer.py, config.py, notification.py, scheduler.py, etc.) and the old Dockerfile, indicating a transition from the initial commit's architecture to the new modular layout.
(repo-wide) · high confidence
Introduction of API v1 endpoint module structure
The api/v1/endpoints package has been initialized with a new \_\init\\_.py that explicitly declares and exports the available endpoint modules (health, analysis, history, stocks, backtest, data, system\_config, auth, agent, usage, portfolio, alerts, decision\_signals, screening). This establishes the modular routing structure for the v1 API, ensuring all endpoint sub-modules are properly registered and accessible within the application's API layer.
api/v1/endpoints · high confidence
Behavioural changes
API authentication and standardized error handling
The API now enforces session-based authentication on all /api/v1/\* endpoints when admin auth is enabled, returning 401 for unauthenticated requests while exempting health checks and documentation routes. Additionally, a global error handler ensures that all server errors and validation failures return a consistent JSON structure with standardized error codes and messages, improving reliability and debugging for API consumers.
api/middlewares · high confidence
Centralized authentication state and UI language switching
The application now manages authentication and localization through dedicated React contexts. The new AuthContext centralizes login, logout, and password management, ensuring that dashboard state is reset upon logout and handling API errors with specific feedback (such as rate-limiting messages). Additionally, the UiLanguageContext enables users to switch the interface language between Chinese and English, with the preference persisted in local storage and applied immediately to the UI.
apps/dsa-web/src/contexts · high confidence
Improved stock name resolution and English news relevance for foreign tickers
The data module now introduces a dedicated \STOCK\_ENGLISH\_NAME\_MAP\ that provides explicit English legal names and media aliases for foreign stocks (US and HK) that previously mapped only to Chinese display names. This change resolves an issue where English news headlines failed to match these stocks because the system could not derive English identity terms from Chinese names. Additionally, the module adds a robust \stock\_index\_loader\ that supports remote index refresh, caches stock mappings, and correctly handles identity normalization for JP/KR suffix markets, ensuring more accurate autocomplete and search results.
src/data · high confidence
Introduce dedicated notification sender modules for multiple channels
The notification system has been refactored into a modular sender architecture under src/notification\_sender, replacing the previous monolithic implementation. This change introduces dedicated sender classes for AstrBot, Custom Webhooks, DingTalk, Discord, Email, Feishu (including App Bot and file upload support), Gotify, ntfy, Pushover, PushPlus, ServerChan3, Slack, Telegram, and WeChat. Users benefit from improved reliability through features like chunked message sending for long reports (e.g., on DingTalk and Discord), support for custom webhook body templates, and enhanced configuration options such as non-ASCII email sender name encoding and specific channel routing.
_src/notification\sender · high confidence
Introduce new API module structure with FastAPI application factory
The API layer has been restructured into a new modular layout, introducing an application factory in api/app.py that initializes the FastAPI instance, configures CORS, registers routes, and handles frontend static file serving. This includes specific logic to detect stale frontend bundles at startup and runtime, fix MIME type handling for JavaScript assets (particularly on Windows), and prevent path traversal vulnerabilities in SPA fallback routes. Additionally, a new dependency injection module (api/deps.py) provides standardized access to database sessions, configuration, and service instances like SystemConfigService and RuntimeSchedulerService.
api · high confidence
New home watchlist workspace with improved mobile scrolling and state stability
The home page now uses a dedicated HomeStockWorkspace component to manage the watchlist, today's items, and history tabs. This change introduces a reliable mobile scrolling contract (using overscroll and touch-pan classes) to fix touch-scrolling issues on mobile devices. It also stabilizes the workspace state by ensuring that row selection and detail opening correctly handle asset-aware identity keys (canonical vs. raw codes) and provide clear feedback for loading, unavailable, or missing analysis details.
apps/dsa-web/src/components/watchlist · high confidence
Fixes
Fix incomplete code signatures on macOS unsigned builds
Added a post-packaging script for macOS that runs a signature audit to normalize code signatures, preventing incomplete or broken signatures in unsigned application packages.
apps/dsa-desktop/scripts · high confidence
Test coverage
Added API contract tests for web client modules; Added E2E tests for web UI smoke, report copy, and market structure visual; Added automated tests for web UI styling, theming, and localization; Added test coverage for agent disagreement summaries, final explanations, and tool timeouts; Added test coverage for web application pages; Added tests for layout components and desktop update indicator; Added tests for report component UI and behavior; Added tests for web application hooks; Added unit tests for Web settings components; Added unit tests for agent chat and stock pool stores; Added unit tests for desktop main and preload modules; Added unit tests for the Alert Rule Form and List components; Added unit tests for web utility functions; Test infrastructure overhaul and regression coverage for data routing and agent backends.
Dependencies
Major dependency overhaul and new application scaffolding
This change introduces a comprehensive dependency update and new project structure. The Python backend (requirements.txt) adds support for new data sources (efinance, pytdx, TickFlow, Longbridge, Futu), integrates the LiteLLM unified LLM client with strict version pinning, and adds libraries for Discord bot support, Feishu, and report rendering (Jinja2, FastAPI). The desktop app (apps/dsa-desktop) is scaffolded with Electron v31 and electron-builder v24, including an auto-updater. The web app (apps/dsa-web) is scaffolded with React v19, Vite v7, and Tailwind CSS v4.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 42 → 49 (+6.6)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 64 → 66 (+2.1)
- Architecture 94 (new)
- Maturity 74 → 72 (-1.5)
- Readiness 28 → 50 (+21.9)
- Security 48 → 59 (+11.0)
- Accessibility 39 (new)
Resolved (115)
- Change coupling: history.ts ↔ HomePage.tsx (apps/dsa-web/src/api/history.ts)
- Change coupling: index.ts ↔ SettingsPage.tsx (apps/dsa-web/src/components/settings/index.ts)
- Change coupling: systemConfig.ts ↔ SettingsPage.tsx (apps/dsa-web/src/api/systemConfig.ts)
- Change coupling: useSystemConfig.ts ↔ SettingsPage.tsx (apps/dsa-web/src/hooks/useSystemConfig.ts)
- Coverage not measured — test suite did not build
- Critical CVE: [GHSA redacted] (apps/dsa-desktop/package-lock.json)
- Dimension evaluation failed
- High CVE: [GHSA redacted] (apps/dsa-web/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-web/package-lock.json)
- High CVE: [GHSA redacted] (.github/requirements-ci.txt)
- High CVE: [GHSA redacted] (apps/dsa-desktop/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-web/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-web/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-desktop/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-web/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-web/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-web/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-desktop/package-lock.json)
- High CVE: [GHSA redacted] (apps/dsa-desktop/package-lock.json)
- High CVE: [GHSA redacted] (.github/requirements-ci.txt)
- …and 95 more
New (1669)
- AgentBackendStatusPanel.AgentBackendStatusPanel (cognitive 33) (apps/dsa-web/src/components/settings/AgentBackendStatusPanel.tsx)
- AgentBackendStatusPanel.AgentBackendStatusPanel (cyclomatic 24) (apps/dsa-web/src/components/settings/AgentBackendStatusPanel.tsx)
- AgentExecutor._build_user_message (cognitive 23) (src/agent/executor.py)
- AgentMemory.get_stock_history (cognitive 19) (src/agent/memory.py)
- AgentOrchestrator._build_context (cognitive 23) (src/agent/orchestrator.py)
- AgentOrchestrator._build_context (cyclomatic 16) (src/agent/orchestrator.py)
- AgentOrchestrator._build_data_perspective (cognitive 24) (src/agent/orchestrator.py)
- AgentOrchestrator._build_data_perspective (cyclomatic 21) (src/agent/orchestrator.py)
- AgentOrchestrator._collect_strategy_synthesis (cognitive 18) (src/agent/orchestrator.py)
- AgentOrchestrator._execute_pipeline (cognitive 82) (src/agent/orchestrator.py)
- AgentOrchestrator._execute_pipeline (cyclomatic 39) (src/agent/orchestrator.py)
- AgentOrchestrator._finalize_dashboard_payload (cognitive 97) (src/agent/orchestrator.py)
- AgentOrchestrator._finalize_dashboard_payload (cyclomatic 73) (src/agent/orchestrator.py)
- AgentOrchestrator._partition_skill_opinions (cognitive 19) (src/agent/orchestrator.py)
- AkshareFetcher._calc_market_stats (cognitive 28) (data_provider/akshare_fetcher.py)
- AkshareFetcher._calc_market_stats (cyclomatic 21) (data_provider/akshare_fetcher.py)
- AkshareFetcher._get_hk_realtime_quote (cognitive 27) (data_provider/akshare_fetcher.py)
- AkshareFetcher._get_hk_realtime_quote (cyclomatic 17) (data_provider/akshare_fetcher.py)
- AkshareFetcher._get_stock_realtime_quote_tencent (cognitive 20) (data_provider/akshare_fetcher.py)
- AkshareFetcher._get_stock_realtime_quote_tencent (cyclomatic 21) (data_provider/akshare_fetcher.py)
- …and 1649 more
Changes since last survey
- 56 commits — 29 feature/other, 27 fixes
By area
- docs/CHANGELOG.md — 12 commits
- (root) — 9 commits
- apps/dsa-web — 9 commits
- src/services — 4 commits
- api/v1 — 3 commits
- apps/dsa-desktop — 3 commits
- data_provider/base.py — 2 commits
- src/agent — 2 commits
- src/search_service.py — 2 commits
- tests/test_yfinance_fundamental_adapter.py — 2 commits
- .github/PULL_REQUEST_TEMPLATE.md — 1 commit
- api/app.py — 1 commit
- data_provider/akshare_fetcher.py — 1 commit
- docker/Dockerfile — 1 commit
- docs/examples — 1 commit
- evals/agent_trajectory — 1 commit
- src/core — 1 commit
- tests/test_pipeline_single_stock_notify.py — 1 commit
Notable commits
- fix: Fix/tavily credit usage (#2314)
- fix: fix(market): bound AkShare market stats calls (#2345)
- fix: fix(tests): make dividend TTM dates date-relative to fix CI (#2204) (#2206)
- fix: fix(web): 选股结果持久化恢复 - 新增历史记录入口并支持刷新恢复 (#2154)
- fix: fix: [CVE redacted] security vulnerability (#2256)
- fix: fix: [CVE redacted] security vulnerability (#2253)
- fix: fix: [GHSA redacted] security vulnerability (#2254)
- fix: fix: US daily routing consumes per-source fetcher priorities (#2250)
- fix: fix: align US index realtime capability (#2310)
- fix: fix: count DingTalk webhook as notification channel (#2230)
- fix: fix: handle UTF-8 BOM in stock imports (#2333)
- fix: fix: isolate runtime scheduler with portable watchdog (#2219)
- fix: fix: restore persisted runtime schedules (#2231)
- fix: fix: sanitize market review history summaries (#2242)
- fix: fix: split level-one headings without recursion (#2176)
- fix: fix: stabilize Xiaohongshu share image caption (#2179)
- fix: fix: stabilize yfinance dividend TTM fixtures (#2214)
- fix: fix: sync research artifact OpenAPI contract (#2311)
- fix: fix: 修复 Linux 分享图中文缺失 (#2270)
- fix: fix: 修复首页移动端个股栏触摸滚动 (#2171)
- …and 36 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ZhuLinsen/daily_stock_analysis was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 26 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit f9e7b778c48c914af4e0c69dd301e6907d7ea5f9 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-09659c52afae.