@tbox.cn/app-module-member 0.2.0 → 0.8.7
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/AGENTS.md +16 -0
- package/README.md +99 -11
- package/dist/chunk-EPQEF43P.js +1581 -0
- package/dist/chunk-QWGRWD5C.js +766 -0
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.js +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +12 -2
- package/dist/member-372B74DY.css +1740 -0
- package/dist/server/index.d.ts +657 -286
- package/dist/server/index.js +11 -1
- package/package.json +25 -16
- package/skills/member/SKILL.md +141 -0
- package/skills/member/references/enrollment.md +34 -0
- package/skills/member/references/points-and-card.md +24 -0
- package/src/client/cards/index.ts +10 -0
- package/src/client/cards/member-card-summary/index.tsx +375 -0
- package/src/client/cards/member-enrollment-cta/index.tsx +61 -0
- package/src/client/cards/member-enrollment-form/index.tsx +181 -0
- package/src/client/cards/member-enrollment-status/index.tsx +65 -0
- package/src/client/cards/member-info/index.tsx +60 -0
- package/src/client/cards/member-login-cta/index.tsx +81 -0
- package/src/client/cards/member-point-usage-list/index.tsx +53 -0
- package/src/client/cards/view.ts +39 -0
- package/src/client/components/ImageWithFallback.tsx +38 -0
- package/src/client/index.ts +6 -4
- package/src/client/styles/member.css +1740 -0
- package/src/client/types/css.d.ts +2 -0
- package/src/server/action.ts +348 -0
- package/src/server/cards/index.ts +7 -7
- package/src/server/cards/member-card-summary/meta.ts +26 -5
- package/src/server/cards/member-card-summary/samples.ts +272 -0
- package/src/server/cards/member-enrollment-cta/meta.ts +19 -0
- package/src/server/cards/member-enrollment-form/meta.ts +10 -6
- package/src/server/cards/member-enrollment-status/meta.ts +5 -6
- package/src/server/cards/member-info/meta.ts +1 -1
- package/src/server/cards/member-login-cta/meta.ts +16 -0
- package/src/server/cards/member-point-usage-list/meta.ts +2 -3
- package/src/server/handler.ts +159 -119
- package/src/server/index.ts +129 -50
- package/src/server/ports.ts +66 -0
- package/src/server/service.ts +94 -80
- package/src/server/status.ts +87 -0
- package/src/server/subject-binding.ts +19 -0
- package/src/server/tool.ts +469 -99
- package/tbox.module.json +124 -0
- package/tests/cards-render.test.tsx +526 -0
- package/tests/enrollment.test.ts +121 -0
- package/tests/ports-resolve.test.ts +95 -0
- package/tests/preference-memory.test.ts +86 -0
- package/tests/samples.test.ts +61 -0
- package/tests/service.test.ts +593 -35
- package/tests/skills.test.ts +65 -0
- package/tests/snapshot-service.test.ts +75 -0
- package/tests/status.test.ts +127 -0
- package/tests/view.test.ts +33 -0
- package/tsup.config.ts +9 -1
- package/dist/chunk-JGZGLFO6.js +0 -111
- package/dist/chunk-ZV6B36AO.js +0 -613
- package/src/client/cards/index.tsx +0 -135
- package/src/server/cards/member-coupon-detail/meta.ts +0 -19
- package/src/server/cards/member-coupon-list/meta.ts +0 -18
- package/tbox.component.json +0 -28
package/AGENTS.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# module-member —— 集成指引(AI 助手用)
|
|
2
|
+
|
|
3
|
+
本模块为商圈业务模块,声明消费以下服务槽(Port 接口定义见 `src/server/ports/`):
|
|
4
|
+
|
|
5
|
+
- 服务槽清单:见 `tbox.module.json` 的 `contributes.services`(demand 侧,含 title/description meta)。
|
|
6
|
+
|
|
7
|
+
## 自定义 API 对接(AI 集成)
|
|
8
|
+
|
|
9
|
+
用户为本模块服务槽配置「自定义 API」后,adapter 实施落点 = `packages/provider-custom/`
|
|
10
|
+
(会员:会员注册、卡面与权益查询)。实施步骤与完成判据见 `packages/provider-custom/AGENTS.md`;
|
|
11
|
+
本模块 Port 接口为 adapter 的实现契约(输入 `ServiceAdapterInput`:config/instanceId/credentialRef)。
|
|
12
|
+
|
|
13
|
+
## 真实厂商接入
|
|
14
|
+
|
|
15
|
+
官方 provider 包形态(manifest 槽声明 + 独立包发布)参照 `modules/provider-mock` 结构样例与
|
|
16
|
+
docs/reference/providers.md;厂商中立措辞纪律见该参考(本文件受 vendor-neutrality 门禁扫描)。
|
package/README.md
CHANGED
|
@@ -1,17 +1,105 @@
|
|
|
1
|
-
#
|
|
1
|
+
# module-member · 会员业务组件
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
商圈会员域唯一承接组件(`@tbox.cn/app-module-member`,moduleId `member`):
|
|
4
|
+
入会四动作(支付宝授权 effect → complete-auth 回调)、会员信息、会员卡与偏好记忆、
|
|
5
|
+
积分余额与流水、入会表单查询。运行时经 integrations registry 槽位(member×5:
|
|
6
|
+
`account`/`profile`/`card`/`benefits`/`enrollment`——fail-fast 无兜底)接入
|
|
7
|
+
provider 包供给的厂商 C 端实现(业务模块零 vendor——真源归 provider 包);
|
|
8
|
+
`InMemoryMemberService` 仅供隔离单测使用,不参与运行时注册或失败降级。
|
|
9
|
+
同时是全局身份底座:`member.status` 服务工厂被其他模块消费做登录门禁。
|
|
4
10
|
|
|
5
|
-
##
|
|
11
|
+
## 业务职责
|
|
6
12
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
| 能力域 | 承接 |
|
|
14
|
+
|---|---|
|
|
15
|
+
| 账户状态 | authState/gate 判定、GUEST(已登录未入会)与 MEMBER 区分、登录≠入会 |
|
|
16
|
+
| 会员信息 | 等级名/卡面图(无 tier 枚举字段,presentation.variant 表达蓝/银/金/黑)|
|
|
17
|
+
| 积分 | 余额 + 明细(当页 10 条)|
|
|
18
|
+
| 入会 | CTA 卡/表单卡/入会状态卡 |
|
|
19
|
+
| 登录 | 登录 CTA 卡(供匿名轮引导)|
|
|
20
|
+
| 隐私边界 | 隐私诉求拒不澄清,不落任何真实手机号/证件明文 |
|
|
10
21
|
|
|
11
|
-
##
|
|
22
|
+
## 架构分层
|
|
12
23
|
|
|
13
|
-
|
|
24
|
+
src/
|
|
25
|
+
server/
|
|
26
|
+
index.ts 模块注册(卡 map / 工具 6 注册 / 无 preTool)
|
|
27
|
+
tool.ts 6 工具定义 + 门禁辅助(~512 行)
|
|
28
|
+
action.ts 动作链(CTA 点击续接,~349 行)
|
|
29
|
+
service.ts Port 汇编与门禁工厂(~245 行)
|
|
30
|
+
status.ts 账户状态派生(~76 行)
|
|
31
|
+
subject-binding subjectId 绑定(~19 行)
|
|
32
|
+
ports/index.ts Port 接口(~27 行)
|
|
33
|
+
handler/ 意图 handler 骨架(~170 行)
|
|
34
|
+
client/cards/ 7 张卡组件
|
|
14
35
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
36
|
+
## 领域模型(契约真源)
|
|
37
|
+
|
|
38
|
+
- `modules/contracts-mall/src/services/member.ts`(~350 行):member Snapshot 型
|
|
39
|
+
(账户/积分/权益/入会/卡面)与五 Port:MemberAccountPort、MemberProfilePort、
|
|
40
|
+
MemberCardPort、MemberBenefitsPort、MemberEnrollmentPort;SubjectBindingPort 已 deprecated。
|
|
41
|
+
- `modules/contracts-mall/src/domain/points.ts` / `discount.ts`:积分与折扣小域。
|
|
42
|
+
- 本模块无 server/domain.ts:账户状态机分散在 status.ts(派生)与 action.ts(续接),
|
|
43
|
+
会员实体只在契约 services 层——模块域模型「薄模块 + 契约厚库」形态。
|
|
44
|
+
|
|
45
|
+
## 工具清单(tool.ts;index.ts:41-52 单点 withCardEmissionHint 包裹;index.ts:109-114 注册)
|
|
46
|
+
|
|
47
|
+
| 工具 | 定义行 | oneLiner | carding | actions |
|
|
48
|
+
|---|---|---|---|---|
|
|
49
|
+
| queryPoints | tool.ts:160 | 积分账户:余额+明细 facts,供模型作答 | promotion-points-usage | 无 |
|
|
50
|
+
| queryMemberInfo | tool.ts:239 | 等级/权益概览 facts | member-info | 无 |
|
|
51
|
+
| queryMemberCard | tool.ts:299 | 会员卡卡面(辅助判定 hasCompleteMemberCard tool.ts:64-66)| member-card-summary | 无 |
|
|
52
|
+
| queryEnrollmentCta | tool.ts:367 | 入会引导 CTA(含入会状态分流)| member-enrollment-cta | 是 |
|
|
53
|
+
| queryEnrollmentForm | tool.ts:441 | 入会表单(匿名可查,登录后回填)| member-enrollment-form | 是 |
|
|
54
|
+
| queryLoginCta | tool.ts:497 | 登录引导 CTA(未登录轮)| member-login-cta | 是 |
|
|
55
|
+
|
|
56
|
+
细节机制:
|
|
57
|
+
- 匿名短路 anonymousShort(tool.ts:113-120):未登录请求统一短话术 + 登录卡,不发必然失败查询。
|
|
58
|
+
- 隐私拒不面 memberPrivacyRefusal(tool.ts:48-62):模型/用户提隐私核对诉求时冻结卡面细粒度
|
|
59
|
+
数据,返回拒不话术(隐私边界工具化而非提示词约定)。
|
|
60
|
+
- queryPoints 链路:getAccount → authState 检查 → 门禁卡或 facts;facts 组装
|
|
61
|
+
balance/membershipLabel/items/total/contractNotice,积分服务降级时 pointsNotice 兜底话术。
|
|
62
|
+
- 权益查询 listPointUsage(userId,1,10)(tool.ts:209-215),平台分页缺省 10 条(卡片轮播)。
|
|
63
|
+
|
|
64
|
+
## 门禁两级(登录轴)
|
|
65
|
+
|
|
66
|
+
- 匿名(identity.source=anonymous):登录 CTA 卡,终止查询。
|
|
67
|
+
- GUEST(已登录未入会):入会 CTA 卡,不误伤可查面。
|
|
68
|
+
- 登录≠入会:任何门禁不得把 GUEST 当匿名拦截。
|
|
69
|
+
|
|
70
|
+
## 写动作面
|
|
71
|
+
|
|
72
|
+
零独立写动作(无 StateStore 命名空间);入会动作由 CTA/表单卡上的 actions 字段
|
|
73
|
+
拉起客户端续接(action.ts 动作链),服务端不经工具写状态。
|
|
74
|
+
|
|
75
|
+
## 卡片清单(7 张;client/cards/;dataSchema 锚 contracts-mall member schemas)
|
|
76
|
+
|
|
77
|
+
| cardType | 说明 |
|
|
78
|
+
|---|---|
|
|
79
|
+
| member-card-summary | 会员卡面(等级/变体色)|
|
|
80
|
+
| member-info | 会员信息概览 |
|
|
81
|
+
| member-point-usage-list | 积分明细列表 |
|
|
82
|
+
| member-enrollment-cta | 入会引导(含入会入口 actions)|
|
|
83
|
+
| member-enrollment-form | 入会表单 |
|
|
84
|
+
| member-enrollment-status | 入会状态回执 |
|
|
85
|
+
| member-login-cta | 登录引导 |
|
|
86
|
+
|
|
87
|
+
## 跨模块协作
|
|
88
|
+
|
|
89
|
+
- 供出:`member.status` 服务工厂(ctx.services 锚)、`memberGateCardOf`、`toMallQueryContext`
|
|
90
|
+
(均 contracts-mall 公开入口)——alipay-activity / customer-service / promotion 门禁消费。
|
|
91
|
+
- 不 import 其他 module(跨模块一律经 ctx 服务锚与事件总线)。
|
|
92
|
+
|
|
93
|
+
## 铁律摘要
|
|
94
|
+
|
|
95
|
+
- import 边界:只 import contracts/sdk 公开入口;client/** 引 server/** 必须 import type。
|
|
96
|
+
- register 只注册不解析;工具实例顶层单例;跨模块交互一律经 ctx。
|
|
97
|
+
- 卡片 key = meta.cardType;exports 恒指 src/。
|
|
98
|
+
- 身份以 reqCtx 为准,不接模型注入的 userId/openId。
|
|
99
|
+
|
|
100
|
+
## 已知限制与文档漂移
|
|
101
|
+
|
|
102
|
+
- 旧的 README「C 端查询映射」表实为厂商端点映射,本版删除;
|
|
103
|
+
端点映射现由对应 provider 包侧维护。
|
|
104
|
+
- `@vendor-contract` JSDoc 标注尚未存在(全仓 0 命中),Port 语义现摘自普通 JSDoc;
|
|
105
|
+
1030 Phase 1 计划增补,增补后本节更新。
|