ZLData AI 量化交易平台 — 产品需求规格书 (PRD)
| 属性 | 内容 |
|---|---|
| 文档版本 | v3.1 |
| 日期 | 2026-04-16 |
| 状态 | Draft — 待评审 |
| 基于 | v3.0 + v2.1 合并优化 |
| 作者 | Z.WU + AI Review Agent |
目录
- 概述与迭代策略
- 系统架构与部署拓扑
- 技术栈与平台选型
- 智能体团队设计
- 核心功能模块与迭代路线图
- 数据模型设计
- API 接口设计
- 数据流与工作流
- 文档、知识库与反馈闭环集成
- 安全设计
- 监控与可观测性
- 容错与弹性设计
- 非功能需求
- 项目结构
- 实施路线图
- 设计原则
- 待细化事项 (TBD)
1. 概述与迭代策略
1.1 项目目标与演进路线
ZLData 是一个面向内部交易运维团队的 AI 量化投资分析平台。鉴于系统复杂性,我们采用 “模块化构建、垂直切片式迭代” 的策略,将宏大的目标分解为一系列可独立交付、验证价值的功能模块。
平台以多智能体协同为核心驱动,覆盖从市场数据采集、量化因子计算、策略回测验证、实时风险评估到交易决策生成的全流程。平台定位为 辅助决策系统,所有交易指令必须经过人类审批后方可执行,确保人类始终拥有最终控制权与完整审计追踪能力。
核心价值主张:
- 数据驱动决策:整合 QMT 实时行情、akshare 开源金融数据、定向爬虫新闻资讯和 Web 搜索引擎等多源异构数据,通过统一的标准化管道汇聚至中心数据库,消除信息孤岛。
- 智能体协同工作:通过专业化的 AI 智能体团队(数据分析师、量化策略师、风控官、新闻情绪分析师、组合经理等)分工协作,模拟真实投研团队的工作流,提升分析效率与决策质量。
- 可验证的量化策略:内置回测引擎支持历史策略验证,结合夏普比率、最大回撤、胜率等关键绩效指标,为策略上线提供数据支撑。
- 全面风险管控:多层次风险评估体系覆盖 VaR/CVaR、持仓集中度、流动性风险、行业敞口等多个维度,支持阈值预警与自动阻断。
演进路线图:
1.2 v1.0 里程碑:数据采集与可视化模块
为了快速验证价值并获得合作方反馈,v1.0 版本将聚焦于”数据采集模块”及其互动展示前端。此版本将作为一个完整的、可独立运行的产品进行开发。
- 核心目标:实现从 QMT/akshare 采集 A 股行情、财务、宏观数据,存入数据库,并通过一个 Web 仪表盘进行可视化展示。
- 交付物:
- 稳定运行的后端数据采集服务 (Python/FastAPI + APScheduler)。
- 部署于 Azure SQL 的数据库,包含完整的数据表结构。
- 部署于 Render 的 FastAPI 后端,提供数据查询 API。
- 部署于 Vercel 的 Next.js 前端仪表盘,支持数据源状态查看和 SQL 数据浏览。
1.3 目标用户
| 用户角色 | v1.0 使用场景 | 远期使用场景 |
|---|---|---|
| 交易研究员 | 查看数据采集状态、预览最新数据 | 策略研发、因子挖掘、回测验证 |
| 交易执行员 | - | 监控信号、审批订单 |
| 风控管理员 | - | 风控参数配置、风险限额管理 |
| 系统运维 | 监控数据采集任务健康状况 | 平台维护、故障排查 |
1.4 部署环境 (演进视图)
| 阶段 | 部署方式 | 平台/技术 |
|---|---|---|
| v1.0 - v2.0 (早期) | 云服务免费层/基础层 | 前端: Vercel (Next.js) 后端: Render Web Service (FastAPI) 数据库: Azure SQL Database AI: Gemini / 通义千问 API 或其它 - 待定 |
| v3.0+ (远期) | On-premises (本地服务器) | 全栈: Docker Compose / K8s 数据库: PostgreSQL / TimescaleDB AI: 本地部署开源模型 (LLaMA / Qwen) |
1.5 业务约束
- 纯手动交易决策:平台仅提供分析辅助与交易信号,人类保留所有执行控制权,不设自动交易通道。
- 完整审计追踪:所有数据获取、分析计算、信号生成、订单审批和执行记录均需持久化存储,支持审计回溯。
- 合规优先:数据采集和处理需遵守相关金融监管要求,敏感数据需脱敏存储。
- 单市场聚焦:v1 仅覆盖 A 股市场,跨境市场扩展留待后续版本。
2. 系统架构与部署拓扑
2.1 整体架构总览
此架构图明确了早期云部署的组件边界和通信关系,同时展示了完整的系统架构。
2.2 部署拓扑详情 (v1.0)
3. 技术栈与平台选型
| 层级 | 技术选型 | 部署平台 | 说明 |
|---|---|---|---|
| 前端框架 | Next.js 14+ (App Router) | Vercel | 与文档站(Nextra)同源,SSR/SSG 支持好,开发效率高。 |
| 后端框架 | FastAPI (Python 3.11+) | Render Web Service | 异步支持、类型安全、自动生成 API 文档,完美契合 Python 量化生态。 |
| 数据库 | Azure SQL Database | Azure SQL Database (早期) → 自托管 (远期) | 企业级关系数据库,支持 PostgreSQL 兼容模式,远期可迁移到自托管 PostgreSQL/TimescaleDB。 |
| ORM | SQLAlchemy 2.0 | - | 异步支持、类型安全 |
| 消息队列/缓存 | Redis | Redis Cloud Free (早期) → 自托管 (远期) | 用于后台任务队列和热数据缓存。 |
| 任务调度 | APScheduler + Render Cron Jobs | Render Worker | APScheduler 运行在 Worker 服务中,用于定时数据采集任务。 |
| 数据处理 | pandas 2.x, numpy | - | 核心数据分析框架 |
| 技术指标 | ta-lib / pandas-ta | - | 技术分析指标计算 |
| HTTP 客户端 | httpx (async), requests | - | 异步 HTTP 请求、API 对接 |
| 爬虫框架 | BeautifulSoup, Scrapy (v2) | - | 定向数据爬取 |
| Web 搜索 | SerpAPI / DuckDuckGo API | - | 互联网信息搜索 |
| 配置管理 | pydantic-settings, python-dotenv | - | 类型安全配置管理 |
| 测试框架 | pytest, pytest-asyncio, pytest-cov | - | 单元测试、集成测试、覆盖率 |
| 日志 | structlog | - | 结构化日志,JSON 格式输出 |
| 容器化 | Docker, Docker Compose | - | 标准化部署、环境隔离 |
| LLM 集成 | OpenAI / DashScope API | - | 在代码中抽象为 LLMClient 接口,远期替换为本地模型 (vLLM/Ollama)。 |
| 文档站 | Nextra | Vercel | 基于 Markdown 的 Next.js 文档框架,已部署于 doc.zldata.ai-time.net。 |
| 评论系统 | Waline | Vercel | 开源评论系统,已部署于 comment.zldata.ai-time.net。 |
4. 智能体团队设计 (v2.0+)
本章为 v2 核心设计。v1 阶段仅搭建目录结构和基础接口存根,v2 阶段逐步实现完整的多智能体协作系统。
4.1 智能体团队总览
ZLData 采用 专业化分工 + 中心化协调 的多智能体架构。每个智能体负责一个特定的业务领域,由主协调智能体(Main Coordinator)统一调度工作流程。智能体之间通过消息队列进行异步通信,通过共享数据库进行状态同步。
智能体在 Render 上的部署策略:
- Web Service (FastAPI):轻量级,仅负责接收用户指令、进行参数校验、创建任务记录并发送至消息队列,绝不执行耗时的 Agent 逻辑。
- Background Worker (Render Worker):部署一个独立的、长期运行的服务。它从 Redis 队列中拉取任务,加载对应的 Agent 逻辑,并调用 LLM API。这种方式将计算与请求处理解耦,保证了 API 的响应速度和系统的可扩展性。
4.2 智能体详细设计
4.2.1 主协调智能体 (Main Coordinator)
| 属性 | 说明 |
|---|---|
| 定位 | 团队”大脑”,负责任务接收、分解、分发和结果汇总 |
| 输入 | 用户指令(CLI/API)、定时触发任务、事件驱动告警 |
| 输出 | 最终分析报告、交易建议、状态报告 |
核心能力:
- 任务分解:将用户的高层请求(如”分析沪深300成分股近期走势”)分解为子任务,分配给对应智能体
- 工作流编排:按 DAG(有向无环图)管理任务依赖关系,支持串行、并行、条件分支执行
- 上下文管理:维护对话上下文和任务执行上下文,支持多轮交互
- 异常处理:监控子任务状态,处理超时、失败、结果质量不达标等异常
- 结果聚合:收集各智能体输出,综合判断后生成最终结论
任务编排示例 — 日常市场分析:
4.2.2 数据分析师 (Data Analyst)
| 属性 | 说明 |
|---|---|
| 定位 | 数据获取与质量保障专家 |
| 核心能力 | 多源数据采集、数据质量评估、数据关联分析、缺失值处理建议 |
| 工具调用 | Data Collection 模块全部 API |
| 输出格式 | 标准化数据集 + 数据质量报告 |
具体职责:
- 根据分析需求确定需要的数据源和指标范围
- 从 QMT、akshare、爬虫等数据源获取原始数据
- 执行数据清洗:去重、缺失值检测、异常值标记、时间对齐
- 评估数据质量并生成数据质量报告(完整性、时效性、一致性)
- 当数据质量不满足分析要求时,主动上报异常并建议替代方案
4.2.3 量化策略师 (Quant Strategist)
| 属性 | 说明 |
|---|---|
| 定位 | 量化分析与策略核心引擎 |
| 核心能力 | 技术指标计算、多因子分析、交易信号生成、策略评估 |
| 工具调用 | Quantitative Analysis 模块 + Backtest Engine 模块 |
| 输出格式 | 交易信号 + 因子分析报告 + 策略评估结论 |
具体职责:
- 根据数据分析师提供的标准化数据,计算技术指标(MA、MACD、RSI、KDJ、布林带等)
- 执行多因子分析(价值因子、动量因子、质量因子、波动率因子等)
- 基于指标和因子组合生成交易信号(买入/卖出/持有,含置信度)
- 将新策略提交给回测工程师进行历史验证
- 综合回测结果和实时信号,给出策略评估结论
4.2.4 风控官 (Risk Officer)
| 属性 | 说明 |
|---|---|
| 定位 | 风险评估与合规守门人 |
| 核心能力 | VaR/CVaR 计算、持仓风险监控、敞口分析、预警管理 |
| 工具调用 | Risk Assessment 模块全部 API |
| 输出格式 | 风险评估报告 + 预警事件 + 风控否决/通过结论 |
具体职责:
- 对量化策略师生成的交易信号进行独立风险评估
- 计算 VaR(在险价值)和 CVaR(条件在险价值),评估潜在损失
- 监控持仓集中度、行业敞口、流动性风险等维度
- 根据预设风控阈值进行实时监控,超阈值时生成告警
- 拥有一票否决权:当风险指标超出可接受范围时,可否决交易信号
4.2.5 新闻情绪分析师 (Sentiment Analyst)
| 属性 | 说明 |
|---|---|
| 定位 | 另类数据(Alternative Data)分析专家 |
| 核心能力 | 新闻采集、情绪分析、事件驱动分析、舆情监控 |
| 工具调用 | 爬虫模块 + Web Search + LLM 情绪分析 |
| 输出格式 | 情绪评分 (-1~+1) + 事件影响评估 + 新闻摘要 |
具体职责:
- 从财经新闻、公告、社交媒体等来源采集与目标标的相关的内容
- 利用 LLM 对文本进行情绪分析和关键信息提取
- 识别重大事件(财报发布、政策变动、行业事件等)并评估影响
- 将情绪因子整合到量化分析框架中,辅助信号生成
- 维护舆情监控看板,对异常舆情及时预警
4.2.6 组合经理 (Portfolio Manager)
| 属性 | 说明 |
|---|---|
| 定位 | 组合构建与仓位管理的决策顾问 |
| 核心能力 | 组合优化、仓位分配、再平衡建议、绩效归因 |
| 工具调用 | 交易决策模块 + 风险评估模块 |
| 输出格式 | 组合建议书 + 仓位调整方案 + 绩效归因报告 |
具体职责:
- 综合量化策略师的信号和风控官的风险评估,生成投资组合建议
- 根据风险偏好和资金约束,优化仓位分配比例
- 定期进行组合再平衡分析,提出调仓建议
- 执行投资组合绩效归因分析,识别收益和风险来源
- 所有交易建议均标注为”建议”,最终决策权归属人类交易员
4.2.7 回测工程师 (Backtest Engineer)
| 属性 | 说明 |
|---|---|
| 定位 | 策略验证与绩效评估专家 |
| 核心能力 | 历史回测、绩效指标计算、参数优化、过拟合检测 |
| 工具调用 | Backtest Engine 模块全部 API |
| 输出格式 | 回测报告 + 绩效指标集 + 策略排名 |
具体职责:
- 接收量化策略师提交的策略定义,执行历史数据回测
- 计算关键绩效指标:年化收益率、夏普比率、最大回撤、胜率、盈亏比、Sortino 比率等
- 执行参数敏感性分析和网格搜索优化
- 检测过拟合风险:样本内/样本外验证、Walk-forward Analysis
- 生成标准化的回测报告,为策略上线提供数据支撑
4.2.8 文档工程师 (Doc Engineer)
| 属性 | 说明 |
|---|---|
| 定位 | 报告生成与知识管理专家 |
| 核心能力 | 自动报告生成、文档版本管理、知识库维护 |
| 工具调用 | Documentation Support 模块 |
| 输出格式 | Markdown/PDF 报告 + 知识库条目 |
具体职责:
- 将各智能体的分析结果汇总为结构化报告
- 维护和更新平台功能说明文档、数据处理逻辑文档
- 管理分析报告的版本历史和归档
- 支持自然语言查询历史文档和分析记录
4.3 智能体通信机制
通信协议规范:
| 维度 | 同步调用 | 异步消息 | 共享状态 |
|---|---|---|---|
| 传输方式 | 函数调用 / gRPC (v2) | RabbitMQ / Redis Streams | Azure SQL / Redis |
| 适用场景 | 简单查询、快速响应 | 长时任务、工作流步骤 | 结果持久化、上下文传递 |
| 超时策略 | 30s(可配置) | 10min(任务级) | N/A |
| 重试策略 | 指数退避,最多3次 | 死信队列 + 告警 | N/A |
| 数据格式 | JSON / Pydantic Model | JSON Message | 关系型表结构 |
消息格式标准:
{
"message_id": "uuid-v4",
"from_agent": "quant_strategist",
"to_agent": "risk_officer",
"task_id": "task-20260403-001",
"message_type": "signal_review_request",
"payload": {
"signal_type": "BUY",
"target": "600519.SH",
"confidence": 0.78,
"factors": { "momentum": 0.8, "value": 0.6, "quality": 0.7 },
"suggested_position": 50000
},
"timestamp": "2026-04-03T10:30:00+08:00",
"priority": "high",
"reply_to": "coord.agent.replies"
}4.4 智能体生命周期管理
5. 核心功能模块与迭代路线图
| 模块 | v1.0 (数据基石) | v1.5 (核心分析) | v2.0 (智能体试点) | v2.5+ (风控与决策) |
|---|---|---|---|---|
| 数据采集 | 完整实现 | 维护优化 | 维护优化 | 维护优化 |
| 量化分析 | - | 技术指标+因子 | 增强 | 增强 |
| 风险评估 | - | - | 基础风控 | VaR+敞口监控 |
| 回测引擎 | - | - | - | 完整实现 |
| 交易决策 | - | - | - | 人工审批流 |
| 智能体 | - | - | 主协调+1个业务Agent | 全Agent团队 |
| 前端展示 | 数据看板 | 信号查看 | 对话界面 | 交易/风控仪表板 |
5.1 数据采集模块 (Data Collection)
v1.0 核心功能:
| 功能子模块 | 功能描述 | 数据源 | 实现优先级 |
|---|---|---|---|
| 行情数据采集 | 日K线、分钟K线、实时Tick | QMT / akshare | P0 |
| 财务数据采集 | 财务报表、财务指标 | akshare | P0 |
| 宏观数据采集 | 宏观经济指标、利率数据 | akshare | P1 |
| 新闻数据采集 | 财经新闻、公告、研报 | 爬虫 / API | P2 |
| 数据质量管理 | 完整性检查、异常检测、缺失值标记 | 内部 | P0 |
关键设计要点:
- 双源冗余:关键数据(行情、财务)同时从 QMT 和 akshare 采集,互为备份
- 幂等写入:所有数据写入操作支持重复执行,避免重复数据
- 增量更新:仅采集新增数据,减少网络传输和存储开销
- 并行采集:多数据源并行采集,提升效率
- 错误重试:网络异常时自动重试,超过阈值后告警
5.2 量化分析模块 (Quantitative Analysis)
v1.5 核心功能:
| 功能子模块 | 功能描述 | 输入 | 输出 |
|---|---|---|---|
| 技术指标计算 | MA、MACD、RSI、KDJ、布林带等 | 行情数据 | 指标序列 |
| 因子计算 | 价值因子、动量因子、质量因子等 | 行情+财务数据 | 因子值 |
| 信号生成 | 基于指标/因子组合生成交易信号 | 指标+因子 | 信号(买入/卖出/持有) |
| 相关性分析 | 股票间相关性、因子相关性 | 多标的行情 | 相关性矩阵 |
5.3 风险评估模块 (Risk Assessment)
v2.5 核心功能:
| 功能子模块 | 功能描述 | 输入 | 输出 |
|---|---|---|---|
| VaR 计算 | 在险价值计算(历史模拟/参数法) | 持仓+历史行情 | VaR 值 |
| 敞口分析 | 行业敞口、风格敞口、因子敞口 | 持仓+基准 | 敞口报告 |
| 集中度监控 | 持仓集中度、行业集中度 | 持仓 | 集中度指标 |
| 预警管理 | 阈值监控、告警生成 | 风险指标 | 告警事件 |
5.4 回测引擎模块 (Backtest Engine)
v2.5 核心功能:
| 功能子模块 | 功能描述 | 输入 | 输出 |
|---|---|---|---|
| 策略回测 | 历史数据模拟交易 | 策略定义+历史数据 | 交易记录 |
| 绩效计算 | 收益率、夏普比率、最大回撤等 | 交易记录 | 绩效指标 |
| 参数优化 | 网格搜索、敏感性分析 | 策略参数范围 | 最优参数 |
| 过拟合检测 | 样本内/样本外验证 | 回测结果 | 过拟合风险评分 |
5.5 交易决策模块 (Trading Decision)
v2.5+ 核心功能:
| 功能子模块 | 功能描述 | 输入 | 输出 |
|---|---|---|---|
| 订单生成 | 根据信号生成订单建议 | 交易信号+持仓 | 订单建议 |
| 审批路由 | 将订单路由至审批人 | 订单建议 | 审批任务 |
| 审批管理 | 人工审批、驳回、修改 | 审批任务 | 审批结果 |
| 执行跟踪 | 跟踪订单执行状态 | 审批通过订单 | 执行状态 |
5.6 文档管理模块 (Documentation Support)
v1.0+ 核心功能:
| 功能子模块 | 功能描述 | 输入 | 输出 |
|---|---|---|---|
| 功能说明 | 平台功能文档 | 功能定义 | Markdown 文档 |
| 数据逻辑 | 数据处理逻辑文档 | 数据流定义 | 技术文档 |
| 报告生成 | 自动生成分析报告 | 分析结果 | PDF/Markdown 报告 |
| 知识库 | 历史文档索引与查询 | 文档集合 | 搜索结果 |
6. 数据模型设计
6.1 数据模型 ER 图
6.2 核心数据表规格
6.2.1 股票基础信息表 (stock_info)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| stock_code | VARCHAR(20) | PRIMARY KEY | 股票代码(如 600519.SH) |
| stock_name | VARCHAR(100) | NOT NULL | 股票名称 |
| exchange | VARCHAR(20) | NOT NULL | 交易所(SSE/SZSE) |
| industry | VARCHAR(100) | 所属行业(申万一级) | |
| list_date | DATE | 上市日期 | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
| updated_at | DATETIME | DEFAULT GETDATE() | 更新时间 |
索引:
idx_stock_industryON (industry)idx_stock_exchangeON (exchange)
6.2.2 日行情数据表 (market_daily)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY IDENTITY | 主键 |
| stock_code | VARCHAR(20) | NOT NULL, FK | 股票代码 |
| trade_date | DATE | NOT NULL | 交易日期 |
| open_price | DECIMAL(10,3) | NOT NULL | 开盘价 |
| close_price | DECIMAL(10,3) | NOT NULL | 收盘价 |
| high_price | DECIMAL(10,3) | NOT NULL | 最高价 |
| low_price | DECIMAL(10,3) | NOT NULL | 最低价 |
| volume | BIGINT | NOT NULL | 成交量(手) |
| amount | DECIMAL(18,2) | NOT NULL | 成交额(元) |
| turnover_rate | DECIMAL(8,4) | 换手率(%) | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
索引:
idx_market_stock_dateON (stock_code, trade_date) UNIQUEidx_market_dateON (trade_date)
约束:
- UNIQUE (stock_code, trade_date)
6.2.3 财务数据表 (financial_data)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY IDENTITY | 主键 |
| stock_code | VARCHAR(20) | NOT NULL, FK | 股票代码 |
| report_date | DATE | NOT NULL | 报告期 |
| report_type | VARCHAR(20) | NOT NULL | 报告类型(年报/季报) |
| revenue | DECIMAL(18,2) | 营业收入(元) | |
| net_profit | DECIMAL(18,2) | 净利润(元) | |
| total_assets | DECIMAL(18,2) | 总资产(元) | |
| total_equity | DECIMAL(18,2) | 净资产(元) | |
| roe | DECIMAL(8,4) | ROE(%) | |
| pe_ratio | DECIMAL(10,2) | 市盈率 | |
| pb_ratio | DECIMAL(10,2) | 市净率 | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
索引:
idx_financial_stock_dateON (stock_code, report_date)idx_financial_dateON (report_date)
6.2.4 新闻数据表 (news_data)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY IDENTITY | 主键 |
| stock_code | VARCHAR(20) | FK | 股票代码(可为空,表示宏观新闻) |
| title | VARCHAR(500) | NOT NULL | 标题 |
| content | TEXT | 内容 | |
| source | VARCHAR(100) | NOT NULL | 来源 |
| publish_time | DATETIME | NOT NULL | 发布时间 |
| sentiment_score | DECIMAL(4,3) | 情绪评分(-1~+1) | |
| sentiment_label | VARCHAR(20) | 情绪标签(正面/负面/中性) | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
索引:
idx_news_stock_timeON (stock_code, publish_time)idx_news_timeON (publish_time)
6.2.5 技术指标表 (tech_indicators)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY IDENTITY | 主键 |
| stock_code | VARCHAR(20) | NOT NULL, FK | 股票代码 |
| trade_date | DATE | NOT NULL | 交易日期 |
| ma5 | DECIMAL(10,3) | 5日均线 | |
| ma10 | DECIMAL(10,3) | 10日均线 | |
| ma20 | DECIMAL(10,3) | 20日均线 | |
| macd | DECIMAL(10,4) | MACD | |
| rsi | DECIMAL(8,4) | RSI | |
| kdj_k | DECIMAL(8,4) | KDJ-K值 | |
| kdj_d | DECIMAL(8,4) | KDJ-D值 | |
| kdj_j | DECIMAL(8,4) | KDJ-J值 | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
索引:
idx_tech_stock_dateON (stock_code, trade_date) UNIQUE
6.2.6 因子数据表 (factor_data)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY IDENTITY | 主键 |
| stock_code | VARCHAR(20) | NOT NULL, FK | 股票代码 |
| calc_date | DATE | NOT NULL | 计算日期 |
| factor_name | VARCHAR(50) | NOT NULL | 因子名称 |
| factor_value | DECIMAL(12,6) | NOT NULL | 因子值 |
| factor_type | VARCHAR(50) | NOT NULL | 因子类型(价值/动量/质量等) |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
索引:
idx_factor_stock_date_nameON (stock_code, calc_date, factor_name)idx_factor_typeON (factor_type)
6.2.7 研报数据表 (research_report)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY IDENTITY | 主键 |
| stock_code | VARCHAR(20) | FK | 股票代码 |
| title | VARCHAR(500) | NOT NULL | 标题 |
| summary | TEXT | 摘要 | |
| rating | VARCHAR(50) | 评级(买入/增持/中性等) | |
| institution | VARCHAR(200) | NOT NULL | 研究机构 |
| publish_date | DATE | NOT NULL | 发布日期 |
| content_url | VARCHAR(500) | 原文链接 | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
索引:
idx_report_stock_dateON (stock_code, publish_date)idx_report_institutionON (institution)
6.2.8 宏观指标定义表 (macro_indicator)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| indicator_code | VARCHAR(50) | PRIMARY KEY | 指标代码 |
| indicator_name | VARCHAR(200) | NOT NULL | 指标名称 |
| unit | VARCHAR(50) | 单位 | |
| frequency | VARCHAR(20) | NOT NULL | 频率(日/月/季/年) |
| source | VARCHAR(100) | 数据源 | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
6.2.9 宏观数据表 (macro_data)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY IDENTITY | 主键 |
| indicator_code | VARCHAR(50) | NOT NULL, FK | 指标代码 |
| data_date | DATE | NOT NULL | 数据日期 |
| value | DECIMAL(18,4) | NOT NULL | 数值 |
| region | VARCHAR(100) | 地区 | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
索引:
idx_macro_indicator_dateON (indicator_code, data_date)
6.2.10 利率类型定义表 (interest_rate)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| rate_type | VARCHAR(50) | PRIMARY KEY | 利率类型 |
| rate_name | VARCHAR(200) | NOT NULL | 利率名称 |
| term | VARCHAR(50) | 期限 | |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
6.2.11 利率数据表 (rate_data)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY IDENTITY | 主键 |
| rate_type | VARCHAR(50) | NOT NULL, FK | 利率类型 |
| data_date | DATE | NOT NULL | 数据日期 |
| rate | DECIMAL(8,4) | NOT NULL | 利率值(%) |
| created_at | DATETIME | DEFAULT GETDATE() | 创建时间 |
索引:
idx_rate_type_dateON (rate_type, data_date)
7. API 接口设计
7.1 数据采集模块 API (v1.0)
| 方法 | 路径 | 功能 | 请求参数 | 响应 |
|---|---|---|---|---|
| GET | /api/v1/dc/status | 查询数据源连接状态 | 无 | 各数据源健康状态 |
| GET | /api/v1/dc/jobs | 查询最近采集任务 | limit (可选) | 任务执行日志列表 |
| POST | /api/v1/dc/trigger | 手动触发数据采集 | job_type (market/financial/news) | 触发的任务ID |
| GET | /api/v1/data-viewer/query | SQL 数据浏览器 | sql (受限 SELECT) | 查询结果 (JSON) |
详细接口规格:
7.1.1 查询数据源连接状态
请求:
GET /api/v1/dc/status响应:
{
"status": "success",
"data": {
"qmt": {
"status": "healthy",
"last_check": "2026-04-16T10:30:00+08:00",
"latency_ms": 45
},
"akshare": {
"status": "healthy",
"last_check": "2026-04-16T10:30:00+08:00",
"latency_ms": 120
},
"crawler": {
"status": "degraded",
"last_check": "2026-04-16T10:30:00+08:00",
"error": "Rate limit exceeded"
}
}
}7.1.2 查询最近采集任务
请求:
GET /api/v1/dc/jobs?limit=10响应:
{
"status": "success",
"data": {
"jobs": [
{
"job_id": "job-20260416-001",
"job_type": "market_daily",
"status": "completed",
"started_at": "2026-04-16T09:00:00+08:00",
"completed_at": "2026-04-16T09:15:23+08:00",
"records_processed": 4500,
"error_message": null
},
{
"job_id": "job-20260416-002",
"job_type": "financial",
"status": "failed",
"started_at": "2026-04-16T09:30:00+08:00",
"completed_at": "2026-04-16T09:32:45+08:00",
"records_processed": 120,
"error_message": "Connection timeout"
}
],
"total": 2
}
}7.1.3 手动触发数据采集
请求:
POST /api/v1/dc/trigger
Content-Type: application/json
{
"job_type": "market",
"params": {
"stock_codes": ["600519.SH", "000858.SZ"],
"start_date": "2026-04-01",
"end_date": "2026-04-16"
}
}响应:
{
"status": "success",
"data": {
"job_id": "job-20260416-003",
"message": "Job triggered successfully"
}
}7.1.4 SQL 数据浏览器
请求:
GET /api/v1/data-viewer/query?sql=SELECT%20*%20FROM%20stock_info%20LIMIT%2010响应:
{
"status": "success",
"data": {
"columns": ["stock_code", "stock_name", "exchange", "industry", "list_date"],
"rows": [
["600519.SH", "贵州茅台", "SSE", "食品饮料", "2001-08-27"],
["000858.SZ", "五粮液", "SZSE", "食品饮料", "1998-04-27"]
],
"row_count": 2
}
}7.2 量化分析模块 API (v1.5)
| 方法 | 路径 | 功能 | 请求参数 | 响应 |
|---|---|---|---|---|
| GET | /api/v1/quant/indicators | 查询技术指标 | stock_code, start_date, end_date | 指标数据列表 |
| POST | /api/v1/quant/calculate | 计算自定义指标 | stock_code, indicator_type, params | 计算结果 |
| GET | /api/v1/quant/factors | 查询因子数据 | stock_code, factor_type, date | 因子值列表 |
| GET | /api/v1/quant/signals | 查询交易信号 | stock_code, start_date, end_date | 信号列表 |
7.3 风险评估模块 API (v2.5)
| 方法 | 路径 | 功能 | 请求参数 | 响应 |
|---|---|---|---|---|
| POST | /api/v1/risk/var | 计算 VaR | portfolio, confidence_level | VaR 值 |
| GET | /api/v1/risk/exposure | 查询敞口分析 | portfolio_id, date | 敞口报告 |
| GET | /api/v1/risk/alerts | 查询风险告警 | severity, start_date | 告警列表 |
7.4 回测引擎模块 API (v2.5)
| 方法 | 路径 | 功能 | 请求参数 | 响应 |
|---|---|---|---|---|
| POST | /api/v1/backtest/run | 执行回测 | strategy, start_date, end_date | 回测任务ID |
| GET | /api/v1/backtest/result | 查询回测结果 | task_id | 回测报告 |
| GET | /api/v1/backtest/metrics | 查询绩效指标 | task_id | 绩效指标集 |
7.5 交易决策模块 API (v2.5+)
| 方法 | 路径 | 功能 | 请求参数 | 响应 |
|---|---|---|---|---|
| POST | /api/v1/trading/order | 生成订单建议 | signal_id, position_size | 订单建议 |
| POST | /api/v1/trading/approve | 审批订单 | order_id, action, comment | 审批结果 |
| GET | /api/v1/trading/status | 查询订单状态 | order_id | 执行状态 |
8. 数据流与工作流
8.1 数据采集流程
8.2 量化分析流程
8.3 风控审批流程
9. 文档、知识库与反馈闭环集成
本章节阐述如何将 doc.zldata.ai-time.net (Nextra), comment.zldata.ai-time.net (Waline) 和 zldata.ai-time.net (主平台) 集成为一个有机的生态系统。
9.1 集成架构图
9.2 详细集成设计
| 集成点 | 实现方式 | 价值 |
|---|---|---|
| Doc 与 Comment 集成 | 在 Nextra 主题的 _app.tsx 或 MDX 组件中,引入 Waline 的 React 组件 @waline/client/react,并将其放置在页面底部。 | 用户在查阅文档时可即时提问、报告错误或提出建议,形成文档的”活”的反馈。 |
| 主平台与 Doc 集成 | 1. 顶部导航栏: 主站页眉增加”文档”链接。 2. 上下文帮助: 在数据看板、策略配置等复杂页面,放置”?“图标,点击后新窗口打开对应文档章节。 | 降低用户学习成本,让文档真正成为”随叫随到”的帮助系统。 |
| 主平台与 Comment 集成 (反馈闭环) | 1. 产品内反馈: 在主站右下角放置一个固定的”反馈”按钮。 2. API 调用: 点击按钮弹出表单,提交后,后端调用 Waline 的 comment/add API,自动发布一条带有特定标签(如 [Product Feedback])和用户上下文信息的评论。 | 将分散的用户反馈统一收敛到评论系统中,形成产品优化的需求池。开发者和产品经理可通过订阅 Waline 评论来跟踪用户声音。 |
10. 安全设计
10.1 API 通信安全
- HTTPS 加密:前端与后端之间使用 HTTPS 加密传输。
- CORS 配置:后端 FastAPI 启用 CORS,仅允许
zldata.ai-time.net和doc.zldata.ai-time.net两个源。 - API 认证:v1.0 阶段暂不实现用户认证,v2.0 引入 JWT Token 认证机制。
10.2 数据查询安全
- SQL 注入防护:
/api/v1/data-viewer/query接口必须严格校验 SQL 语句,仅允许SELECT操作。 - 表访问控制:限制可查询的表,禁止访问系统表和敏感表。
- 返回行数限制:单次查询最多返回 1000 行数据。
10.3 密钥管理
- 环境变量注入:所有密钥(数据库连接串、LLM API Key)通过 Render 和 Vercel 的 Environment Variables 功能注入。
- 代码库安全:代码库中不包含任何硬编码密钥,
.env文件已加入.gitignore。 - 密钥轮换:定期轮换敏感密钥(建议每季度一次)。
10.4 数据安全
- 敏感数据脱敏:财务数据中的敏感字段(如具体金额)在日志中脱敏显示。
- 访问日志:记录所有数据访问操作,支持审计追踪。
- 备份策略:数据库每日自动备份,保留 7 天备份记录。
11. 监控与可观测性
11.1 监控架构
11.2 关键监控指标
| 指标类别 | 指标名称 | 阈值 | 说明 |
|---|---|---|---|
| 系统健康 | CPU 使用率 | >80% 告警 | 服务器 CPU 负载 |
| 系统健康 | 内存使用率 | >85% 告警 | 服务器内存占用 |
| 系统健康 | 磁盘使用率 | >90% 告警 | 磁盘空间占用 |
| API 性能 | 请求响应时间 | >2s 告警 | API 平均响应时间 |
| API 性能 | 错误率 | >5% 告警 | HTTP 5xx 错误比例 |
| 数据采集 | 任务成功率 | <95% 告警 | 数据采集任务成功率 |
| 数据采集 | 数据延迟 | >1h 告警 | 数据更新延迟 |
| 数据质量 | 完整性 | <98% 告警 | 数据完整性比例 |
| 智能体 | 任务执行时间 | >10min 告警 | Agent 任务平均耗时 |
| 智能体 | LLM 调用失败率 | >10% 告警 | LLM API 调用失败比例 |
11.3 日志规范
日志级别:
DEBUG:详细的调试信息(仅开发环境)INFO:关键业务操作(数据采集完成、策略生成等)WARNING:潜在问题(数据质量警告、性能下降等)ERROR:错误但系统可继续运行(API 调用失败、数据解析错误等)CRITICAL:严重错误导致系统不可用(数据库连接失败、服务崩溃等)
日志格式(JSON):
{
"timestamp": "2026-04-16T10:30:00.123+08:00",
"level": "INFO",
"logger": "zldata.data_collector",
"message": "Market data collection completed",
"context": {
"job_id": "job-20260416-001",
"stock_count": 4500,
"duration_ms": 923000
},
"trace_id": "abc-123-def",
"span_id": "span-456"
}12. 容错与弹性设计
12.1 数据采集容错
| 故障场景 | 容错策略 | 恢复时间 |
|---|---|---|
| QMT 连接失败 | 自动切换至 akshare 备份数据源 | <30s |
| akshare API 限流 | 指数退避重试,最多3次 | <5min |
| 网络超时 | 超时后重试,记录失败任务 | <1min |
| 数据格式异常 | 标记异常数据,跳过并继续 | 立即 |
| 数据库写入失败 | 写入本地缓存队列,稍后重试 | <10min |
12.2 API 服务容错
| 故障场景 | 容错策略 | 恢复时间 |
|---|---|---|
| 数据库连接池耗尽 | 自动扩容连接池,告警通知 | <1min |
| Redis 缓存失效 | 降级至直接查询数据库 | 立即 |
| 外部 API 调用失败 | 返回缓存数据或错误提示 | 立即 |
| 服务过载 | 启用请求限流(Rate Limiting) | 立即 |
12.3 智能体容错
| 故障场景 | 容错策略 | 恢复时间 |
|---|---|---|
| LLM API 超时 | 重试3次,失败后降级至规则引擎 | <30s |
| LLM 输出格式错误 | 解析失败后请求重新生成 | <10s |
| Agent 任务超时 | 终止任务,返回超时错误 | 立即 |
| 消息队列积压 | 增加Worker实例,告警通知 | <5min |
13. 非功能需求
13.1 性能需求
| 指标 | 目标值 | 说明 |
|---|---|---|
| API 响应时间 | <500ms (P95) | 简单查询类 API |
| API 响应时间 | <2s (P95) | 复杂分析类 API |
| 数据采集吞吐量 | >5000条/分钟 | 单数据源采集速度 |
| 并发用户数 | >50 | 同时在线用户数(v1.0) |
| 数据库查询性能 | <100ms | 单表查询(带索引) |
| 缓存命中率 | >80% | 热数据缓存命中率 |
13.2 可用性需求
| 指标 | 目标值 | 说明 |
|---|---|---|
| 系统可用性 | >99% | 月度可用性 |
| 数据采集成功率 | >95% | 单次采集任务成功率 |
| 故障恢复时间 | <15min | 平均故障恢复时间 |
13.3 可扩展性需求
| 指标 | 目标值 | 说明 |
|---|---|---|
| 数据存储容量 | >100GB | v1.0 阶段数据存储需求 |
| 数据表行数 | >1000万行 | 单表最大行数 |
| 水平扩展能力 | 支持 | 支持增加 Worker 实例扩展处理能力 |
13.4 可维护性需求
| 指标 | 目标值 | 说明 |
|---|---|---|
| 代码覆盖率 | >70% | 单元测试代码覆盖率 |
| 文档完整性 | 100% | 所有 API 都有文档 |
| 部署时间 | <10min | 从代码提交到生产部署 |
| 回滚时间 | <5min | 生产环境回滚时间 |
14. 项目结构
14.1 Monorepo 目录结构
zldata/
├── frontend/ # Next.js 前端应用
│ ├── app/ # App Router 页面
│ │ ├── (dashboard)/ # 数据看板页面组
│ │ ├── api/ # API Routes
│ │ └── layout.tsx # 根布局
│ ├── components/ # React 组件
│ │ ├── ui/ # 基础 UI 组件
│ │ ├── charts/ # 图表组件
│ │ └── dashboard/ # 看板组件
│ ├── lib/ # 工具库
│ ├── styles/ # 样式文件
│ ├── package.json
│ └── next.config.js
│
├── backend/ # FastAPI 后端应用
│ ├── app/
│ │ ├── api/ # API 路由
│ │ │ ├── v1/ # v1 版本 API
│ │ │ │ ├── data_collection.py
│ │ │ │ ├── quantitative.py
│ │ │ │ └── risk.py
│ │ ├── core/ # 核心配置
│ │ │ ├── config.py # 配置管理
│ │ │ ├── database.py # 数据库连接
│ │ │ └── security.py # 安全相关
│ │ ├── models/ # SQLAlchemy 模型
│ │ ├── schemas/ # Pydantic 模型
│ │ ├── services/ # 业务逻辑层
│ │ │ ├── data_collector/
│ │ │ ├── quant_analyzer/
│ │ │ └── risk_assessor/
│ │ ├── agents/ # 智能体模块 (v2.0+)
│ │ │ ├── coordinator/
│ │ │ ├── data_analyst/
│ │ │ ├── quant_strategist/
│ │ │ └── risk_officer/
│ │ └── workers/ # 后台任务
│ ├── tests/ # 测试文件
│ ├── requirements.txt
│ └── main.py
│
├── doc-site/ # Nextra 文档站
│ ├── pages/ # MDX 页面
│ │ ├── index.mdx
│ │ ├── getting-started.mdx
│ │ └── api-reference.mdx
│ ├── theme.config.jsx # Nextra 配置
│ └── package.json
│
├── scripts/ # 脚本工具
│ ├── init_db.py # 数据库初始化
│ ├── seed_data.py # 种子数据
│ └── backup.sh # 备份脚本
│
├── docker/ # Docker 配置
│ ├── Dockerfile.backend
│ ├── Dockerfile.frontend
│ └── docker-compose.yml
│
├── .github/ # GitHub 配置
│ └── workflows/ # CI/CD 工作流
│
├── docs/ # 项目文档
│ ├── design/ # 设计文档
│ └── api/ # API 文档
│
├── .env.example # 环境变量示例
├── .gitignore
├── README.md
└── Makefile # 常用命令14.2 关键模块说明
14.2.1 数据采集模块 (backend/app/services/data_collector/)
data_collector/
├── __init__.py
├── base.py # 基础采集器抽象类
├── qmt_collector.py # QMT 数据采集器
├── akshare_collector.py # akshare 数据采集器
├── crawler.py # 爬虫采集器
├── validator.py # 数据校验器
├── normalizer.py # 数据标准化器
└── scheduler.py # 调度器14.2.2 量化分析模块 (backend/app/services/quant_analyzer/)
quant_analyzer/
├── __init__.py
├── indicators.py # 技术指标计算
├── factors.py # 因子计算
├── signals.py # 信号生成
├── backtest.py # 回测引擎
└── performance.py # 绩效计算14.2.3 智能体模块 (backend/app/agents/)
agents/
├── __init__.py
├── base.py # 基础智能体抽象类
├── coordinator/ # 主协调智能体
│ ├── __init__.py
│ ├── agent.py
│ └── workflows.py
├── data_analyst/ # 数据分析师
├── quant_strategist/ # 量化策略师
├── risk_officer/ # 风控官
├── sentiment_analyst/ # 新闻情绪分析师
├── portfolio_manager/ # 组合经理
├── backtest_engineer/ # 回测工程师
└── doc_engineer/ # 文档工程师15. 实施路线图
15.1 v1.0 实施计划 (2026 Q2)
目标:数据采集与可视化模块上线
| 阶段 | 时间 | 交付物 | 验收标准 |
|---|---|---|---|
| 基础设施搭建 | Week 1-2 | - Azure SQL 数据库部署 - Render 后端服务部署 - Vercel 前端部署 | 所有服务可访问,数据库连接正常 |
| 数据采集开发 | Week 3-6 | - QMT 采集器实现 - akshare 采集器实现 - 数据校验与清洗逻辑 | 能成功采集 A 股日行情数据,数据质量 >95% |
| API 开发 | Week 7-8 | - 数据源状态 API - 采集任务管理 API - SQL 数据浏览器 API | API 功能完整,通过单元测试 |
| 前端开发 | Week 9-10 | - 数据看板页面 - 数据源状态展示 - SQL 查询界面 | 前端可正常展示数据,交互流畅 |
| 测试与上线 | Week 11-12 | - 集成测试 - 性能测试 - 生产环境部署 | 所有测试通过,系统稳定运行 |
15.2 v1.5 实施计划 (2026 Q3)
目标:基础量化分析引擎
| 阶段 | 时间 | 交付物 |
|---|---|---|
| 技术指标计算 | Week 1-3 | MA、MACD、RSI、KDJ 等指标计算 API |
| 因子计算 | Week 4-6 | 价值因子、动量因子、质量因子计算 |
| 信号生成 | Week 7-9 | 基于指标/因子的交易信号生成逻辑 |
| 前端展示 | Week 10-12 | 技术指标图表、信号展示页面 |
15.3 v2.0 实施计划 (2026 Q4)
目标:智能体试点
| 阶段 | 时间 | 交付物 |
|---|---|---|
| 智能体框架 | Week 1-3 | 基础智能体抽象类、消息队列集成 |
| 主协调智能体 | Week 4-6 | 任务分解、工作流编排逻辑 |
| 数据分析师 Agent | Week 7-9 | 数据获取、质量检查 Agent |
| 对话界面 | Week 10-12 | 前端对话界面、对话历史管理 |
16. 设计原则
16.1 架构设计原则
- 模块化与解耦:各功能模块独立开发、独立部署,通过清晰的接口通信。
- 渐进式演进:从简单到复杂,每个版本都有完整可用的交付物。
- 云原生优先:早期采用云服务快速验证,后期迁移至自托管环境。
- 可观测性设计:从第一天起就内置监控、日志和追踪能力。
- 安全优先:所有设计决策都需考虑安全影响。
16.2 代码设计原则
- 类型安全:使用 Pydantic 和 TypeScript 确保类型安全。
- 异步优先:I/O 密集型操作使用异步编程。
- 测试驱动:核心业务逻辑必须有单元测试覆盖。
- 文档即代码:API 文档自动生成,代码注释清晰。
- 配置外部化:所有配置通过环境变量注入。
16.3 数据设计原则
- 单一数据源:每个数据项有唯一的数据源标识。
- 不可变记录:数据记录只增不改,保留完整历史。
- 时间戳完整:所有记录包含创建时间和更新时间。
- 索引优化:根据查询模式设计合理的索引策略。
- 分区策略:大表按时间分区,提升查询性能。
16.4 智能体设计原则
- 单一职责:每个智能体专注于一个业务领域。
- 人类监督:所有关键决策需人类确认。
- 可解释性:智能体的推理过程可追溯、可解释。
- 失败降级:LLM 不可用时降级至规则引擎。
- 上下文管理:合理管理对话上下文,避免内存溢出。
17. 待细化事项 (TBD)
17.1 技术细节待定
- QMT API 具体调用方式和认证机制
- LLM 提示词模板库设计
- 智能体工作流 DAG 的可视化编辑器
- 数据备份与恢复的详细流程
- 多租户隔离方案(如需支持多团队)
17.2 业务规则待定
- 具体的风控阈值参数(VaR 限额、集中度上限等)
- 交易信号的置信度阈值
- 数据质量评估的详细标准
- 用户权限和角色定义
- 审批流程的具体规则
17.3 运维相关待定
- 生产环境的监控告警渠道配置
- 故障应急响应流程
- 数据迁移和升级策略
- 容量规划和扩容触发条件
- 安全审计流程
附录
A. 术语表
| 术语 | 说明 |
|---|---|
| QMT | 迅投量化交易终端,提供行情数据和交易接口 |
| akshare | 开源金融数据接口库 |
| VaR | Value at Risk,在险价值 |
| CVaR | Conditional Value at Risk,条件在险价值 |
| 夏普比率 | 风险调整后收益率的衡量指标 |
| 最大回撤 | 历史最高点到最低点的最大跌幅 |
| 因子 | 影响股票收益的特征变量 |
| 多智能体 | 多个 AI Agent 协同工作的架构模式 |
B. 参考文档
C. 变更历史
| 版本 | 日期 | 变更内容 | 作者 |
|---|---|---|---|
| v1.0 | 2026-03-15 | 初始版本,定义基础架构 | Z.WU |
| v2.0 | 2026-03-28 | 增加智能体团队设计、详细数据模型 | Z.WU + AI Agent |
| v2.1 | 2026-04-03 | 基于参考实现优化数据采集模块:扩充数据模型(新增宏观/利率/研报/日历4张表)、补充双源冗余/幂等写入/增量更新/并行采集等设计、新增数据表详细规格 | AI Review Agent |
| v3.0 | 2026-04-15 | 采用”模块化构建、垂直切片式迭代”策略,明确v1.0里程碑聚焦数据采集与可视化,补充云部署架构和文档集成设计 | Z.WU + AI Review Agent |
| v3.1 | 2026-04-16 | 合并v3.0和v2.1内容,整合演进路线图与详细技术设计,形成完整的PRD文档 | AI Agent |
文档结束 | **故障