diff --git a/docs/en/docs/account/overview.mdx b/docs/en/docs/account/overview.mdx
index cc0d61b8..de730863 100644
--- a/docs/en/docs/account/overview.mdx
+++ b/docs/en/docs/account/overview.mdx
@@ -18,7 +18,7 @@ Portfolio profit/loss analysis and currency exchange rates.
| [profit_analysis_summary](./portfolio/profit-analysis-summary) | Overall portfolio P&L summary |
| [profit_analysis_detail](./portfolio/profit-analysis-detail) | Per-position P&L breakdown |
| [profit_analysis_by_market](./portfolio/profit-analysis-by-market) | P&L grouped by market |
-| [capital_flow](./portfolio/capital-flow) | Account capital flow history |
+| [capital_flow](./portfolio/profit-analysis-flows) | Account capital flow history |
| [exchange_rates](./portfolio/exchange-rates) | Current exchange rates for supported currencies |
## AlertContext
@@ -49,7 +49,7 @@ Create and manage community share lists (watchlists shared with others).
| Method | Description |
|---|---|
-| [list_sharelist](./sharelist/list-sharelist) | List all share lists |
-| [create_sharelist](./sharelist/create-sharelist) | Create a new share list |
-| [update_sharelist](./sharelist/update-sharelist) | Update a share list |
-| [delete_sharelist](./sharelist/delete-sharelist) | Delete a share list |
+| [list_sharelist](/docs/content/sharelist/list-sharelist) | List all share lists |
+| [create_sharelist](/docs/content/sharelist/create-sharelist) | Create a new share list |
+| [update_sharelist](/docs/content/sharelist/update-sharelist) | Update a share list |
+| [delete_sharelist](/docs/content/sharelist/delete-sharelist) | Delete a share list |
diff --git a/docs/en/docs/legal/index.mdx b/docs/en/docs/legal/index.mdx
index df3e2713..ece66a25 100644
--- a/docs/en/docs/legal/index.mdx
+++ b/docs/en/docs/legal/index.mdx
@@ -11,12 +11,12 @@ Legal agreements and disclaimers for Longbridge Developers. Documents are provid
## Singapore (SG)
-- [User Data Authorisation and Acknowledgement](./user-data-authorization-sg)
-- [Developers Platform Disclaimer](./developers-platform-disclaimer-sg)
-- [API Non-Commercial Licence Agreement](./api-license-agreement-sg)
+- [User Data Authorisation and Acknowledgement](/docs/legal/user-data-authorization-sg)
+- [Developers Platform Disclaimer](/docs/legal/developers-platform-disclaimer-sg)
+- [API Non-Commercial Licence Agreement](/docs/legal/api-license-agreement-sg)
## Hong Kong (HK)
-- [User Data Authorisation and Acknowledgement](./user-data-authorization-hk)
-- [Developers Platform Disclaimer](./developers-platform-disclaimer-hk)
-- [API Non-Commercial Licence Agreement](./api-license-agreement-hk)
+- [User Data Authorisation and Acknowledgement](/docs/legal/user-data-authorization-hk)
+- [Developers Platform Disclaimer](/docs/legal/developers-platform-disclaimer-hk)
+- [API Non-Commercial Licence Agreement](/docs/legal/api-license-agreement-hk)
diff --git a/docs/en/docs/market/status/trade-day.mdx b/docs/en/docs/market/status/trade-day.mdx
index cb111a7a..68b536e8 100644
--- a/docs/en/docs/market/status/trade-day.mdx
+++ b/docs/en/docs/market/status/trade-day.mdx
@@ -22,7 +22,7 @@ longbridge trading days CN
:::info
-[Business Command](../../socket/biz_command): `9`
+[Business Command](/docs/socket/biz_command): `9`
:::
diff --git a/docs/en/docs/market/status/trade-session.mdx b/docs/en/docs/market/status/trade-session.mdx
index c8a32e35..e5f75076 100644
--- a/docs/en/docs/market/status/trade-session.mdx
+++ b/docs/en/docs/market/status/trade-session.mdx
@@ -18,7 +18,7 @@ longbridge trading session
:::info
-[Business Command](../../socket/biz_command): `8`
+[Business Command](/docs/socket/biz_command): `8`
:::
@@ -231,7 +231,7 @@ func main() {
| ∟ trade_session | object[] | Trading session |
| ∟∟ beg_time | int32 | Being trading time, in `hhmm` format, for example: `900` |
| ∟∟ end_time | int32 | End trading time, in `hhmm` format, for example: `1400` |
-| ∟∟ trade_session | int32 | Trading session, see [TradeSession](../objects#tradesession---trading-session) |
+| ∟∟ trade_session | int32 | Trading session, see [TradeSession](/docs/quote/objects#tradesession---trading-session) |
### Protobuf
diff --git a/docs/en/docs/quote/options/optionchain-date-strike.mdx b/docs/en/docs/quote/options/optionchain-date-strike.mdx
index 2d75ad84..795e51aa 100644
--- a/docs/en/docs/quote/options/optionchain-date-strike.mdx
+++ b/docs/en/docs/quote/options/optionchain-date-strike.mdx
@@ -31,7 +31,7 @@ longbridge option chain TSLA.US --date 2026-04-17
| Name | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
| symbol | string | Yes | Security code, in `ticker.region` format, for example:`700.HK` |
-| expiry_date | string | Yes | Option expiry date,in `YYMMDD` format, for example: `20220429`, obtained by [Option Expiry Date](./optionchain_date.md) API |
+| expiry_date | string | Yes | Option expiry date,in `YYMMDD` format, for example: `20220429`, obtained by [Option Expiry Date](./optionchain-date) API |
### Protobuf
diff --git a/docs/en/docs/quote/subscribe/overview.mdx b/docs/en/docs/quote/subscribe/overview.mdx
index 4f3ed773..ecbb8b42 100644
--- a/docs/en/docs/quote/subscribe/overview.mdx
+++ b/docs/en/docs/quote/subscribe/overview.mdx
@@ -28,15 +28,15 @@ Subscriptions push incremental updates in real time. For one-off or on-demand qu
| Data | Pull API |
|------|----------|
-| Quotes | [Quotes](../stocks/quote) |
-| Depth | [Depth](../stocks/depth) |
-| Broker queue | [Broker Queue](../stocks/brokers) |
-| Trades | [Trades](../stocks/trade) |
-| Intraday | [Intraday](../stocks/intraday) |
-| Candlesticks | [Candlesticks](../stocks/candlestick) |
+| Quotes | [Quotes](/docs/quote/pull/quote) |
+| Depth | [Depth](/docs/quote/pull/depth) |
+| Broker queue | [Broker Queue](/docs/quote/pull/brokers) |
+| Trades | [Trades](/docs/quote/pull/trade) |
+| Intraday | [Intraday](/docs/quote/pull/intraday) |
+| Candlesticks | [Candlesticks](/docs/quote/pull/candlestick) |
## Notes
- Subscriptions are scoped to the current connection; they are cleared when the connection drops.
-- Use [Get Subscriptions](./subsciption) to inspect your active subscriptions at any time.
+- Use [Get Subscriptions](./subscription) to inspect your active subscriptions at any time.
- Quote permissions determine which data types are available. See [Quote Permission Levels](../overview#quote-permission-levels).
diff --git a/docs/en/docs/screener/screener_user_strategies.mdx b/docs/en/docs/screener/screener_user_strategies.mdx
index 3bbcb2d1..d6152398 100644
--- a/docs/en/docs/screener/screener_user_strategies.mdx
+++ b/docs/en/docs/screener/screener_user_strategies.mdx
@@ -219,4 +219,4 @@ func main() {
-The response structure is identical to [screener_recommend_strategies](./screener_recommend_strategies). Please refer to that document for the Schema definition.
+The response structure is identical to [screener_recommend_strategies](/docs/screener/screener-recommend-strategies). Please refer to that document for the Schema definition.
diff --git a/docs/en/docs/socket/control-command.mdx b/docs/en/docs/socket/control-command.mdx
index ee11dbbc..a4cc1378 100644
--- a/docs/en/docs/socket/control-command.mdx
+++ b/docs/en/docs/socket/control-command.mdx
@@ -100,7 +100,7 @@ Server -->> Client: auth response, req_id: 1, session: xxx
```
-> Auth `token` can be created through [HTTP API](./socket-token-api)
+> Auth `token` can be created through [HTTP API](/docs/socket-token-api)
After auth success, server will set session in auth response, client can use the session to reconnect and no need to request a new `token`.
diff --git a/docs/en/docs/style-guide/index.mdx b/docs/en/docs/style-guide/index.mdx
index 9aca98eb..9227d6ec 100644
--- a/docs/en/docs/style-guide/index.mdx
+++ b/docs/en/docs/style-guide/index.mdx
@@ -16,11 +16,11 @@ These guidelines apply to all documentation contributors: human writers, AI agen
| Page | What it covers |
|------|----------------|
-| [Content Types](./content-types) | The nine content types — when to use each, required sections, and title format |
-| [Information Architecture](./information-architecture) | Standard user journey, sidebar ordering, and mixed-content rules |
-| [API Reference Standards](./api-reference) | Endpoint titles, parameter descriptions, cURL examples, and deprecation handling |
-| [Writing Guidelines](./writing-guidelines) | Voice, headings, code examples, callout boxes, links, and tables |
-| [Multilingual and Frontmatter](./multilingual) | Three-language sync rules, frontmatter fields, and what not to write |
+| [Content Types](/docs/style-guide/content-types) | The nine content types — when to use each, required sections, and title format |
+| [Information Architecture](/docs/style-guide/information-architecture) | Standard user journey, sidebar ordering, and mixed-content rules |
+| [API Reference Standards](/docs/style-guide/api-reference) | Endpoint titles, parameter descriptions, cURL examples, and deprecation handling |
+| [Writing Guidelines](/docs/style-guide/writing-guidelines) | Voice, headings, code examples, callout boxes, links, and tables |
+| [Multilingual and Frontmatter](/docs/style-guide/multilingual) | Three-language sync rules, frontmatter fields, and what not to write |
## Content architecture
diff --git a/docs/zh-CN/docs/account/overview.mdx b/docs/zh-CN/docs/account/overview.mdx
index 0d6f1097..92ae105d 100644
--- a/docs/zh-CN/docs/account/overview.mdx
+++ b/docs/zh-CN/docs/account/overview.mdx
@@ -18,7 +18,7 @@ slug: overview
| [profit_analysis_summary](./portfolio/profit-analysis-summary) | 组合整体盈亏汇总 |
| [profit_analysis_detail](./portfolio/profit-analysis-detail) | 按持仓明细的盈亏拆分 |
| [profit_analysis_by_market](./portfolio/profit-analysis-by-market) | 按市场分组的盈亏统计 |
-| [capital_flow](./portfolio/capital-flow) | 账户资金流水记录 |
+| [capital_flow](./portfolio/profit-analysis-flows) | 账户资金流水记录 |
| [exchange_rates](./portfolio/exchange-rates) | 支持币种的当前汇率 |
## AlertContext
@@ -49,7 +49,7 @@ slug: overview
| 方法 | 说明 |
|---|---|
-| [list_sharelist](./sharelist/list-sharelist) | 查看所有股单 |
-| [create_sharelist](./sharelist/create-sharelist) | 新建股单 |
-| [update_sharelist](./sharelist/update-sharelist) | 更新股单 |
-| [delete_sharelist](./sharelist/delete-sharelist) | 删除股单 |
+| [list_sharelist](/zh-CN/docs/content/sharelist/list-sharelist) | 查看所有股单 |
+| [create_sharelist](/zh-CN/docs/content/sharelist/create-sharelist) | 新建股单 |
+| [update_sharelist](/zh-CN/docs/content/sharelist/update-sharelist) | 更新股单 |
+| [delete_sharelist](/zh-CN/docs/content/sharelist/delete-sharelist) | 删除股单 |
diff --git a/docs/zh-CN/docs/legal/index.mdx b/docs/zh-CN/docs/legal/index.mdx
index db5f9cc3..083a762e 100644
--- a/docs/zh-CN/docs/legal/index.mdx
+++ b/docs/zh-CN/docs/legal/index.mdx
@@ -11,12 +11,12 @@ Longbridge Developers 的相关法律协议与免责声明。文件按运营地
## 新加坡(SG)
-- [用户数据授权与确认](./user-data-authorization-sg)
-- [开发者平台免责声明](./developers-platform-disclaimer-sg)
-- [API 非商业许可协议](./api-license-agreement-sg)
+- [用户数据授权与确认](/zh-CN/docs/legal/user-data-authorization-sg)
+- [开发者平台免责声明](/zh-CN/docs/legal/developers-platform-disclaimer-sg)
+- [API 非商业许可协议](/zh-CN/docs/legal/api-license-agreement-sg)
## 香港(HK)
-- [用户数据授权与确认](./user-data-authorization-hk)
-- [开发者平台免责声明](./developers-platform-disclaimer-hk)
-- [API 代码开发者授权协议](./api-license-agreement-hk)
+- [用户数据授权与确认](/zh-CN/docs/legal/user-data-authorization-hk)
+- [开发者平台免责声明](/zh-CN/docs/legal/developers-platform-disclaimer-hk)
+- [API 代码开发者授权协议](/zh-CN/docs/legal/api-license-agreement-hk)
diff --git a/docs/zh-CN/docs/market/status/trade-day.mdx b/docs/zh-CN/docs/market/status/trade-day.mdx
index bc7ff497..fe44f3ed 100644
--- a/docs/zh-CN/docs/market/status/trade-day.mdx
+++ b/docs/zh-CN/docs/market/status/trade-day.mdx
@@ -22,7 +22,7 @@ longbridge trading days CN
:::info
-[业务指令](../../socket/biz_command):`9`
+[业务指令](/zh-CN/docs/socket/biz_command):`9`
:::
diff --git a/docs/zh-CN/docs/market/status/trade-session.mdx b/docs/zh-CN/docs/market/status/trade-session.mdx
index ab9697cb..3e8c11a8 100644
--- a/docs/zh-CN/docs/market/status/trade-session.mdx
+++ b/docs/zh-CN/docs/market/status/trade-session.mdx
@@ -18,7 +18,7 @@ longbridge trading session
:::info
-[业务指令](../../socket/biz_command):`8`
+[业务指令](/zh-CN/docs/socket/biz_command):`8`
:::
@@ -231,7 +231,7 @@ func main() {
| ∟ trade_session | object[] | 交易时段 |
| ∟∟ beg_time | int32 | 交易开始时间,格式:`hhmm` 例如:`900` |
| ∟∟ end_time | int32 | 交易结束时间,格式:`hhmm` 例如:`1400` |
-| ∟∟ trade_session | int32 | 交易时段,详见 [TradeSession](../objects#tradesession---交易时段) |
+| ∟∟ trade_session | int32 | 交易时段,详见 [TradeSession](/zh-CN/docs/quote/objects#tradesession---交易时段) |
### Protobuf
diff --git a/docs/zh-CN/docs/quote/options/optionchain-date-strike.mdx b/docs/zh-CN/docs/quote/options/optionchain-date-strike.mdx
index 866bff95..dac28731 100644
--- a/docs/zh-CN/docs/quote/options/optionchain-date-strike.mdx
+++ b/docs/zh-CN/docs/quote/options/optionchain-date-strike.mdx
@@ -31,7 +31,7 @@ longbridge option chain TSLA.US --date 2026-04-17
| Name | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------- |
| symbol | string | 是 | 标的代码,使用 `ticker.region` 格式,例如:`700.HK` |
-| expiry_date | string | 是 | 期权到期日,使用 `YYMMDD` 格式,例如:`20220429`,通过 [期权到期日](./optionchain_date.md) 接口获取 |
+| expiry_date | string | 是 | 期权到期日,使用 `YYMMDD` 格式,例如:`20220429`,通过 [期权到期日](./optionchain-date) 接口获取 |
### Protobuf
diff --git a/docs/zh-CN/docs/quote/subscribe/overview.mdx b/docs/zh-CN/docs/quote/subscribe/overview.mdx
index 0ce7935d..d1ecde57 100644
--- a/docs/zh-CN/docs/quote/subscribe/overview.mdx
+++ b/docs/zh-CN/docs/quote/subscribe/overview.mdx
@@ -28,15 +28,15 @@ Streaming 通过 WebSocket 订阅的方式提供实时行情数据。无需轮
| 数据 | 拉取接口 |
|------|----------|
-| 报价 | [实时报价](../stocks/quote) |
-| 盘口 | [盘口](../stocks/depth) |
-| 经纪队列 | [经纪队列](../stocks/brokers) |
-| 逐笔明细 | [逐笔明细](../stocks/trade) |
-| 分时数据 | [分时数据](../stocks/intraday) |
-| K 线 | [K 线](../stocks/candlestick) |
+| 报价 | [实时报价](/zh-CN/docs/quote/pull/quote) |
+| 盘口 | [盘口](/zh-CN/docs/quote/pull/depth) |
+| 经纪队列 | [经纪队列](/zh-CN/docs/quote/pull/brokers) |
+| 逐笔明细 | [逐笔明细](/zh-CN/docs/quote/pull/trade) |
+| 分时数据 | [分时数据](/zh-CN/docs/quote/pull/intraday) |
+| K 线 | [K 线](/zh-CN/docs/quote/pull/candlestick) |
## 注意事项
- 订阅状态与当前连接绑定,断线后自动清除。
-- 可通过[获取订阅信息](./subsciption)随时查询当前活跃的订阅列表。
+- 可通过[获取订阅信息](./subscription)随时查询当前活跃的订阅列表。
- 可订阅的数据类型取决于你的行情权限,详见[行情权限等级](../overview#行情权限等级)。
diff --git a/docs/zh-CN/docs/screener/screener_user_strategies.mdx b/docs/zh-CN/docs/screener/screener_user_strategies.mdx
index 086ab277..a4b8574e 100644
--- a/docs/zh-CN/docs/screener/screener_user_strategies.mdx
+++ b/docs/zh-CN/docs/screener/screener_user_strategies.mdx
@@ -219,4 +219,4 @@ func main() {
-响应结构与 [screener_recommend_strategies](./screener_recommend_strategies) 相同,请参阅该文档中的 Schema 定义。
+响应结构与 [screener_recommend_strategies](/zh-CN/docs/screener/screener-recommend-strategies) 相同,请参阅该文档中的 Schema 定义。
diff --git a/docs/zh-CN/docs/socket/control-command.mdx b/docs/zh-CN/docs/socket/control-command.mdx
index 873a43f2..e746544a 100644
--- a/docs/zh-CN/docs/socket/control-command.mdx
+++ b/docs/zh-CN/docs/socket/control-command.mdx
@@ -100,7 +100,7 @@ Server -->> Client: auth response, req_id: 1, session: xxx
```
-> 登录鉴权的 `token` 通过 [REST 接口](./socket-otp-api.md) 获取。
+> 登录鉴权的 `token` 通过 [REST 接口](/zh-CN/docs/socket-token-api) 获取。
服务端在 token 校验成功后会给客户端返回一个 session,在 session 的有效期内,客户端可以使用 session 进行重新链接,不需要再获取 `token`。
diff --git a/docs/zh-HK/docs/account/overview.mdx b/docs/zh-HK/docs/account/overview.mdx
index 660a7c0e..8261e6b9 100644
--- a/docs/zh-HK/docs/account/overview.mdx
+++ b/docs/zh-HK/docs/account/overview.mdx
@@ -18,7 +18,7 @@ slug: overview
| [profit_analysis_summary](./portfolio/profit-analysis-summary) | 组合整体盈亏汇总 |
| [profit_analysis_detail](./portfolio/profit-analysis-detail) | 按持仓明细的盈亏拆分 |
| [profit_analysis_by_market](./portfolio/profit-analysis-by-market) | 按市场分组的盈亏统计 |
-| [capital_flow](./portfolio/capital-flow) | 賬戶资金流水记录 |
+| [capital_flow](./portfolio/profit-analysis-flows) | 賬戶资金流水记录 |
| [exchange_rates](./portfolio/exchange-rates) | 支持币种的当前汇率 |
## AlertContext
@@ -49,7 +49,7 @@ slug: overview
| 方法 | 说明 |
|---|---|
-| [list_sharelist](./sharelist/list-sharelist) | 查看所有股單 |
-| [create_sharelist](./sharelist/create-sharelist) | 新建股單 |
-| [update_sharelist](./sharelist/update-sharelist) | 更新股單 |
-| [delete_sharelist](./sharelist/delete-sharelist) | 刪除股單 |
+| [list_sharelist](/zh-HK/docs/content/sharelist/list-sharelist) | 查看所有股單 |
+| [create_sharelist](/zh-HK/docs/content/sharelist/create-sharelist) | 新建股單 |
+| [update_sharelist](/zh-HK/docs/content/sharelist/update-sharelist) | 更新股單 |
+| [delete_sharelist](/zh-HK/docs/content/sharelist/delete-sharelist) | 刪除股單 |
diff --git a/docs/zh-HK/docs/legal/index.mdx b/docs/zh-HK/docs/legal/index.mdx
index a8ac930d..2f64a0ec 100644
--- a/docs/zh-HK/docs/legal/index.mdx
+++ b/docs/zh-HK/docs/legal/index.mdx
@@ -11,12 +11,12 @@ Longbridge Developers 的相關法律協議與免責聲明。文件按運營地
## 新加坡(SG)
-- [用户數據授權與確認](./user-data-authorization-sg)
-- [開發者平台免責聲明](./developers-platform-disclaimer-sg)
-- [API 非商業許可協議](./api-license-agreement-sg)
+- [用户數據授權與確認](/zh-HK/docs/legal/user-data-authorization-sg)
+- [開發者平台免責聲明](/zh-HK/docs/legal/developers-platform-disclaimer-sg)
+- [API 非商業許可協議](/zh-HK/docs/legal/api-license-agreement-sg)
## 香港(HK)
-- [用户數據授權與確認](./user-data-authorization-hk)
-- [開發者平台免責聲明](./developers-platform-disclaimer-hk)
-- [API 代碼開發者授權協議](./api-license-agreement-hk)
+- [用户數據授權與確認](/zh-HK/docs/legal/user-data-authorization-hk)
+- [開發者平台免責聲明](/zh-HK/docs/legal/developers-platform-disclaimer-hk)
+- [API 代碼開發者授權協議](/zh-HK/docs/legal/api-license-agreement-hk)
diff --git a/docs/zh-HK/docs/market/status/trade-day.mdx b/docs/zh-HK/docs/market/status/trade-day.mdx
index 8d304fa5..4fd5b8f6 100644
--- a/docs/zh-HK/docs/market/status/trade-day.mdx
+++ b/docs/zh-HK/docs/market/status/trade-day.mdx
@@ -22,7 +22,7 @@ longbridge trading days CN
:::info
-[業務指令](../../socket/biz_command):`9`
+[業務指令](/zh-HK/docs/socket/biz_command):`9`
:::
diff --git a/docs/zh-HK/docs/market/status/trade-session.mdx b/docs/zh-HK/docs/market/status/trade-session.mdx
index 5e154555..5db54ebe 100644
--- a/docs/zh-HK/docs/market/status/trade-session.mdx
+++ b/docs/zh-HK/docs/market/status/trade-session.mdx
@@ -18,7 +18,7 @@ longbridge trading session
:::info
-[業務指令](../../socket/biz_command):`8`
+[業務指令](/zh-HK/docs/socket/biz_command):`8`
:::
@@ -217,7 +217,7 @@ func main() {
| ∟ trade_session | object[] | 交易時段 |
| ∟∟ beg_time | int32 | 交易開始時間,格式:`hhmm` 例如:`900` |
| ∟∟ end_time | int32 | 交易結束時間,格式:`hhmm` 例如:`1400` |
-| ∟∟ trade_session | int32 | 交易時段,詳見 [TradeSession](../objects#tradesession---交易時段) |
+| ∟∟ trade_session | int32 | 交易時段,詳見 [TradeSession](/zh-HK/docs/quote/objects#tradesession---交易時段) |
### Protobuf
diff --git a/docs/zh-HK/docs/quote/options/optionchain-date-strike.mdx b/docs/zh-HK/docs/quote/options/optionchain-date-strike.mdx
index ba34b87b..554046c4 100644
--- a/docs/zh-HK/docs/quote/options/optionchain-date-strike.mdx
+++ b/docs/zh-HK/docs/quote/options/optionchain-date-strike.mdx
@@ -31,7 +31,7 @@ longbridge option chain TSLA.US --date 2026-04-17
| Name | Type | Required | Description |
| ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------- |
| symbol | string | 是 | 標的代碼,使用 `ticker.region` 格式,例如:`700.HK` |
-| expiry_date | string | 是 | 期權到期日,使用 `YYMMDD` 格式,例如:`20220429`,通過 [期權到期日](./optionchain_date.md) 接口獲取 |
+| expiry_date | string | 是 | 期權到期日,使用 `YYMMDD` 格式,例如:`20220429`,通過 [期權到期日](./optionchain-date) 接口獲取 |
### Protobuf
diff --git a/docs/zh-HK/docs/quote/subscribe/overview.mdx b/docs/zh-HK/docs/quote/subscribe/overview.mdx
index fb7d7688..86828394 100644
--- a/docs/zh-HK/docs/quote/subscribe/overview.mdx
+++ b/docs/zh-HK/docs/quote/subscribe/overview.mdx
@@ -28,15 +28,15 @@ Streaming 透過 WebSocket 訂閱的方式提供即時行情數據。無需輪
| 數據 | 拉取介面 |
|------|----------|
-| 報價 | [實時報價](../stocks/quote) |
-| 盤口 | [盤口](../stocks/depth) |
-| 券商佇列 | [券商佇列](../stocks/brokers) |
-| 逐筆明細 | [逐筆明細](../stocks/trade) |
-| 分時數據 | [分時數據](../stocks/intraday) |
-| K 線 | [K 線](../stocks/candlestick) |
+| 報價 | [實時報價](/zh-HK/docs/quote/pull/quote) |
+| 盤口 | [盤口](/zh-HK/docs/quote/pull/depth) |
+| 券商佇列 | [券商佇列](/zh-HK/docs/quote/pull/brokers) |
+| 逐筆明細 | [逐筆明細](/zh-HK/docs/quote/pull/trade) |
+| 分時數據 | [分時數據](/zh-HK/docs/quote/pull/intraday) |
+| K 線 | [K 線](/zh-HK/docs/quote/pull/candlestick) |
## 注意事項
- 訂閱狀態與當前連線綁定,斷線後自動清除。
-- 可透過[獲取訂閱資訊](./subsciption)隨時查詢當前活躍的訂閱列表。
+- 可透過[獲取訂閱資訊](./subscription)隨時查詢當前活躍的訂閱列表。
- 可訂閱的數據類型取決於你的行情權限,詳見[行情權限等級](../overview#行情權限等級)。
diff --git a/docs/zh-HK/docs/screener/screener_user_strategies.mdx b/docs/zh-HK/docs/screener/screener_user_strategies.mdx
index 5254e136..bfc66576 100644
--- a/docs/zh-HK/docs/screener/screener_user_strategies.mdx
+++ b/docs/zh-HK/docs/screener/screener_user_strategies.mdx
@@ -219,4 +219,4 @@ func main() {
-響應結構與 [screener_recommend_strategies](./screener_recommend_strategies) 相同,請參閱該文檔中的 Schema 定義。
+響應結構與 [screener_recommend_strategies](/zh-HK/docs/screener/screener-recommend-strategies) 相同,請參閱該文檔中的 Schema 定義。
diff --git a/docs/zh-HK/docs/socket/control-command.mdx b/docs/zh-HK/docs/socket/control-command.mdx
index 9e4ceb55..af9d1087 100644
--- a/docs/zh-HK/docs/socket/control-command.mdx
+++ b/docs/zh-HK/docs/socket/control-command.mdx
@@ -100,7 +100,7 @@ Server -->> Client: auth response, req_id: 1, session: xxx
```
-> 登錄鑑權的 `token` 通過 [REST 接口](./socket-otp-api.md) 獲取。
+> 登錄鑑權的 `token` 通過 [REST 接口](/zh-HK/docs/socket-token-api) 獲取。
服務端在 token 校驗成功後會給客戶端返回一個 session,在 session 的有效期內,客戶端可以使用 session 進行重新鏈接,不需要再獲取 `token`。
diff --git a/src/components/shell/LanguageSwitcher.tsx b/src/components/shell/LanguageSwitcher.tsx
index 239b39b4..a4ab7b80 100644
--- a/src/components/shell/LanguageSwitcher.tsx
+++ b/src/components/shell/LanguageSwitcher.tsx
@@ -13,8 +13,11 @@ const LOCALES: { value: Locale; label: string }[] = [
]
function buildUrl(currentLocale: Locale, targetLocale: Locale, currentPath: string): string {
- // Strip current locale prefix to get bare path
- let barePath = currentPath
+ // Strip current locale prefix to get bare path.
+ // `currentPath` can carry a `.html` suffix (build format:'file' → Astro.url
+ // pathname is `…/overview.html`); drop it so the switched-locale link points
+ // at the clean URL, not the 404 `.html` file.
+ let barePath = currentPath.replace(/(?:index)?\.html$/, '')
if (currentLocale !== 'en') {
const prefix = `/${currentLocale}`
if (barePath.startsWith(prefix + '/')) {