@tbox.cn/app-contracts-mall 0.11.0 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assembly.d.ts +1 -1
- package/dist/deployment.d.ts +1 -1
- package/dist/member/cards.d.ts +8 -8
- package/dist/server/index.js +1 -1
- package/package.json +2 -3
- package/src/assembly.ts +1 -1
- package/src/deployment.ts +1 -1
- package/src/server/mall-control-plane.ts +1 -1
- package/src/service-slots.json +21 -21
- package/tests/service-slots.test.ts +4 -4
package/dist/assembly.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export declare const AUTH_LOGIN_SERVICE = "auth.alipay-login";
|
|
|
21
21
|
/**
|
|
22
22
|
* mall 域装配形状(TIER0 ScopeAssemblyContract 的 TIER1 具体化;W3-3 自 module-mall-core 下沉):
|
|
23
23
|
* module-mall-core register 期注册于 ctx.domainAssemblies(SCOPE_ASSEMBLY_KIND),
|
|
24
|
-
*
|
|
24
|
+
* 消费方(模板装配点/本包家页面/SDK)按本类型泛型断言查表——域模块间零包依赖
|
|
25
25
|
* (workspace-dag 铁律:跨模块走注册表 + 契约类型)。
|
|
26
26
|
* 成员 = 模板装配点(validateContext/scopeSessions/start 装点/WS 双钩)最小必要性合集。
|
|
27
27
|
*/
|
package/dist/deployment.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface MallDeploymentMall {
|
|
|
19
19
|
/** 小程序 appId(可选拓扑值;mall 级共享——HELLO context.mall.miniAppId 的配置承载,供默认商圈拼装) */
|
|
20
20
|
miniAppId?: string;
|
|
21
21
|
/**
|
|
22
|
-
* 地理坐标(可选;有值时参与 /api/m/mall-
|
|
22
|
+
* 地理坐标(可选;有值时参与 /api/m/mall-core/nearby-mall 就近推荐;缺省不参与排序)。
|
|
23
23
|
* 坐标系:WGS-84(高德/支付宝 getLocation 默认输出)。
|
|
24
24
|
*/
|
|
25
25
|
location?: {
|
package/dist/member/cards.d.ts
CHANGED
|
@@ -344,10 +344,10 @@ export declare const memberEnrollmentFormCardDataSchema: z.ZodObject<{
|
|
|
344
344
|
status: z.ZodEnum<["required", "authorized", "unavailable"]>;
|
|
345
345
|
mobileMasked: z.ZodOptional<z.ZodString>;
|
|
346
346
|
}, "strip", z.ZodTypeAny, {
|
|
347
|
-
status: "
|
|
347
|
+
status: "unavailable" | "required" | "authorized";
|
|
348
348
|
mobileMasked?: string | undefined;
|
|
349
349
|
}, {
|
|
350
|
-
status: "
|
|
350
|
+
status: "unavailable" | "required" | "authorized";
|
|
351
351
|
mobileMasked?: string | undefined;
|
|
352
352
|
}>;
|
|
353
353
|
/** 手动填写模式提示(授权不可用降级) */
|
|
@@ -374,7 +374,7 @@ export declare const memberEnrollmentFormCardDataSchema: z.ZodObject<{
|
|
|
374
374
|
url?: string | undefined;
|
|
375
375
|
}[];
|
|
376
376
|
authorization: {
|
|
377
|
-
status: "
|
|
377
|
+
status: "unavailable" | "required" | "authorized";
|
|
378
378
|
mobileMasked?: string | undefined;
|
|
379
379
|
};
|
|
380
380
|
manualNotice?: string | undefined;
|
|
@@ -400,7 +400,7 @@ export declare const memberEnrollmentFormCardDataSchema: z.ZodObject<{
|
|
|
400
400
|
url?: string | undefined;
|
|
401
401
|
}[];
|
|
402
402
|
authorization: {
|
|
403
|
-
status: "
|
|
403
|
+
status: "unavailable" | "required" | "authorized";
|
|
404
404
|
mobileMasked?: string | undefined;
|
|
405
405
|
};
|
|
406
406
|
manualNotice?: string | undefined;
|
|
@@ -809,10 +809,10 @@ export declare const memberCardDataSchemas: {
|
|
|
809
809
|
status: z.ZodEnum<["required", "authorized", "unavailable"]>;
|
|
810
810
|
mobileMasked: z.ZodOptional<z.ZodString>;
|
|
811
811
|
}, "strip", z.ZodTypeAny, {
|
|
812
|
-
status: "
|
|
812
|
+
status: "unavailable" | "required" | "authorized";
|
|
813
813
|
mobileMasked?: string | undefined;
|
|
814
814
|
}, {
|
|
815
|
-
status: "
|
|
815
|
+
status: "unavailable" | "required" | "authorized";
|
|
816
816
|
mobileMasked?: string | undefined;
|
|
817
817
|
}>;
|
|
818
818
|
/** 手动填写模式提示(授权不可用降级) */
|
|
@@ -839,7 +839,7 @@ export declare const memberCardDataSchemas: {
|
|
|
839
839
|
url?: string | undefined;
|
|
840
840
|
}[];
|
|
841
841
|
authorization: {
|
|
842
|
-
status: "
|
|
842
|
+
status: "unavailable" | "required" | "authorized";
|
|
843
843
|
mobileMasked?: string | undefined;
|
|
844
844
|
};
|
|
845
845
|
manualNotice?: string | undefined;
|
|
@@ -865,7 +865,7 @@ export declare const memberCardDataSchemas: {
|
|
|
865
865
|
url?: string | undefined;
|
|
866
866
|
}[];
|
|
867
867
|
authorization: {
|
|
868
|
-
status: "
|
|
868
|
+
status: "unavailable" | "required" | "authorized";
|
|
869
869
|
mobileMasked?: string | undefined;
|
|
870
870
|
};
|
|
871
871
|
manualNotice?: string | undefined;
|
package/dist/server/index.js
CHANGED
|
@@ -46,7 +46,7 @@ var mallAttributesSchema = z.strictObject({
|
|
|
46
46
|
miniAppId: z.string().min(1).optional(),
|
|
47
47
|
/** 客服电话(shopping-guide customer-service-faq 卡 link 拨打条目消费,缺省不渲染) */
|
|
48
48
|
contactPhone: z.string().min(1).optional(),
|
|
49
|
-
/** 地理坐标(WGS-84;有值时参与 /api/m/mall-
|
|
49
|
+
/** 地理坐标(WGS-84;有值时参与 /api/m/mall-core/nearby-mall 就近推荐,缺省不参与排序) */
|
|
50
50
|
location: z.object({
|
|
51
51
|
lat: z.number(),
|
|
52
52
|
lon: z.number(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tbox.cn/app-contracts-mall",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "商圈领域契约(TIER1,types + runtime):Port 接口 + MallEventMap + 领域 DTO + scope/装配器运行时。",
|
|
6
6
|
"exports": {
|
|
@@ -29,11 +29,10 @@
|
|
|
29
29
|
"access": "public"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@tbox.cn/app-contracts": "0.
|
|
32
|
+
"@tbox.cn/app-contracts": "0.12.0",
|
|
33
33
|
"zod": "3.25.76"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@tbox.cn/app-sdk": "0.20.0",
|
|
37
36
|
"tsup": "8.5.1",
|
|
38
37
|
"typescript": "5.9.3",
|
|
39
38
|
"vitest": "4.1.10",
|
package/src/assembly.ts
CHANGED
|
@@ -28,7 +28,7 @@ export const AUTH_LOGIN_SERVICE = 'auth.alipay-login';
|
|
|
28
28
|
/**
|
|
29
29
|
* mall 域装配形状(TIER0 ScopeAssemblyContract 的 TIER1 具体化;W3-3 自 module-mall-core 下沉):
|
|
30
30
|
* module-mall-core register 期注册于 ctx.domainAssemblies(SCOPE_ASSEMBLY_KIND),
|
|
31
|
-
*
|
|
31
|
+
* 消费方(模板装配点/本包家页面/SDK)按本类型泛型断言查表——域模块间零包依赖
|
|
32
32
|
* (workspace-dag 铁律:跨模块走注册表 + 契约类型)。
|
|
33
33
|
* 成员 = 模板装配点(validateContext/scopeSessions/start 装点/WS 双钩)最小必要性合集。
|
|
34
34
|
*/
|
package/src/deployment.ts
CHANGED
|
@@ -20,7 +20,7 @@ export interface MallDeploymentMall {
|
|
|
20
20
|
/** 小程序 appId(可选拓扑值;mall 级共享——HELLO context.mall.miniAppId 的配置承载,供默认商圈拼装) */
|
|
21
21
|
miniAppId?: string;
|
|
22
22
|
/**
|
|
23
|
-
* 地理坐标(可选;有值时参与 /api/m/mall-
|
|
23
|
+
* 地理坐标(可选;有值时参与 /api/m/mall-core/nearby-mall 就近推荐;缺省不参与排序)。
|
|
24
24
|
* 坐标系:WGS-84(高德/支付宝 getLocation 默认输出)。
|
|
25
25
|
*/
|
|
26
26
|
location?: {
|
|
@@ -20,7 +20,7 @@ const mallAttributesSchema = z.strictObject({
|
|
|
20
20
|
miniAppId: z.string().min(1).optional(),
|
|
21
21
|
/** 客服电话(shopping-guide customer-service-faq 卡 link 拨打条目消费,缺省不渲染) */
|
|
22
22
|
contactPhone: z.string().min(1).optional(),
|
|
23
|
-
/** 地理坐标(WGS-84;有值时参与 /api/m/mall-
|
|
23
|
+
/** 地理坐标(WGS-84;有值时参与 /api/m/mall-core/nearby-mall 就近推荐,缺省不参与排序) */
|
|
24
24
|
location: z
|
|
25
25
|
.object({
|
|
26
26
|
lat: z.number(),
|
package/src/service-slots.json
CHANGED
|
@@ -24,26 +24,26 @@
|
|
|
24
24
|
"mall.info-cache"
|
|
25
25
|
],
|
|
26
26
|
"meta": {
|
|
27
|
-
"member.account": { "
|
|
28
|
-
"member.profile": { "
|
|
29
|
-
"member.card": { "
|
|
30
|
-
"member.benefits": { "
|
|
31
|
-
"member.enrollment": { "
|
|
32
|
-
"member.snapshot": { "
|
|
33
|
-
"parking.query": { "
|
|
34
|
-
"parking.payment": { "
|
|
35
|
-
"parking.vehicle": { "
|
|
36
|
-
"parking.snapshot": { "
|
|
37
|
-
"promotion.offers": { "
|
|
38
|
-
"promotion.entitlements": { "
|
|
39
|
-
"promotion.activities": { "
|
|
40
|
-
"promotion.acquisition": { "
|
|
41
|
-
"shopping-guide.catalog": { "
|
|
42
|
-
"shopping-guide.shops": { "
|
|
43
|
-
"shopping-guide.categories": { "
|
|
44
|
-
"shopping-guide.directory": { "
|
|
45
|
-
"auth.alipay-login": { "
|
|
46
|
-
"mall.info": { "
|
|
47
|
-
"mall.info-cache": { "
|
|
27
|
+
"member.account": { "name": "会员账户", "description": "登录与入会状态、会员外部引用" },
|
|
28
|
+
"member.profile": { "name": "会员资料", "description": "昵称头像、联系方式与标签" },
|
|
29
|
+
"member.card": { "name": "会员卡面", "description": "卡面快照:等级、消费进度、权益摘要" },
|
|
30
|
+
"member.benefits": { "name": "会员权益", "description": "权益列表与消耗进度" },
|
|
31
|
+
"member.enrollment": { "name": "会员入会", "description": "入会表单查询与入会动作" },
|
|
32
|
+
"member.snapshot": { "name": "会员快照", "description": "会员域聚合快照(面板读)" },
|
|
33
|
+
"parking.query": { "name": "停车查询", "description": "费用报价、车场信息、可享权益" },
|
|
34
|
+
"parking.payment": { "name": "停车缴费", "description": "缴费下单、支付状态、记录与开票" },
|
|
35
|
+
"parking.vehicle": { "name": "车辆管理", "description": "绑定车辆、车牌管理、寻车定位" },
|
|
36
|
+
"parking.snapshot": { "name": "停车快照", "description": "停车域聚合快照" },
|
|
37
|
+
"promotion.offers": { "name": "营销优惠", "description": "券、团购等优惠查询" },
|
|
38
|
+
"promotion.entitlements": { "name": "营销权益", "description": "我的券与领取资格" },
|
|
39
|
+
"promotion.activities": { "name": "营销活动", "description": "活动列表详情与参与指引" },
|
|
40
|
+
"promotion.acquisition": { "name": "营销领取", "description": "券领取写链" },
|
|
41
|
+
"shopping-guide.catalog": { "name": "导购检索", "description": "商品与商户检索" },
|
|
42
|
+
"shopping-guide.shops": { "name": "商户查询", "description": "商户列表与详情" },
|
|
43
|
+
"shopping-guide.categories": { "name": "类目浏览", "description": "楼层与类目目录" },
|
|
44
|
+
"shopping-guide.directory": { "name": "商场目录", "description": "商场、门店、楼层目录服务" },
|
|
45
|
+
"auth.alipay-login": { "name": "支付宝登录", "description": "登录换码(code2Session)" },
|
|
46
|
+
"mall.info": { "name": "商场信息", "description": "商场名称地址坐标,动态商场信息源" },
|
|
47
|
+
"mall.info-cache": { "name": "商场信息缓存", "description": "商场信息缓存读面(缓存→合并请求→槽)" }
|
|
48
48
|
}
|
|
49
49
|
}
|
|
@@ -89,12 +89,12 @@ describe('词汇 meta 锁(B2 展示名单源)', () => {
|
|
|
89
89
|
expect(Object.keys(meta).sort()).toEqual([...slotsJson.slots].sort());
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
-
it('每条 meta
|
|
92
|
+
it('每条 meta name 必填(string 非空);值形状为对象', () => {
|
|
93
93
|
for (const [svc, entry] of Object.entries(meta)) {
|
|
94
94
|
expect(entry, `${svc} meta 非对象`).toBeTypeOf('object');
|
|
95
|
-
const
|
|
96
|
-
expect(typeof
|
|
97
|
-
expect((
|
|
95
|
+
const name = (entry as { name?: unknown }).name;
|
|
96
|
+
expect(typeof name, `${svc} 缺 name`).toBe('string');
|
|
97
|
+
expect((name as string).length, `${svc} name 空串`).toBeGreaterThan(0);
|
|
98
98
|
}
|
|
99
99
|
});
|
|
100
100
|
});
|