Fundamental_Analysis/services/data-persistence-service/assets/README.md
Lv, Qi 21155bc4f8 feat(realtime): 接入前端实时报价并完善后端缓存
前端: 新增 RealTimeQuoteResponse 类型;新增 useRealtimeQuote Hook 并在报告页图表旁展示价格与时间戳(严格 TTL,无兜底)

FastAPI: 新增 GET /financials/{market}/{symbol}/realtime?max_age_seconds=.. 只读端点;通过 DataPersistenceClient 读取 Rust 缓存

Rust: 新增 realtime_quotes hypertable 迁移;新增 POST /api/v1/market-data/quotes 与 GET /api/v1/market-data/quotes/{symbol}?market=..;新增 DTO/Model/DB 函数;修正 #[api] 宏与路径参数;生成 SQLx 离线缓存 (.sqlx) 以支持离线构建

Python: DataPersistenceClient 新增 upsert/get 实时报价,并调整 GET 路径与参数

说明: TradingView 图表是第三方 websocket,不受我们缓存控制;页面数值展示走自有缓存通路,统一且可控。
2025-11-09 05:12:14 +08:00

87 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WASM CLI - API调用功能已实现
## 🎉 问题已解决
之前WASM CLI只显示"Successfully matched command"而不执行实际API调用的问题已经修复
## 🔧 修复内容
1. **实现了真正的HTTP API调用**: 使用JavaScript的fetch API替代了原来的命令匹配功能
2. **添加了WASM绑定**: 通过web-sys和wasm-bindgen-futures实现异步HTTP请求
3. **修复了依赖冲突**: 通过特性门控解决了reqwest在WASM环境下的兼容性问题
4. **新增异步API**: `run_command_async()` 函数现在可以真正执行API请求并返回结果
## 📋 主要更改
### 1. 新的初始化函数
```javascript
// 旧版本
init_cli(spec_json)
// 新版本 - 需要同时传递OpenAPI规范和base URL
init_cli(spec_json, base_url)
```
### 2. 新的异步命令执行函数
```javascript
// 新增 - 真正执行API调用
const result = await run_command_async("v1.hello.get");
// 旧版本 - 已废弃,只返回错误信息
const result = run_command("v1.hello.get");
```
## 🚀 使用方法
### 1. 初始化CLI
```javascript
import init, { init_cli, run_command_async } from './pkg/forge_cli_wasm.js';
// 初始化WASM模块
await init();
// 获取OpenAPI规范
const response = await fetch('http://localhost:3000/api-docs/openapi.json');
const spec = await response.text();
// 初始化CLI
init_cli(spec, 'http://localhost:3000');
```
### 2. 执行API命令
```javascript
// 执行GET请求
const result1 = await run_command_async("v1.hello.get");
// 执行带参数的请求
const result2 = await run_command_async("v1.add.get --a 1 --b 2");
// 执行POST请求如果API支持
const result3 = await run_command_async('v1.create.post --body \'{"name": "test"}\'');
```
## 🧪 测试
打开 `test.html` 文件在浏览器中测试:
1. 确保你的服务已运行在 http://localhost:3000
2. 点击 "Initialize CLI" 按钮
3. 输入命令如 "v1.hello.get" 或 "v1.add.get --a 1 --b 2"
4. 点击 "Run Command" 按钮
5. 查看实际的API响应结果
## ⚠️ 重要注意事项
1. **旧的`run_command`函数已废弃**: 请使用新的`run_command_async`函数
2. **需要CORS支持**: 确保你的API服务器支持跨域请求
3. **异步操作**: 所有API调用现在都是异步的需要使用`await`
4. **错误处理**: API请求失败时会返回错误信息而不是抛出异常
## 🔍 调试
- 打开浏览器开发者工具查看控制台日志
- 网络请求会显示在Network标签页中
- 任何错误都会在输出区域显示
现在你的WASM CLI可以真正与API进行交互不再只是"匹配命令"了!🎉