# 云宿居 PMS 系统 - 核心功能需求 (PMS内部聚焦) ## 1. 引言 ### 1.1 文档目的与范围 本文档定义了"云宿居"民宿 Property Management System (PMS) 的核心功能需求,**重点聚焦于PMS租户核心业务子系统(以下简称PMS核心模块)的内部功能**。它旨在明确该子系统的核心功能范围和关键业务流程。 本文档是PMS核心模块后续详细设计和开发工作的基础。 ### 1.2 目标读者 产品经理、架构师、开发工程师、测试工程师。 ### 1.4 术语表 | 术语 | 全称 | 描述 | | ------- | -------------------------- | ------------------------------------------------------------- | | PMS | Property Management System | 民宿/酒店属性管理系统,管理房间、预订、联系人、账务等核心业务 | | Folio | Folio | 客户账单,用于记录联系人在店期间所有费用和付款的详细清单 | | Tenant | Tenant | 租户,指使用本SaaS化PMS系统的单个民宿运营方 | | Dept | Department | 部门,在本系统中表示租户下的门店/分店 | | Contact | Contact | 联系人,指系统中统一管理的客户信息,包括预订人、实际入住人等 | ### 1.5 优先级定义 * **[P0]**: MVP 阶段必须实现的核心功能。 * **[P1]**: 重要功能,MVP 后第一个主要版本包含。 * **[P2]**: 次要或完善性功能,后续迭代实现。 * **[P3]**: 未来规划或可选功能。 ## 2. 核心设计原则 (适用于PMS内部) 1. **核心稳固**: 保持PMS核心功能(房态、订单、账务、联系人)的极简和稳定。 2. **数据为基**: 确保PMS核心数据结构设计合理,易于内部功能扩展。 3. **安全隐私**: PMS内部数据处理需考虑数据安全和隐私保护。 4. **门店为中心**: 所有业务数据以门店(部门)为归属单位,支持一个租户下多个门店的业务模型。 ## 3. 系统架构概览 (PMS视角) PMS租户核心业务子系统是整个云宿居平台的核心,负责处理民宿日常运营的核心业务流程。 ```mermaid flowchart TD subgraph PMSCore["PMS核心业务子系统"] PMS["PMS租户
核心业务子系统"]:::coreSystem end subgraph ExternalSystems["外部关联系统"] SaaSPlat[SaaS平台管理]:::system WCDSMM[商城与商品管理]:::system end PMSAdmin[PMS核心后台]:::app OwnerApp[民宿管理小程序]:::app UserB([民宿主/前台]):::user SaaSPlat -- "租户配置" --> PMS WCDSMM -- "预订数据" --> PMS PMS -- "房态/价格" --> WCDSMM PMSAdmin --> PMS OwnerApp --> PMS UserB -.-> PMSAdmin UserB -.-> OwnerApp classDef system fill:#f0f8ff,stroke:#1890ff,stroke-width:1px classDef coreSystem fill:#f6ffed,stroke:#52c41a,stroke-width:3px,color:#135200,font-weight:bold classDef app fill:#d9f7be,stroke:#52c41a,stroke-width:1px classDef user fill:#fff7e6,stroke:#fa8c16,stroke-width:1px,shape:person ``` ## 4. PMS租户核心业务子系统 (PMSTenantCoreSubsystem) **目标:** 为民宿租户提供稳定、高效的核心运营管理能力。 **主要用户:** 民宿主/管理员、前台员工。 #### 4.2.1 房态管理 [P0] * **功能:** * **网格日历视图:** 直观展示房间占用情况(已预订、已入住、清洁中、维护锁定)。 * **今日状态列表:** 按预抵、在住、预离分类展示当日订单/房间。 * **清洁状态管理:** 手动标记房间清洁状态 (待清洁/清洁中/已干净)。 * **快捷操作:** 在房态图上可快速创建预订、登记入住/退房、标记房间清洁状态、设置房间临时锁定/解锁。支持拖动修改预订的入住日期或房间。 * **关键数据:** * `pms_room_types` (room_type_id:BIGINT:pk, dept_id:BIGINT, name:VARCHAR(255), default_price:DECIMAL(10,2), capacity:INT, amenities:JSON, description:TEXT, images_json:JSON, status:VARCHAR(50)) * `pms_room_rooms` (room_id:BIGINT:pk, dept_id:BIGINT, room_type_id:BIGINT, room_number:VARCHAR(50), floor:VARCHAR(50), room_status:VARCHAR(50), cleaning_status:VARCHAR(50), description:TEXT, status:VARCHAR(50)) * `pms_room_locks` (lock_id:BIGINT:pk, dept_id:BIGINT, room_id:BIGINT, start_datetime:DATETIME, end_datetime:DATETIME, reason:TEXT, lock_type:VARCHAR(50)) #### 4.2.2 订单管理 [P0, P1, P2] * **目标:** 高效、准确地管理所有来源的预订订单。 * **[P0] 核心订单生命周期管理:** * 功能: 手动创建订单、接收外部系统订单、订单详情查看与编辑、核心状态管理(待确认、已确认、已入住、已退房、已取消、未入住)、关联联系人与房间、生成账单基础、房态联动。 * 库存策略: `pending_confirmation` 状态不锁硬库存。`confirmed` 状态锁定库存。 * 关键数据: * `pms_core_orders` (order_id:BIGINT:pk, dept_id:BIGINT, contact_id:BIGINT, primary_contact_name:VARCHAR(100), primary_contact_phone:VARCHAR(50), pms_room_id:BIGINT, room_type_id:BIGINT, channel_id:BIGINT, check_in_date:DATE, check_out_date:DATE, num_adults:INT, num_children:INT, estimated_arrival_time:TIME, total_amount:DECIMAL(10,2), paid_amount:DECIMAL(10,2), due_amount:DECIMAL(10,2), currency:VARCHAR(3), order_status:VARCHAR(50), order_source:VARCHAR(50), notes:TEXT, cancelled_at:DATETIME, cancellation_reason:TEXT) * `pms_core_order_items` (order_item_id:BIGINT:pk, order_id:BIGINT, dept_id:BIGINT, pms_room_id:BIGINT, product_id:BIGINT, product_type:VARCHAR(50), description:VARCHAR(255), quantity:INT, unit_price:DECIMAL(10,2), total_price:DECIMAL(10,2), service_date:DATE, notes:TEXT) * `pms_core_channels` (channel_id:BIGINT:pk, dept_id:BIGINT, name:VARCHAR(100), channel_type:VARCHAR(50), description:TEXT, status:VARCHAR(50)) * 状态流转图: ```mermaid stateDiagram-v2 [*] --> pending_confirmation: 创建订单 pending_confirmation --> confirmed: 确认订单 pending_confirmation --> cancelled: 取消订单 confirmed --> checked_in: 办理入住 confirmed --> cancelled: 取消订单 confirmed --> no_show: 未按时入住 checked_in --> checked_out: 办理退房 checked_in --> extended: 延长入住 extended --> checked_out: 办理退房 checked_out --> [*] : 订单完成 cancelled --> [*] : 订单取消 no_show --> [*] : 订单标记为No Show ``` * **[P1] 增强功能:** 订单修改(日期、房型等)、款项管理(预付款、押金)、取消与退款细则、基础支付记录(如手动录入)、自动化通知(预订成功、入住提醒)、订单备注与标签。 * **[P2] 实用订单工具:** 简版团体预订、等候名单、订单报表、发票管理。 #### 4.2.3 财务与支付 (Folio Management) [P0] * **功能:** 账单管理(Folio)、交易流水、附加消费管理、收款方式与记录、退款处理、账单生成与查询。 * **关键数据:** * `pms_finance_folios` (folio_id:BIGINT:pk, dept_id:BIGINT, order_id:BIGINT, total_charges:DECIMAL(10,2), total_payments:DECIMAL(10,2), total_refunds:DECIMAL(10,2), balance:DECIMAL(10,2), folio_status:VARCHAR(50), notes:TEXT, closed_at:DATETIME) * `pms_finance_transactions` (transaction_id:BIGINT:pk, folio_id:BIGINT, dept_id:BIGINT, transaction_type:VARCHAR(50), amount:DECIMAL(10,2), description:VARCHAR(255), payment_method_id:BIGINT, payment_gateway_txn_id:VARCHAR(255), transaction_time:DATETIME, related_order_item_id:BIGINT, notes:TEXT, is_void:BOOLEAN, voided_at:DATETIME, voided_reason:TEXT) * `pms_finance_payment_methods` (payment_method_id:BIGINT:pk, dept_id:BIGINT, name:VARCHAR(100), method_type:VARCHAR(50), details_json:JSON, status:VARCHAR(50)) * `pms_finance_extra_charge_items` (item_id:BIGINT:pk, dept_id:BIGINT, name:VARCHAR(255), default_price:DECIMAL(10,2), category:VARCHAR(100), is_taxable:BOOLEAN, description:TEXT, status:VARCHAR(50)) #### 4.2.4 联系人与会员管理 [P1] (P0阶段依赖`cmn_contacts`部分字段) * **功能 (P0涉及):** 订单关联联系人时,使用/创建`cmn_contacts`记录。 * **关键数据 (P0使用部分):** * `cmn_contacts` (contact_id:BIGINT:pk, dept_id:BIGINT, contact_type:VARCHAR(50), full_name:VARCHAR(255), phone_number:VARCHAR(50), email:VARCHAR(255), id_type:VARCHAR(50), id_number_encrypted:VARCHAR(255), gender:VARCHAR(20), contact_status:VARCHAR(50)) * **[P1] 功能:** 统一联系人档案、证件管理、联系人标签[P2]、联系人偏好[P2]、会员信息管理。 #### 4.2.5 会员营销 (储值、等级、权益) [P2] * **功能:** 储值管理、会员等级定义与升级、会员权益定义与关联。 #### 4.2.6 租户级系统管理 [P0] * **功能:** * **员工管理:** 租户管理员管理内部员工账号。 * **角色与权限:** 租户管理员定义内部角色 [MVP: 预设固定角色]。 * **基础设置:** 民宿信息、Logo等;房型管理;房间管理;基础定价策略 (`pms_room_types.default_price`, `pms_room_pricing_rules`表);支付方式管理 (`pms_finance_payment_methods`);附加消费项目 (`pms_finance_extra_charge_items`)。 * **门店管理:** 在一个租户下管理多个门店,每个门店对应一个sys_dept记录。 * **租户特定配置:** 管理租户全局及各门店特定的配置。 * **关键数据:** * `pms_tenant_settings` (setting_id:BIGINT:pk, tenant_id:VARCHAR(20), dept_id:BIGINT, setting_group:VARCHAR(100), setting_key:VARCHAR(100), setting_value:TEXT, value_type:VARCHAR(50), description:TEXT, is_sensitive:BOOLEAN) * 特殊说明: 保留tenant_id字段,当dept_id为NULL时表示租户全局配置,当dept_id有值时表示特定门店配置。主要存储PMS业务相关的配置项。 * `pms_mp_settings` (setting_id:BIGINT:pk, tenant_id:VARCHAR(20), dept_id:BIGINT, setting_key:VARCHAR(100), setting_value:TEXT, value_type:VARCHAR(50), description:TEXT) * 特殊说明: 保留tenant_id字段,当dept_id为NULL时表示租户级小程序配置,当dept_id有值时表示特定门店的小程序配置。主要存储民宿管理小程序的界面和功能配置。 * `pms_tenant_user_devices` (id:BIGINT:pk, user_id:BIGINT, device_type:VARCHAR(50), device_token:VARCHAR(512), app_version:VARCHAR(50), last_login_at:DATETIME, status:VARCHAR(50)) * `pms_room_pricing_rules` (rule_id:BIGINT:pk, dept_id:BIGINT, name:VARCHAR(255), room_type_id:BIGINT, date_range_start:DATE, date_range_end:DATE, days_of_week_json:JSON, min_length_of_stay:INT, max_length_of_stay:INT, price_adjustment_type:VARCHAR(50), adjustment_value:DECIMAL(10,2), priority:INT, status:VARCHAR(50)) ##### 4.2.6.1 员工管理 * **功能:** 民宿租户管理员管理本民宿的员工账号、分配角色。用户登录后,若关联多个租户或部门,提供切换租户和部门(门店)功能。 #### 4.2.7 简易报表与分析 [P1] * **功能:** 核心运营报表 (总营收、入住率、ADR、RevPAR)、渠道来源分析、会员统计、消费分析。 * **特点:** 支持门店级和租户级统计分析。 #### 4.2.8 民宿管理小程序 (Owner We App) [P0] * **技术:** 前端使用 Uni-App * **功能:** 房态查看、订单提醒、日程查看(今日预抵/预离)、状态处理 (简单入住/退房操作)、数据概览(核心收支数据)。 * **特点:** 支持门店切换功能。 #### 4.2.9 PMS核心管理后台 [P0] * **描述:** 提供独立的Web管理后台界面,完成所有PMS核心业务操作。 ## 5. 关键业务场景模型图 (PMS内部) ### 5.1 订单状态图 - 房间预订生命周期 ```mermaid stateDiagram-v2 [*] --> 待确认: 用户创建预订 待确认 --> 已确认: 预付款成功/人工确认 待确认 --> 已取消: 超时未确认/用户取消 已确认 --> 已取消: 申请取消并退款 已确认 --> 已入住: 办理入住手续 已入住 --> 已退房: 办理退房手续 已退房 --> 已完成: 完成结算 已取消 --> [*] 已完成 --> [*] ``` ### 5.2 PMS核心业务状态图 ```mermaid stateDiagram-v2 state 房间状态 { [*] --> 空闲 空闲 --> 已预订: 创建预订 空闲 --> 维护中: 设置维护 已预订 --> 已入住: 办理入住 已预订 --> 空闲: 取消预订 已入住 --> 待清洁: 办理退房 待清洁 --> 清洁中: 开始清洁 清洁中 --> 空闲: 完成清洁 维护中 --> 空闲: 完成维护 } state 财务状态 { [*] --> 未结账 未结账 --> 部分支付: 收取定金/押金 部分支付 --> 部分支付: 增加消费 部分支付 --> 已结清: 支付尾款 部分支付 --> 退款中: 申请退款 退款中 --> 已退款: 确认退款 已结清 --> [*] 已退款 --> [*] } ``` ### 5.3 PMS租户核心业务子系统组件图 ```mermaid flowchart TD subgraph PMS["PMS租户核心业务子系统"] direction TB APILayer["API层 (内部)"]:::internal --> |请求分发| BusinessModules subgraph BusinessModules["核心业务模块"] direction TB Room["房态管理"]:::internal Booking["订单管理"]:::internal Finance["财务与支付"]:::internal Guest["联系人与会员 (P1核心)"]:::internal Settings["系统管理 (含门店管理)"]:::internal Reports["报表分析 (P1+)"]:::internal Room <--> Booking Booking <--> Finance Booking --> Guest end end subgraph AccessLayer["应用访问层 (PMS用户)"] direction LR MiniApp["民宿管理小程序"]:::external WebAdmin["PMS Web管理后台"]:::external end AccessLayer --> APILayer classDef internal fill:#f0f8ff,stroke:#1890ff,stroke-width:1px classDef external fill:#f5f5f5,stroke:#d9d9d9,stroke-width:1px ``` ## 6. 系统角色与权限概述 (PMS相关用户) 1. **民宿租户管理员 (Tenant Admin):** * 用户实体: 关联到 `sys_user` 表。 * 关联: 通过 `sys_user_role` 表关联到租户及相关角色。 * 操作平台: PMS核心后台 (Web), 民宿管理小程序 (Uni-App)。 * 核心职责: 管理其名下一个或多个民宿门店的完整运营,包括房型房间、订单、财务、员工、租户级系统设置等。 2. **门店管理员 (Store Manager):** * 用户实体: 关联到 `sys_user` 表。 * 关联: 通过 `sys_user_role` 表和 `sys_dept` 表关联到特定门店与角色。 * 操作平台: PMS核心后台 (Web), 民宿管理小程序 (Uni-App)。 * 核心职责: 管理特定门店的日常运营。 3. **民宿前台/员工 (Tenant Staff):** * 用户实体: 关联到 `sys_user` 表。 * 关联: 通过 `sys_user_role` 表和 `sys_dept` 表关联到门店及相关角色。 * 操作平台: PMS核心后台 (Web), 民宿管理小程序 (Uni-App)。 * 核心职责: 根据分配的权限执行日常操作,如订单处理、房态更新、联系人入住退房、账务录入等。 ## 7. 实施策略与演进路径 (PMS P0重点) ### 7.1 MVP阶段 (PMS核心功能) - **房态管理:** 基础房型、房间定义和日历视图。 - **订单管理:** 手动录单、接收外部订单(简化接口)、入住、退房基本流程。 - **财务与支付:** 基础账单 (Folio)、交易流水、手动收款/支付记录。 - **租户级系统管理:** 员工账号、门店管理、基础设置(房型、房间、基础价格、支付方式、附加消费项目)。 - **民宿管理小程序:** 房态查看和简单操作(入住/退房)。 ## 8. 版本历史 - v2.8 (原始文档版本) - 本文档基于此裁剪和聚焦。 - v3.0 (最新版本) - 修改为"部门作为门店"的数据模型,业务表只关联sys_dept。 ## 附录 (PMS内部核心实体) ### 附录A 概念性 E-R 图 (PMS核心) ```mermaid graph LR sys_tenant(sys_tenant) -->|1..N| sys_dept(Department) sys_dept -->|1..N| pms_core_orders(Order) sys_dept -->|1..N| pms_room_rooms(Room) sys_dept -->|1..N| sys_user(User) sys_dept -->|1..N| pms_tenant_settings(Settings) pms_core_orders -->|0..1| cmn_contacts(Contact) pms_core_orders -->|1..N| pms_core_order_items(OrderItem) pms_core_orders -->|1..1| pms_finance_folios(Folio) pms_room_rooms -->|1..1| pms_room_types(RoomType) pms_finance_folios -->|1..N| pms_finance_transactions(Transaction) ``` ### 附录B 实体关系图 (PMS核心及关联) ```mermaid graph LR sys_tenant("sys_tenant") -->|1..N| sys_dept("sys_dept (门店)") sys_dept -->|1..N| pms_core_orders sys_dept -->|1..N| pms_room_rooms sys_dept -->|1..N| sys_user sys_user -->|1..N| pms_tenant_user_devices sys_user -->|1..N| sys_user_role sys_dept -->|1..N| pms_tenant_settings sys_dept -->|1..N| pms_mp_settings sys_dept -->|1..N| cmn_contacts sys_dept -->|1..N| pms_room_types pms_core_orders -->|0..1| cmn_contacts pms_core_orders -->|1..N| pms_core_order_items pms_core_orders -->|1..1| pms_finance_folios pms_room_rooms -->|1..1| pms_room_types pms_room_types -->|1..N| pms_room_pricing_rules pms_core_order_items -->|0..1| pms_finance_extra_charge_items pms_core_order_items -->|0..1| pms_room_rooms pms_finance_folios -->|1..N| pms_finance_transactions pms_finance_transactions -->|0..1| pms_finance_payment_methods ```