简介:「智慧养老综合服务平台建设方案」以210页doc文档形式呈现,面向养老服务机构运营方、系统集成商及智慧养老产品经理,提供从平台规划、功能设计到落地实施的完整参考。文档围绕可运营、可管理、可维护三项设计原则展开,先给出项目定义、网络拓扑图与业务流程图,再逐层拆解养老运营管理、民政监管、能力评估、健康管理、营销管家与志愿者管理等子系统,细化到老人档案、健康数据采集、紧急呼救与来电弹屏、智能定位、工单闭环与超时回访、套餐排单、会员与补贴发放统计等模块,并归纳一站式服务、商家点评、健康评估等创新点。压缩包仅含1个doc文件,体积约33.79MB,图文与目录层级清晰,便于按章节检索取用。已有2488人学习,适合需要撰写方案、梳理功能清单或搭建原型的人员对照参考。
1. 从一次没被接起的呼叫说起:这套平台到底要解决什么
养老院里最常见的事故往往和设备多少无关,问题出在“各管一摊”。健康手环一套后台、一键呼叫器一套后台、服务派单靠微信群里喊人,老人按下呼叫键,值班员还在翻手机查找记录;家属问一句“我父亲今天测血压没有”,客服得挨个问护理员。智慧养老综合服务平台要干的就是这件事:把老人档案、服务工单、健康数据、紧急呼叫、定位轨迹、会员套餐与监管补贴放进同一套体系里运行,让一次呼叫能自动变成一张有责任人、有时限、有回访的服务工单。这套方案适合三类人:养老服务管理方向要做毕设与课设的学生、承接区县级养老平台建设的技术负责人、准备从单点养老院升级成区域服务商的运营方。后面按“总体架构—核心业务—关怀监控—避坑—验收”的顺序,把方案里真正决定成败的部分拆开讲。
2. 总体架构设计:五个子系统分层与中间件接口边界
智慧养老平台的架构复杂度,往往超出第一次做这类方案的人的预期。它不是“一个后台加一个 App”,而是要同时满足运营方要赚钱、监管方要留痕、家属要看得见三套诉求。围绕“可运营、可管理、可维护”这三条设计原则,方案里的分层与子系统边界定得能不能落地,直接决定了后面工单闭环、呼叫弹屏、补贴统计能不能做出来。
2.1 五层结构里每个子系统的职责边界
整条链路通常按五层切:终端接入层、中间件接口层、应用支撑层、业务应用层、展示层。
终端接入层管的是“最后一公里”的物理设备——一键呼叫器、定位手表、血压血糖仪、跌倒雷达、摄像头,以及护理员手持的移动端。这一层最容易犯的错误是把业务判断塞进终端,比如手环自己判断“这次呼叫是不是误触”。终端固件一旦迭代,业务规则就得跟着刷固件,维护成本会失控。合格的做法是终端只负责上报原始帧,判定全部收归中间件接口层。
中间件接口层负责协议转换、消息缓冲与外部通道对接。设备上报的私有帧、短信网关、语音呼叫、地图服务、定位服务都在这一层统一成标准消息。方案里专门列出的“中间件接口程序”就是这个位置,它在整个系统中相当于中枢神经系统:上层业务不需要知道底层是哪家厂商的设备,只订阅标准化事件。
应用支撑层是常被忽略但极其重要的一层,卫星定位系统、地理信息系统都在这里。定位和电子围栏的判定不要写在业务代码里,而是封装成支撑能力,运营端的位置监控、监管端的大屏、子女端的轨迹查看都调同一套接口。
业务应用层是方案的业务主体,拆成五个子系统:养老运营管理子系统负责日常运营,涵盖基础数据、老人信息、工单、健康、主动关怀、业务报表、实时监控、话务报表、办公管理、系统管理、会员管理、套餐管理、App 信息管理十三个模块;民政监管子系统负责评估机构、老人档案、评估审核、评估公示、补贴管理与统计分析;能力评估子系统独立承担老人评估、服务评价、评估人员管理;健康管理子系统管医生信息、健康数据与设备;App 与子女端负责家属侧可见性。
展示层四块屏——运营后台、呼叫中心坐席、监管大屏、家属 App。监管端与运营端必须物理上使用不同的登录入口与数据域,这一条在第 5 章还会展开,是上线后最容易被当作“小问题”而留下隐患的地方。
2.2 网络拓扑与部署形态:中心机房、呼叫坐席与终端接入
网络拓扑通常在方案里画成一张图,但真正要交代清楚的是三件事:哪些节点放在一起、哪些流量不能跨网、故障时的降级路径是什么。
中心机房部署应用服务器、数据库、文件与录音存储。呼叫中心坐席可以放机房的独立网段,也可以放运营方办公区,但坐席到中心机房的语音链路必须与办公网隔离,否则一次内网大文件传输就能把弹屏拖到十几秒。终端接入侧走独立接入点,健康设备、定位手表的心跳上报是持续低频流量,和坐席语音抢占带宽时,优先级应当排在语音之后。
降级路径是方案评审时最容易被追问的一点:数据库不可用时,呼叫坐席能不能至少接起电话并手工记录?一般的做法是坐席端保留本地缓存,呼叫记录先写本地队列,网络恢复后再补传,工单号由本地序列生成并在补传时做去重校验。
提示:拓扑图里一定要标出终端接入与坐席语音各自的带宽预算,评审时这两个数字比任何架构名词都有说服力。
2.3 跨子系统主数据与接口表设计
五个子系统共享同一份主数据,边界怎么划,落到表结构上就三张核心表:老人档案、服务工单、服务商家。操作层与监管层读的是同一份老人档案,但读的字段不同——运营端看服务记录,监管端看评估等级与补贴发放,这种差异要靠权限隔离而不是复制数据表来解决。
-- 老人档案主表:一人一档,主键用业务编号而非身份证号 CREATE TABLE elder_profile ( elder_id VARCHAR(24) PRIMARY KEY COMMENT '档案号 ELD+区域码+序列', name VARCHAR(32) NOT NULL, region_code VARCHAR(12) NOT NULL COMMENT '服务区域编码,对应服务区域管理', care_level TINYINT NOT NULL DEFAULT 0 COMMENT '能力评估等级 0未评估 1-5', guardian_phone VARCHAR(20) COMMENT '紧急联系人手机,子女账号绑定的依据', merchant_id VARCHAR(24) COMMENT '签约服务商,开放市场后必填', status TINYINT NOT NULL DEFAULT 1 COMMENT '1在册 0迁出 2身故', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_region (region_code), KEY idx_merchant (merchant_id) ) COMMENT='老人基础信息'; -- 服务工单主表:状态与超时基准时间同表维护,便于统一扫描 CREATE TABLE service_order ( order_no VARCHAR(32) PRIMARY KEY COMMENT '工单号 WO+yyyyMMdd+序列', elder_id VARCHAR(24) NOT NULL, order_type TINYINT NOT NULL COMMENT '1紧急呼叫 2主动关怀 3健康随访 4套餐服务 5投诉', source TINYINT NOT NULL COMMENT '1呼叫中心 2App 3巡检 4设备触发', assignee_id VARCHAR(24) COMMENT '服务人员或管家', status TINYINT NOT NULL DEFAULT 0 COMMENT '0待派 1已派 2已接单 3服务中 4已完成 5已回访 6退单 7超时挂起', deadline_at DATETIME NOT NULL COMMENT '承诺完成时间,超时判定的唯一依据', finished_at DATETIME, KEY idx_status_deadline (status, deadline_at) ) COMMENT='服务工单';主键不用身份证号,是因为区域调整、档案迁移之后身份证号会重复出现在多个系统里,业务编号更适合做跨子系统引用。care_level冗余在档案主表,是为了监管端做老人列表与大屏统计时不至于每行都去关联评估子系统,但等级变更必须由能力评估子系统单向写入,运营端只能读,这条约束要写进接口文档。
idx_status_deadline这个联合索引是给超时扫描用的,扫描语句的过滤条件永远是“状态属于未终结集合”加“承诺时间已过”,索引顺序按这个组合来,避免上线后工单表到几十万行时扫描变成全表。deadline_at在派单时写死,不允许在状态变更时顺手刷新,否则超时日志会永远写不出来。
3. 核心业务落地:老人档案、工单闭环与健康数据采集的三处实现
这一章讲的是方案里最容易被写成目录、落到代码就卡壳的三块:档案表怎么拆、工单状态机怎么控、健康数据怎么过滤脏值。这三块做扎实了,报表和大屏基本是水到渠成;做虚了,后面所有统计都是重新跑一遍数据库。
3.1 老人档案四张表的拆分方式
方案里老人信息分成基础信息、健康信息、定位管理、终端管理四个模块,落到存储上正好四张表,一对多关系:一人一份基础档案、一份健康档案、多条定位记录、多条终端绑定记录。
拆分的判断标准是变更频率。基础信息一年改不了两次(地址、联系人、签约服务商),健康信息月初更新一次,定位记录每天几十条,终端记录在设备更换时才有变化。混在一张宽表里,定位写入会频繁锁住整行,档案编辑时就容易出现锁等待。
终端管理表要单独记设备序列号、绑定时间、解绑时间,而不是把设备号塞进档案主表的一个字段。老人换手环、换呼叫器是常态,没有绑定时序表,历史定位数据就说不清是哪台设备上报的,出了纠纷连回溯都做不到。定位记录表按时间范围分区,保留周期按合同约定走,通常的做法是原始轨迹滚动保留三到六个月,聚合后的日轨迹长期留存用于回看。
3.2 工单状态机与超时升级规则
工单模块在方案目录里条目最多——工单管理、回访管理、投诉管理、工单超时日志、退单管理。这五个模块其实是同一张状态表的不同视角,最忌讳的实现方式是把每个模块都做一份自己的状态字段,最后五个地方的数据各说各话。
状态机定成八个状态,流转方向单向不可逆,只有退单能回到待派:
| 状态 | 含义 | 允许的下一状态 |
|---|---|---|
| 0 | 待派 | 1 已派、7 超时挂起 |
| 1 | 已派 | 2 已接单、7 超时挂起、6 退单 |
| 2 | 已接单 | 3 服务中、6 退单 |
| 3 | 服务中 | 4 已完成、7 超时挂起 |
| 4 | 已完成 | 5 已回访 |
| 5 | 已回访 | 终态 |
| 6 | 退单 | 1 已派 |
| 7 | 超时挂起 | 1 已派 |
超时扫描是这条链路的核心任务,一般写成定时任务,每五到十分钟一轮:
# 工单超时扫描:只处理未终结状态,分批拉取避免长事务 TIMEOUT_SCAN_SQL = """ SELECT order_no, order_type, assignee_id, deadline_at FROM service_order WHERE status IN (0, 1, 2, 3) -- 终结态不参与判定 AND deadline_at < NOW() ORDER BY deadline_at ASC LIMIT 500 -- 单批上限,防止锁表拖慢派单 """ def handle_timeout(order): # 紧急呼叫类(type=1)不能等,直接升级到值班长并挂起 if order["order_type"] == 1: notify_duty_leader(order["order_no"], level="urgent") change_status(order["order_no"], 7) return # 其余类型先落超时日志,再回退到待派重新分配 write_timeout_log(order["order_no"], order["deadline_at"]) reassign(order["order_no"]) if __name__ == "__main__": for row in fetch_all(TIMEOUT_SCAN_SQL): handle_timeout(row)两类工单的处理分支不一样,这是业务本身决定的:紧急呼叫晚一分钟可能就是一分钟的真实风险,所以直接升级到人;套餐服务晚半小时只是体验问题,走日志加重新派单更合适,也避免了值班长被大量非紧急超时提醒淹没。LIMIT 500不是性能玄学,而是控制单轮事务时长,工单表涨到几十万行后这一个数字能救命。扫描任务要幂等,同一工单反复被扫到只会重复写日志,不能重复改状态,靠change_status里的“当前状态必须等于预期旧状态”条件更新实现。
3.3 健康设备数据接入的解析与脏值过滤
健康数据采集模块的难点不在接收,而在过滤。腕式血压计在老人手抖、袖带没戴好、电量不足时会上报明显不合理的数值,比如收缩压 40、舒张压 20,这些数据一旦入库,月度健康报表和预警规则的准确率会全线下降。
def parse_health_frame(raw: dict): """把设备上报帧规整为可入库结构。 raw 形如 {"dev":"BP-01","elder":"ELD3201000001","ts":1710000000, "items":{"sbp":128,"dbp":82,"pulse":76}} 返回 None 表示数据无效,调用方记设备日志后丢弃。 """ items = raw.get("items") or {} sbp, dbp, pulse = items.get("sbp"), items.get("dbp"), items.get("pulse") # 区间校验是硬性要求,阈值按设备说明书来,不要凭感觉放宽 if not (60 <= (sbp or 0) <= 260 and 30 <= (dbp or 0) <= 160): return None if not (30 <= (pulse or 0) <= 200): return None # 收缩压必须高于舒张压,反过来基本可以判定为设备错帧 if sbp <= dbp: return None return { "elder_id": raw["elder"], "device_sn": raw["dev"], "measured_at": raw["ts"], "sbp": sbp, "dbp": dbp, "pulse": pulse, "quality": 1, # 0 表示存疑,仅入库不做预警 }阈值不要凭经验随意调整,按设备说明书的量程写进配置,不同厂商设备用不同配置项。quality字段是给预警规则用的:存疑数据照常入库方便追溯,但不参与超限预警和月报统计,这样既不丢数据也不会把报警刷爆。
健康数据采集背后还有一层接口设计:设备上报帧、医院信息同步、医生信息维护走的是三套不同协议,统一在中间件接口层转换成标准事件,业务层只处理elder_id + metric + value + measured_at这样的结构化记录。健康设备管理模块维护设备与老人的绑定关系,换设备时走解绑再绑定,历史数据不改写。
3.4 权限、套餐与会员三者的耦合处理
会员管理、套餐管理、系统管理里的权限控制,三者在实现上是互相咬合的:套餐决定老人能享受哪些服务、会员卡决定扣费关系、权限决定哪个角色的管家能派这张工单。
常见的处理顺序是按“数据域 + 功能点”两层做权限。功能点控制菜单和按钮,数据域控制能看到哪些服务区域、哪些服务商、哪些老人的数据。监管端的角色只授予评估、补贴、统计相关功能点,数据域覆盖全区域;运营端角色按区域与服务商划数据域,看不到其他服务商的订单与结算。能力评估子系统的评估人员只能看自己负责的评估任务,横向看不到其他评估员的进度。
套餐与会员的耦合点在于扣次与退单。套餐消费统计要对齐工单的实际完成状态,工单退单时套餐次数必须同步回滚,这条回滚一般写在数据库事务里,而不是靠前端提示“请人工核对”。
注意:权限的自测不要只看菜单是否隐藏,要拿一个低权限账号直接调接口验证返回,很多越权问题都是这么暴露出来的。
4. 主动关怀与实时监控:紧急呼救链路怎么做到十秒内弹屏
紧急呼救、来电弹屏、智能定位这三项在方案里被归为“平台功能优势”,实际上是一条链路上的三个观测点。链路跑通,这三项都成立;链路哪里堵了,三项会同时出问题。
4.1 紧急呼叫全链路:从按键到弹屏的六步
完整链路是:老人按下呼叫器或手表 SOS,设备上报到接入网关,中间件把私有帧转成标准呼叫事件,呼叫平台建立语音通道并路由到值班坐席,坐席端弹屏展示老人档案、健康摘要、位置和历史工单,坐席确认后自动生成紧急呼叫工单与推送短信给子女,通话结束录音归档关联到工单。
这六步里,前三步是技术实现重点,后三步是业务设计重点。中间件到呼叫平台这一段最容易积压,因为设备心跳和呼叫信令常常走同一条通道,心跳量大时信令排在后面,弹屏就慢了。
处理方式是给呼叫事件单独开一条高优先级队列,心跳与健康数据走普通队列,两条队列之间不共享消费线程。坐席端弹屏要带一个“档案加载”的预留位,先弹骨架和老人基本信息,健康摘要和位置异步补上,不要让坐席盯着空白页等两秒。
4.2 位置监控与电子围栏的判定成本
位置监控模块在方案里有位置监控和大屏监控两个入口,底层用的是应用支撑层的卫星定位与地理信息系统。位置上报频率、定位精度、电子围栏判定位置,这三者要一起决定,否则系统吞吐会被拖下去。
电子围栏的判定放在支撑层做,用空间数据库的缓冲区范围判断,不要在上报线程里逐点做距离计算。围栏按“养老院院区”“日常活动圈”“异常活动区”分层,只有最外层判定为越界才产生预警信息,避免老人站在门口反复进出时刷出一整屏预警。
定位手表离线是最常见的现场问题,处理上要区分“设备离线”和“老人不在围栏内”两类预警,前者是设备状态事件,后者才是位置事件,两类的通知对象和后续动作完全不同。这条区分写进方案,后续就少了很多客服扯皮。
4.3 大屏指标口径与报表设计
实时监控大屏与业务报表用的是同一份数据,但口径必须提前定死。大屏上常见的指标是今日呼叫总数、待派工单、超时工单、在线设备数、签约服务商数、补贴发放进度,报表里则是营业报表、服务类别报表、服务人员报表、工单报表、话务明细与统计。
最容易出现的问题是“今日工单数”在大屏和报表里差一截,原因多半是口径不一:大屏按创建时间统计,报表按完成时间统计。这类问题不要靠临时对齐,要在数据字典里把每个指标的“统计时间字段、包含状态、数据域”写清楚。
大屏刷新频率也要克制,呼叫类指标按十秒级刷新,营业类指标一分钟甚至五分钟刷新一次就够。全屏统一按秒级刷新,数据库的读取压力会被放大好几倍,而且是完全没有必要的开销。
4.4 监管端与运营端的数据对齐
民政监管子系统的核心是评估、补贴、服务统计三块,数据来源全在运营端。两边对齐的关键是“什么时间点的快照”和“谁有权限改”。
评估等级变更、补贴发放状态变更这类写操作,只允许监管侧发起或审核,运营端只能读;服务订单和套餐消费是运营侧产生,监管侧按区域和周期汇总。两边共用同一套老人档案,靠字段级权限隔离——监管端能看到评估等级、补贴状态、服务人次汇总,看不到服务商结算单价这类商业字段;运营端反过来。
这条边界在方案里如果写虚了,上线后会变成“监管端界面看不见数据”和“运营端数据被随意改动”两类投诉交替出现。通常的做法是把监管侧需要的统计数据做成只读视图或物化统计表,定时从业务表汇总,不直接查业务表,既能隔离权限也顺带解决了统计性能。
5. 常见问题与排查:五类上线后才暴露的翻车点
方案评审判定的是设计是否完整,真正难受的是上线第一个月。下面五类问题几乎每次都会遇到,按“现象—原因—解决”写清楚,后面的人走流程时可以照着自查。
5.1 弹屏延迟:心跳和呼叫信令挤在同一条通道
现象是坐席接起电话后弹屏要等两三秒,呼叫高峰期延迟更明显,但用测试设备单独按一次又很快。
原因几乎都是设备心跳和 SOS 信令共用一条上报通道与消费线程,测试时心跳量小感觉不出来,现场上千台设备同时上报,信令就被排在后面。还有一种变体是弹屏一次拉取全部档案数据,健康摘要表数据量大,单次查询就把页面拖住了。
解决上分两步走:中间件按消息类型拆队列,呼叫事件走独立线程池,并把设备心跳频率本身降下来,非 SOS 类上报按分钟级合并;坐席端改成骨架优先、详情异步,档案主表一次查完,健康摘要与位置在页面渲染后再拉。
5.2 工单“已完成”但服务没做:缺位置与时长证据
现象是月度抽访时家属说根本没上门,系统里工单却是已完成状态,还带一条服务人员填的记录。
原因通常是移动端允许服务人员直接点“确认完成”,没有位置校验,也没有最短服务时长约束,遇到赶时间或者想刷单的情况就直接点了。事后追查只有一条文本备注,无法作为证据。
解决方式是在工单状态从“服务中”到“已完成”之间加两道硬约束:签到位置必须落在老人档案地址的设定半径内,服务时长小于套餐约定时长的一定比例时需要填写原因。两道约束都写进服务端校验,不能只写在 App 里。历史工单补一条“证据完整性”标记,抽访时优先抽这类工单。
5.3 健康数据脏值把月报带偏
现象是某区域的健康月报里出现收缩压平均值明显偏低,抽查原始数据发现大量 40/20 这类记录,预警规则也没触发。
原因一般有两个:设备没做区间过滤直接入库;或者过滤做了但只在前端做,绕过 App 的接口调用没有过滤。另外设备长时间不校准,整体数值会漂移,单条看着正常,汇总就出偏差。
解决是把区间校验放在服务端入口,接口层直接丢弃非法帧并记设备日志;对同一设备连续多次越界的情况自动生成设备检修提醒,让健康设备管理模块有事可做;月报统计只用quality=1的记录,并在报表页面上标注剔除条数。
5.4 权限一刀切:监管端看到了不该看的商业数据
现象是监管端账号登录后能看到服务商的结算单价和详细订单流水,或者反过来,运营端的区域经理能看到别的区域的服务商名单。
原因通常是角色表只做了功能点,没做数据域,接口层直接按角色放行,没做区域与服务商维度的过滤;还有一种情况是导出功能漏了权限校验,报表能导出的数据范围比页面能看到的范围大。
解决是把数据域做成统一的拦截层,所有查询在进入 SQL 之前强制拼上区域与服务商条件,导出走同一套拦截;给每个角色写一组“越权测试用例”,包括用低权限账号直接调高权限接口、用 A 区域账号查 B 区域老人、用运营账号查监管统计。这些用例纳入回归清单,每次发版跑一遍。
5.5 大屏数字和报表对不上:口径没统一
现象是评审或领导巡检时,大屏上的“本月服务人次”和业务报表里的数字差了几百,两边都说不清哪个对。
原因是大屏用创建时间统计,报表用完成时间统计;或者大屏统计包含退单,报表排除了退单;也可能是大屏读的是缓存快照,报表实时查库,两边时区处理还不一致。
解决是建一份指标字典,每个指标固定写清楚统计时间字段、包含的状态集合、数据域范围、刷新频率,然后让大屏和报表都调同一个统计服务,不在各自页面里写 SQL。指标字典放进方案附录,答辩和验收时直接拿它对照,比口头解释有效得多。
6. 验收与答辩:用一张清单证明平台真的跑起来了
这套平台的验收不能只看功能菜单是否齐全,那种验收方式任何一份方案都能过。真正能分出高下的是端到端链路与可追溯性,下面这张清单可以直接拿去当验收表和答辩演示脚本。
| 验收项 | 验收方法 | 通过标准 |
|---|---|---|
| 紧急呼叫链路 | 现场按一次呼叫器,坐席掐表 | 从按键到弹屏展示老人基本信息不超过设定秒数,工单自动生成 |
| 工单闭环 | 挑一条套餐工单走完派单、接单、服务、完成、回访 | 每步状态与操作人可查,超时后生成超时日志 |
| 退单回滚 | 完成前退单,检查套餐次数 | 套餐次数与工单状态在同一事务内回滚一致 |
| 健康数据过滤 | 手工灌入一条 40/20 的非法帧 | 不入库为有效数据,设备日志留痕 |
| 权限隔离 | 用区域 A 账号查询区域 B 老人 | 查询结果为空,接口返回明确的越权提示 |
| 统计口径 | 大屏与报表同指标对比 | 数值一致,剔除项在页面可查 |
| 监管数据对齐 | 评估等级变更后查看两端 | 监管端可写、运营端只读,统计表定时刷新 |
演示顺序按“一次呼叫”串起来最省时间:先展示老人档案与签约服务商,按呼叫器触发弹屏,坐席受理生成紧急工单,展示定位与健康摘要,演示工单流转到完成与回访,最后切到监管端看这条服务是否进了月度统计。这条线跑通,方案里的十几个模块基本都被覆盖到了,比挨个点菜单更有说服力。
答辩时最容易被追问的是“超时工单怎么保证不丢”。回答不要停留在“有定时任务”,要说出扫描幂等、状态条件更新、紧急类与普通类分支处理这三层,最好现场打开超时日志表翻一条记录。另一个高频问题是“设备换了历史数据怎么办”,答案在终端绑定时序表,不在档案主表。
我自己的血泪经验是验收前一周一定做一次全链路压测,用脚本模拟几百台设备同时上报心跳和几十路呼叫并发,把弹屏延迟、队列积压、工单扫描耗时都实测一遍。之前有次演示当天才发,现呼叫一多弹屏就卡,最后只能临时把非紧急上报全关掉才应付过去。从那以后我每次交付前都强制走一遍“压测—看队列—看慢查询”这套动作,宁可提前暴露,也不要在评审现场找后悔药。希望这套结构和清单能帮到你,照着改改就能变成你自己的方案。
本文还有配套的精品资源,点击获取