feat(FEAT-MO-001): 同步市场概览前端契约

This commit is contained in:
2026-08-18 13:43:48 +08:00
parent 15a25002ce
commit 27bc3c198f
7 changed files with 476 additions and 40 deletions
+261
View File
@@ -20,15 +20,125 @@ export interface paths {
patch?: never;
trace?: never;
};
'/api/v1/market-overview/breadth': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations['MarketOverviewController_getBreadth'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/market-overview/funds': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations['MarketOverviewController_getFunds'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/market-overview/indices': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations['MarketOverviewController_getIndices'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/market-overview/sectors': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations['MarketOverviewController_getSectors'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/market-overview/summary': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations['MarketOverviewController_getSummary'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
}
export type webhooks = Record<string, never>;
export interface components {
schemas: {
BreadthDataDto: {
advancing: number;
declining: number;
unchanged: number;
};
BreadthResponseDto: {
/** Format: date-time */
asOf: string;
data: components['schemas']['BreadthDataDto'] | null;
snapshotId: string;
/** @enum {string} */
source: 'tdx';
/** @enum {string} */
status: 'fresh' | 'delayed' | 'partial' | 'unavailable';
warnings: string[];
};
DependencyHealthDto: {
detail: string;
/** @enum {string} */
status: 'healthy' | 'unavailable' | 'disabled';
};
FundDataDto: {
items: string[];
};
FundsResponseDto: {
/** Format: date-time */
asOf: string;
data: components['schemas']['FundDataDto'] | null;
snapshotId: string;
/** @enum {string} */
source: 'tdx';
/** @enum {string} */
status: 'fresh' | 'delayed' | 'partial' | 'unavailable';
warnings: string[];
};
HealthDependenciesDto: {
mysql: components['schemas']['DependencyHealthDto'];
redis: components['schemas']['DependencyHealthDto'];
@@ -43,6 +153,62 @@ export interface components {
/** @enum {string} */
status: 'healthy' | 'unavailable';
};
IndexQuoteDto: {
changePercent?: number | null;
code: string;
/** @enum {string} */
direction: 'up' | 'down' | 'flat';
name: string;
price: number;
tradeDate: string;
};
IndicesDataDto: {
items: components['schemas']['IndexQuoteDto'][];
};
IndicesResponseDto: {
/** Format: date-time */
asOf: string;
data: components['schemas']['IndicesDataDto'] | null;
snapshotId: string;
/** @enum {string} */
source: 'tdx';
/** @enum {string} */
status: 'fresh' | 'delayed' | 'partial' | 'unavailable';
warnings: string[];
};
SectorDataDto: {
items: string[];
};
SectorsResponseDto: {
/** Format: date-time */
asOf: string;
data: components['schemas']['SectorDataDto'] | null;
snapshotId: string;
/** @enum {string} */
source: 'tdx';
/** @enum {string} */
status: 'fresh' | 'delayed' | 'partial' | 'unavailable';
warnings: string[];
};
SummaryDataDto: {
drivers: string[];
marketStatus: string;
risks: string[];
sentimentStatus: string;
verdict: string;
volumeStatus: string;
};
SummaryResponseDto: {
/** Format: date-time */
asOf: string;
data: components['schemas']['SummaryDataDto'] | null;
snapshotId: string;
/** @enum {string} */
source: 'tdx';
/** @enum {string} */
status: 'fresh' | 'delayed' | 'partial' | 'unavailable';
warnings: string[];
};
};
responses: never;
parameters: never;
@@ -79,4 +245,99 @@ export interface operations {
};
};
};
MarketOverviewController_getBreadth: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['BreadthResponseDto'];
};
};
};
};
MarketOverviewController_getFunds: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['FundsResponseDto'];
};
};
};
};
MarketOverviewController_getIndices: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['IndicesResponseDto'];
};
};
};
};
MarketOverviewController_getSectors: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['SectorsResponseDto'];
};
};
};
};
MarketOverviewController_getSummary: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['SummaryResponseDto'];
};
};
};
};
}