版本:Draft v0.2
状态:领域设计阶段
1. 文档定位
本文档用于定义 QSL Management 重构后的核心业务对象(Domain
Model,领域模型)。
本文档回答:
- 系统中有哪些核心对象;
- 每个对象代表什么;
- 对象之间如何关联;
- 为什么采用这样的设计。
本文档不定义:
- 数据库字段;
- Halo Extension具体实现;
- API接口。
相关文档:
qsl-management-rebuild-direction.md:总体架构方向permission-model.md:权限模型data-model-reference.md:字段设计
2. 核心领域思想
2.1 身份、活动与事件分离
QSL Management
不围绕用户组织数据,而围绕无线电领域中的客观实体组织数据。
核心关系:
其中:
- Callsign 是无线电身份;
- Activity 是具有时间范围和目的的使用场景;
- QSO 是通信事件;
- QSL 是通信事件后的业务记录。
3. Callsign Profile(呼号档案)
定义
Callsign 是业余无线电世界中的身份实体。
它独立存在,不依赖用户。
用户不是呼号本身,而是通过权限关系参与维护。
支持类型
包括:
- Personal Station(个人台)
- Club Station(集体台)
- Special Event Station(特设台)
- DXpedition Station(远征台)
例如:
BI1KBU(个人电台)
BY1CP(集体台)
B1CRA(竞赛特设台)
BS7H(黄岩岛远征电台)
特点
Callsign:
- 可以没有系统用户;
- 可以被多个用户维护;
- 可以长期存在;
- 管理人员可以变化;
- 可以在不同活动中被不同团队使用。
生命周期
说明:
- Discovered(发现):系统知道该呼号存在;
- Claimed(认领):用户申请管理;
- Managed(管理):建立正式权限关系;
- Archived(归档):历史保存。
4. User(用户)
定义
User 表示系统使用者。
User 不代表:
- 呼号;
- 电台;
- 通联主体。
User 只是:
一个可以登录系统并参与数据维护的人。
用户通过:
- Permission Grant(权限授权)
- Activity Permission(活动权限)
参与呼号管理。
5. User-Callsign Relationship(用户-呼号关系)
用户与呼号不是所有关系,而是权限关系。
支持:
一个用户管理多个呼号
例如:
用户:
王某
管理:
BI1KBU
BG1XXX
一个呼号由多个用户共同管理
例如:
呼号:
BI1SZB
用户A:
OWNER
用户B:
QSL_MANAGER
用户C:
GUEST
详细权限:
参考 permission-model.md
6. Activity(活动)
定义
Activity 描述一次具有:
- 时间范围;
- 使用目的;
- 使用呼号;
- 参与人员;
的无线电活动。
示例
活动:
2026 CQ比赛
呼号:
B1CRA
时间:
比赛期间
适用场景
包括:
- 比赛;
- 特设台;
- POTA;
- 卫星活动;
- 野外架台。
作用
Activity 不是替代 CallSign,而是描述:
某个呼号在某个时间、某个目的下的使用过程。
7. QSO Record(通联记录)
定义
QSO 是真实发生的一次通信事件。
不是:
- 用户日志;
- 呼号属性;
- 卡片记录。
示例
BI1KBU
↔
BI1SZB
7MHz
SSB
59/59
特点
QSO:
- 属于无线电身份之间的通信历史;
- 不属于用户;
- 不因为管理人员变化而改变。
关系
8. QSL Record(卡片交换记录)
定义
QSL 是 QSO 后续产生的业务流程记录。
负责:
- 卡片发送;
- 卡片接收;
- 地址匹配;
- 通知流程;
- 状态管理。
关系
QSO
|
QSL
QSL 可以进一步关联:
- Activity;
- 地址信息;
- 卡片管理员。
例如:
B1CRA 比赛活动结束后:
- 操作权限失效;
- QSL管理员继续维护卡片流程。
9. Equipment(设备资源)
定义
Equipment 是辅助资源。
用于:
- 设备库;
- 输入联想;
- 活动记录。
设备不是:
- 用户属性;
- 呼号属性;
- QSO必须字段。
10. 公共数据与管理数据分离
Callsign 数据分为:
公共身份数据
例如:
- 呼号;
- 国家;
- DXCC;
- 公开QSL地址;
- 公开联系方式。
管理数据
例如:
- 管理权限;
- 内部备注;
- 工作流程状态。
11. 数据贡献与管理权分离
系统需要区分:
Contribution(数据贡献)
表示:
用户提供了一条关于呼号的信息。
例如:
BI1KBU 用户补充 BI1SZB 的公开QSL信息。
Claim(认领)
表示:
用户获得管理该呼号的权限。
原则:
贡献数据不等于获得呼号管理权限。