本文档引用的文件
本文件为 Cosmoe 摄影活动预约机器人项目的数据模型设计综合文档。该系统通过 Telegram 机器人与 Cosmoe API 进行交互,实现用户认证、活动查询、预约管理、优惠券使用等功能。本文档详细定义了核心数据实体(用户、活动、预约、优惠券)的结构、字段定义、关系以及数据验证规则,并提供了数据转换映射策略、版本管理与兼容性处理方案,以及数据安全考虑。
该项目采用基于功能模块的组织方式,主要分为以下层次:
存储层:使用 Cloudflare Workers KV 存储用户凭证和系统状态
graph TB
subgraph "入口层"
Index["src/index.ts<br/>机器人初始化与Webhook"]
Scheduler["src/scheduler/index.ts<br/>定时任务调度"]
end
subgraph "命令处理器层"
Login["src/command/handlers/login.ts<br/>登录处理"]
Events["src/command/handlers/events.ts<br/>活动列表"]
EventDetails["src/command/handlers/eventDetails.ts<br/>活动详情"]
History["src/command/handlers/history.ts<br/>预约历史"]
BookEvent["src/command/handlers/bookEvent.ts<br/>预约处理"]
CommandIndex["src/command/index.ts<br/>命令注册与会话存储"]
end
subgraph "客户端层"
CosmoeClient["src/client/cosmoe.ts<br/>Cosmoe API 客户端"]
end
subgraph "存储层"
KV["Cloudflare KV<br/>COSMOE_CREDENTIALS/COSMOE_STORAGE"]
end
Index --> CommandIndex
CommandIndex --> Login
CommandIndex --> Events
CommandIndex --> EventDetails
CommandIndex --> History
CommandIndex --> BookEvent
Login --> CosmoeClient
Events --> CosmoeClient
EventDetails --> CosmoeClient
History --> CosmoeClient
BookEvent --> CosmoeClient
CosmoeClient --> KV
Scheduler --> CosmoeClient
Scheduler --> KV
图表来源
章节来源
用户模型用于描述系统中的用户身份信息,支持认证与授权操作。
字段定义
关系
数据验证规则
数据转换与映射
章节来源
活动模型描述摄影活动的基本信息,支持活动列表展示与详情查询。
字段定义
关系
数据验证规则
数据转换与映射
章节来源
活动详情模型扩展了活动基本信息,包含更详细的描述和时间槽信息。
字段定义
关系
数据验证规则
数据转换与映射
章节来源
时间槽模型描述活动的具体时间段安排。
字段定义
关系
数据验证规则
数据转换与映射
章节来源
预约模型描述用户的活动预约信息。
字段定义
关系
数据验证规则
数据转换与映射
章节来源
优惠券模型描述可用于活动预约的折扣券信息。
字段定义
关系
数据验证规则
数据转换与映射
章节来源
系统采用分层架构,各层职责明确,耦合度低,便于维护和扩展。
graph TB
subgraph "表现层"
TelegramBot["Telegram Bot API"]
InlineKeyboard["内联键盘"]
end
subgraph "应用层"
CommandHandlers["命令处理器"]
ConversationStorage["会话存储"]
end
subgraph "服务层"
CosmoeAPIClient["Cosmoe API 客户端"]
ValidationRules["验证规则"]
end
subgraph "数据层"
KVStore["Cloudflare KV 存储"]
APIServer["Cosmoe API 服务器"]
end
TelegramBot --> CommandHandlers
CommandHandlers --> ConversationStorage
CommandHandlers --> CosmoeAPIClient
CosmoeAPIClient --> ValidationRules
CosmoeAPIClient --> APIServer
ConversationStorage --> KVStore
KVStore --> APIServer
图表来源
登录流程涉及用户凭证的获取、存储和验证。
sequenceDiagram
participant User as "用户"
participant Bot as "Telegram Bot"
participant Handler as "登录处理器"
participant Client as "Cosmoe 客户端"
participant KV as "KV 存储"
participant API as "Cosmoe API"
User->>Bot : 发送 /login 命令
Bot->>Handler : 调用登录处理器
Handler->>User : 请求用户名
User->>Handler : 输入用户名
Handler->>User : 请求密码
User->>Handler : 输入密码
Handler->>Client : 获取令牌
Client->>API : POST /CreatToken.php
API-->>Client : 返回令牌
Client-->>Handler : 返回认证结果
alt 认证成功
Handler->>KV : 存储凭证
KV-->>Handler : 存储成功
Handler-->>User : 登录成功消息
else 认证失败
Handler-->>User : 登录失败消息
end
图表来源
章节来源
预约流程包含活动选择、时间槽选择、优惠券使用和最终确认。
flowchart TD
Start([开始预约]) --> CheckAuth["检查用户认证"]
CheckAuth --> AuthOK{"已认证?"}
AuthOK --> |否| PromptLogin["提示登录"]
AuthOK --> |是| FetchEvents["获取活动列表"]
FetchEvents --> SelectEvent["选择活动"]
SelectEvent --> FetchDetails["获取活动详情"]
FetchDetails --> CheckSlots{"有可用时间槽?"}
CheckSlots --> |否| NoSlots["提示无可用时间槽"]
CheckSlots --> |是| ShowSlots["显示时间槽"]
ShowSlots --> SelectSlot["选择时间槽"]
SelectSlot --> CheckCoupons{"有可用优惠券?"}
CheckCoupons --> |否| ConfirmBooking["确认预约"]
CheckCoupons --> |是| ShowCoupons["显示优惠券"]
ShowCoupons --> ApplyCoupon["应用优惠券"]
ApplyCoupon --> ConfirmBooking
ConfirmBooking --> SubmitBooking["提交预约请求"]
SubmitBooking --> BookingOK["预约成功"]
NoSlots --> End([结束])
PromptLogin --> End
BookingOK --> End
图表来源
章节来源
系统在多个层面实施数据验证和业务约束:
字段完整性验证
业务逻辑验证
数据转换策略
章节来源
系统实现了多种数据转换和映射策略:
API 响应到内部模型的转换
数据格式标准化
向后兼容性处理
章节来源
系统采用了多层次的版本管理和兼容性处理机制:
接口版本控制
数据迁移策略
版本演进路径
章节来源
系统在数据安全方面采取了多项措施:
敏感信息保护
访问权限控制
数据传输安全
章节来源
系统依赖关系清晰,各组件之间耦合度低,便于维护和扩展。
graph TB
subgraph "外部依赖"
Grammy["@grammyjs/conversations<br/>对话插件"]
Cloudflare["@grammyjs/storage-cloudflare<br/>存储适配器"]
WorkerRuntime["Cloudflare Workers Runtime<br/>运行时环境"]
end
subgraph "内部模块"
Index["src/index.ts<br/>主入口"]
CommandIndex["src/command/index.ts<br/>命令注册"]
LoginHandler["src/command/handlers/login.ts<br/>登录处理器"]
CosmoeClient["src/client/cosmoe.ts<br/>API 客户端"]
end
Index --> CommandIndex
CommandIndex --> LoginHandler
LoginHandler --> CosmoeClient
CosmoeClient --> WorkerRuntime
CommandIndex --> Grammy
CommandIndex --> Cloudflare
图表来源
章节来源
系统在性能方面考虑了多个因素:
异步处理
缓存策略
内存管理
网络优化
常见问题及解决方案:
认证失败
预约失败
数据同步问题
章节来源
本数据模型设计文档全面阐述了 Cosmoe 摄影活动预约机器人的核心数据实体、关系结构、验证规则和转换策略。系统采用分层架构,实现了良好的模块化和可维护性。通过严格的验证规则、数据转换策略和安全措施,确保了系统的稳定性和可靠性。建议在未来版本中进一步完善数据模型的规范化和性能优化,以提升用户体验和系统效率。