refactor(契约): 会员 token 枚举走 ts-rs 生成,前端不再手写联合类型
- shared-contracts 给 ProfileMembershipPlanToken/CycleKindToken/StatusToken/ModelAccessToken/ChangeKindToken 补 ts_rs::TS + ts(export),生成 5 个 .ts 到 packages/shared/src/contracts/generated/(评审第 14 条) - packages/shared/src/contracts/runtime.ts 的 ProfileMembershipPlan/Status/CycleKind/ModelAccess 改为生成类型的别名并 re-export - apps/admin-web/src/api/adminApiTypes.ts 删除本地手写联合类型,改为从 @genarrative/shared 导入 / re-export - npm run check:generated-bindings、admin-web:typecheck、npm run typecheck 通过
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
import type {
|
||||
ProfileMembershipCycleKind,
|
||||
ProfileMembershipModelAccess,
|
||||
ProfileMembershipPlan,
|
||||
} from '@genarrative/shared';
|
||||
|
||||
export interface ApiMeta {
|
||||
apiVersion?: string;
|
||||
requestId?: string;
|
||||
@@ -381,18 +387,12 @@ export type ProfileRedeemCodeMode = 'public' | 'unique' | 'private';
|
||||
export type ProfileTaskCycle = 'daily';
|
||||
export type TrackingScopeKind = 'site' | 'work' | 'module' | 'user';
|
||||
export type ProfileRechargeProductKind = 'points' | 'membership';
|
||||
/** 会员档位:`normal` 是非会员占位档位,不可购买。 */
|
||||
export type ProfileMembershipPlan =
|
||||
| 'normal'
|
||||
| 'starter'
|
||||
| 'plus'
|
||||
| 'pro'
|
||||
| 'max';
|
||||
/** 会员周期:有效期内不支持月年互换。 */
|
||||
export type ProfileMembershipCycleKind = 'monthly' | 'yearly';
|
||||
/** 模型权限:`basic` 仅基础模型,`full` 基础及高性能模型。 */
|
||||
export type ProfileMembershipModelAccess = 'basic' | 'full';
|
||||
|
||||
/** 会员档位 / 周期 / 权限:统一来自 `@genarrative/shared` 的生成类型,禁止手写字面量。 */
|
||||
export type {
|
||||
ProfileMembershipCycleKind,
|
||||
ProfileMembershipModelAccess,
|
||||
ProfileMembershipPlan,
|
||||
};
|
||||
export interface AdminTrackingEventListQuery {
|
||||
eventKey?: string;
|
||||
userId?: string;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
||||
|
||||
/**
|
||||
* 会员订单权益变更类型 token;区分“新购”与“补差升级”。
|
||||
*/
|
||||
export type ProfileMembershipChangeKindToken = "purchase" | "upgrade";
|
||||
@@ -0,0 +1,6 @@
|
||||
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
||||
|
||||
/**
|
||||
* 会员购买周期 token;与前端 `ProfileMembershipCycleKind` 一一对应。
|
||||
*/
|
||||
export type ProfileMembershipCycleKindToken = "monthly" | "yearly";
|
||||
@@ -0,0 +1,6 @@
|
||||
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
||||
|
||||
/**
|
||||
* 模型权限 token;与前端 `ProfileMembershipModelAccess` 一一对应。
|
||||
*/
|
||||
export type ProfileMembershipModelAccessToken = "basic" | "full";
|
||||
@@ -0,0 +1,9 @@
|
||||
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
||||
|
||||
/**
|
||||
* 会员档位 token;与前端 `ProfileMembershipPlan` 联合类型一一对应。
|
||||
*
|
||||
* 用枚举而非 `String` 收口 wire 值:未知 token 在反序列化阶段即被拒绝,后台也不能再
|
||||
* 写入任意档位字符串。
|
||||
*/
|
||||
export type ProfileMembershipPlanToken = "normal" | "starter" | "plus" | "pro" | "max";
|
||||
@@ -0,0 +1,6 @@
|
||||
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
||||
|
||||
/**
|
||||
* 会员状态 token;与前端 `ProfileMembershipStatus` 联合类型一一对应。
|
||||
*/
|
||||
export type ProfileMembershipStatusToken = "normal" | "active";
|
||||
@@ -1,7 +1,19 @@
|
||||
import type { JsonObject } from './common';
|
||||
import type { ProfileMembershipChangeKindToken } from './generated/ProfileMembershipChangeKindToken';
|
||||
import type { ProfileMembershipCycleKindToken } from './generated/ProfileMembershipCycleKindToken';
|
||||
import type { ProfileMembershipModelAccessToken } from './generated/ProfileMembershipModelAccessToken';
|
||||
import type { ProfileMembershipPlanToken } from './generated/ProfileMembershipPlanToken';
|
||||
import type { ProfileMembershipStatusToken } from './generated/ProfileMembershipStatusToken';
|
||||
import type { ProfileMudPointBalanceResponse as ProfileMudPointBalance } from './generated/ProfileMudPointBalanceResponse';
|
||||
|
||||
export type { ProfileMudPointBalance };
|
||||
export type {
|
||||
ProfileMembershipChangeKindToken,
|
||||
ProfileMembershipCycleKindToken,
|
||||
ProfileMembershipModelAccessToken,
|
||||
ProfileMembershipPlanToken,
|
||||
ProfileMembershipStatusToken,
|
||||
ProfileMudPointBalance,
|
||||
};
|
||||
|
||||
export const SAVE_SNAPSHOT_VERSION = 2;
|
||||
export const DEFAULT_MUSIC_VOLUME = 0.42;
|
||||
@@ -120,18 +132,14 @@ export type ExternalApiKeyMutationResponse = {
|
||||
};
|
||||
|
||||
export type ProfileRechargeProductKind = 'points' | 'membership';
|
||||
export type ProfileMembershipStatus = 'normal' | 'active';
|
||||
/** 会员状态:来源 Rust `ProfileMembershipStatusToken`,禁止手工维护字面量。 */
|
||||
export type ProfileMembershipStatus = ProfileMembershipStatusToken;
|
||||
/** 会员档位:`normal` 是非会员占位档位,不可购买。 */
|
||||
export type ProfileMembershipPlan =
|
||||
| 'normal'
|
||||
| 'starter'
|
||||
| 'plus'
|
||||
| 'pro'
|
||||
| 'max';
|
||||
export type ProfileMembershipPlan = ProfileMembershipPlanToken;
|
||||
/** 会员周期:有效期内不支持月年互换,到期后重新选择。 */
|
||||
export type ProfileMembershipCycleKind = 'monthly' | 'yearly';
|
||||
export type ProfileMembershipCycleKind = ProfileMembershipCycleKindToken;
|
||||
/** 模型权限:`basic` 仅基础模型,`full` 基础及高性能模型。 */
|
||||
export type ProfileMembershipModelAccess = 'basic' | 'full';
|
||||
export type ProfileMembershipModelAccess = ProfileMembershipModelAccessToken;
|
||||
export type ProfileRechargeOrderStatus =
|
||||
| 'pending'
|
||||
| 'paid'
|
||||
|
||||
@@ -252,6 +252,17 @@ pub struct ProfileWalletLedgerResponse {
|
||||
/// 写入任意档位字符串。
|
||||
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
#[cfg_attr(feature = "ts-bindings", derive(ts_rs::TS))]
|
||||
#[cfg_attr(
|
||||
feature = "ts-bindings",
|
||||
ts(
|
||||
export,
|
||||
export_to = concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/../../../packages/shared/src/contracts/generated/"
|
||||
)
|
||||
)
|
||||
)]
|
||||
pub enum ProfileMembershipPlanToken {
|
||||
Normal,
|
||||
Starter,
|
||||
@@ -275,6 +286,17 @@ impl ProfileMembershipPlanToken {
|
||||
/// 会员购买周期 token;与前端 `ProfileMembershipCycleKind` 一一对应。
|
||||
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
#[cfg_attr(feature = "ts-bindings", derive(ts_rs::TS))]
|
||||
#[cfg_attr(
|
||||
feature = "ts-bindings",
|
||||
ts(
|
||||
export,
|
||||
export_to = concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/../../../packages/shared/src/contracts/generated/"
|
||||
)
|
||||
)
|
||||
)]
|
||||
pub enum ProfileMembershipCycleKindToken {
|
||||
Monthly,
|
||||
Yearly,
|
||||
@@ -292,6 +314,17 @@ impl ProfileMembershipCycleKindToken {
|
||||
/// 会员状态 token;与前端 `ProfileMembershipStatus` 联合类型一一对应。
|
||||
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
#[cfg_attr(feature = "ts-bindings", derive(ts_rs::TS))]
|
||||
#[cfg_attr(
|
||||
feature = "ts-bindings",
|
||||
ts(
|
||||
export,
|
||||
export_to = concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/../../../packages/shared/src/contracts/generated/"
|
||||
)
|
||||
)
|
||||
)]
|
||||
pub enum ProfileMembershipStatusToken {
|
||||
Normal,
|
||||
Active,
|
||||
@@ -309,6 +342,17 @@ impl ProfileMembershipStatusToken {
|
||||
/// 模型权限 token;与前端 `ProfileMembershipModelAccess` 一一对应。
|
||||
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
#[cfg_attr(feature = "ts-bindings", derive(ts_rs::TS))]
|
||||
#[cfg_attr(
|
||||
feature = "ts-bindings",
|
||||
ts(
|
||||
export,
|
||||
export_to = concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/../../../packages/shared/src/contracts/generated/"
|
||||
)
|
||||
)
|
||||
)]
|
||||
pub enum ProfileMembershipModelAccessToken {
|
||||
Basic,
|
||||
Full,
|
||||
@@ -326,6 +370,17 @@ impl ProfileMembershipModelAccessToken {
|
||||
/// 会员订单权益变更类型 token;区分“新购”与“补差升级”。
|
||||
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
#[cfg_attr(feature = "ts-bindings", derive(ts_rs::TS))]
|
||||
#[cfg_attr(
|
||||
feature = "ts-bindings",
|
||||
ts(
|
||||
export,
|
||||
export_to = concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/../../../packages/shared/src/contracts/generated/"
|
||||
)
|
||||
)
|
||||
)]
|
||||
pub enum ProfileMembershipChangeKindToken {
|
||||
Purchase,
|
||||
Upgrade,
|
||||
|
||||
Reference in New Issue
Block a user