ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

药膳养生App开发:体质测评算法与三层架构实战解析

药膳养生App开发:体质测评算法与三层架构实战解析 简介一份聚焦Android药膳养生科普系统设计与实现的参考文献PDF适合Android应用开发者、健康养生类产品设计人员及相关专业学生作为毕业设计与课题研发的参考。文档依托三层架构依次介绍表示层、业务逻辑层和数据访问层的职责划分并结合“食遇记”App案例详细展开中医体质辨识问卷、游戏闯关、论坛等核心功能的设计思路系统实现部分对闯关界面、问卷结果和论坛首页进行了说明关键方法中给出了九种体质量表原始分与转化分计算公式及对应代码片段。整份资料为1个PDF文件压缩包大小4.26MB内容精炼、版式清晰适合直接阅读与局部截取引用。文档还涉及Android界面布局、数据库CRUD、移动云与大数据分析等落地内容可作为移动健康应用开发中的实用专业指导。已有179人学习/下载。1. 药膳养生科普系统为什么用闯关游戏而不是图文列表做 Android 科普应用2019 年前后市面上几乎没有专门做药膳养生的 Android 应用大众对药膳概念停留在“知道对身体好”却说不清食物性味、体质禁忌和温热寒凉的差异。这篇论文设计的“食遇记”App 给了一个反直觉的答案科普药膳知识不靠图文列表而是靠游戏闯关加中医体质问卷。用户先完成 9 套体质问卷获知自己属于平和质还是某种偏颇质再在闯关游戏里扮演普通人、孕妇、老人等角色根据症状搭配药膳由系统按算法给搭配效果打分。整个系统跑在 Android 客户端采用三层架构数据存 Bmob 后端云。想复现体质测评算法、游戏化科普交互或云端数据接入的 Android 开发者可以拿这套设计做直接参考。2. 三层架构拆解表示层、业务逻辑层、数据访问层怎么分工2.1 表示层游戏闯关、体质问卷、论坛三类交互的界面职责表示层就是 Android 端用户能直接摸到的全部东西。食遇记的表示层承载三块交互体质问卷、游戏闯关、论坛。体质问卷的入口是一套按“没有、很少、有时、经常、总是”五个档位作答的页面用户逐题勾选后把答案收集起来传给业务层等结果返回再渲染体质类型和分数。游戏闯关的入口是场景化的角色扮演界面玩家根据角色当前不适症状在食物卡列表里选择搭配界面把搭配结果发给业务层打分。论坛的入口是帖子列表和发帖页页面用 ScrollView 实现滑动浏览每条帖子带评论和收藏按钮。这一层不碰任何业务计算。问卷分数怎么算、闯关搭配效果怎么打分、推荐什么药膳表示层一概不管只负责监听用户请求、收集必要的健康数据、上传到下一层再把业务逻辑层返回的体质辨识结果或数据分析结果渲染出来。在 Android Studio 里新建工程时Activity 和 Fragment 就是现成的表示层载体直接把包名按表示层、业务层、数据访问层拆三个模块后续维护时定位代码能省大量时间。新手最容易在表示层犯的错是把结果展示做成一个裸 Toast。体质测评结果页要展示的不只是“你的得分”还有体质类型、转化分、疾病倾向、保养建议多个字段。这种多字段结果要单独做结果页承载每个字段一个控件排版留够间距。Toast 只适合展示“提交成功”这类瞬时反馈不适合承载结构化数据。2.2 业务逻辑层问卷算分、闯关评分与数据挖掘的算法落点业务逻辑层是整个 App 的核心夹在表示层和数据访问层中间。对上它接收表示层传来的问卷测评分数和游戏闯关分数执行计算并把结果反馈回去对下它把计算得到的用户体质信息、游戏闯关结果、食物性味归经、药膳配方等数据交给数据访问层持久化为之后的数据挖掘和个性化推荐提供数据基础。体质问卷的原始分求和、转化分换算、体质类型判定闯关游戏的药膳搭配效果评分以及后台对用户体质信息的数据分析和挖掘全部落在这层。这里要区分用户功能业务和后台应用业务用户功能业务处理单个用户在前端的操作请求比如一次问卷提交、一次闯关评分后台应用业务处理的是对全体用户数据的分析任务比如统计不同体质人群的分布、挖掘体质与食物偏好的相关性。两者分开前台响应速度不会被后台分析任务拖累。实际开发中我见过太多把算分逻辑直接写进 Activity 的项目9 个体质问卷页面各写一遍转化分公式后来公式要调整得改九个地方漏改一处就是一场事故。食遇记的做法是业务逻辑层统一收口9 种体质共用同一套算分入口只是传入的条目数和分数数组不同。这样数据挖掘介入时直接在这一层取用户多份历史体质数据即可完全不用碰表示层代码——分层带来的维护便利在项目中期就能真切感受到。2.3 数据访问层Bmob 后端云的数据表映射与 CRUD 封装数据访问层给业务逻辑层提供稳定的数据访问接口承担增删改查和持久化存储。食遇记选的是 Bmob 后端云而不是自己搭服务器加 MySQL。选型理由很现实学生团队没有专职运维自己搭后端要处理服务器稳定性、数据库备份、安全验证、消息推送一堆事务性工作开发成本远超预期。Bmob 的好处是只需创建一个规定格式的 Java 类就能在云端生成对应的数据表繁琐的增删改查功能也只需调用云端 API。// Bmob 数据表映射类对应云端用户体质测评结果表 public class UserConstitution extends BmobObject { private String userId; // 用户ID关联账户表 private Integer constitutionType; // 体质类型编号1-9 private Double transformScore; // 转化分保留两位小数 private Integer rawScore; // 原始分 private Integer questionCount; // 问卷条目数 // Bmob 要求提供 getter/setter字段名与云表列名保持一致 public String getUserId() { return userId; } public void setUserId(String userId) { this.userId userId; } // 其余 getter/setter 按同样模式生成此处省略 }这个类里的字段定义就是云端表结构的映射。userId 关联账户表constitutionType 记体质类型transformScore 存转化分questionCount 存当前这套问卷的条目数。调用端只用 new 出对象、set 字段、调用 save() 方法就能完成插入查询用 BmobQuery 按 userId 拉取历史记录。有一点必须提前说明Bmob 表字段类型在云端创建后不建议再改Java 类字段定义之前一定要和云端表结构对齐否则数据写入会静默失败这个坑在避坑章节会详细展开。2.4 三层架构的价值独立调试、并行开发与健壮性维护三层架构在团队协作场景里的价值体现得最明显。表示层、业务逻辑层、数据访问层分给三个人并行开发接口先定好互不阻塞。表示层在等业务逻辑层接口时可以先按约定把布局和跳转写完数据访问层可以先建表、跑通 CRUD业务逻辑层专注算法。出了问题时只需修改出问题的那一层其余两层不受牵连这就是系统架构里强调的健壮性。反例我也见过不少。拆过一个没分层的老项目Activity 里直接查 Bmob、现场算转化分、顺手渲染结果单个 Activity 两千多行。后来要加“按体质推送推荐食谱”的需求改动波及六个 Activity因为每个页面都有一段独立的数据库查询代码。花了三个晚上重构回三层结构后同样的需求只加在业务逻辑层一个方法里各层接口都没动。分层红利最直观的体感就是这种“需求从三天缩到一小时”的差距。层次核心职责Android 工程里的典型载体出问题时的表象表示层交互、输入收集、结果渲染Activity / Fragment / 布局 XML页面不显示、按钮无响应、展示数据错位业务逻辑层算分、判定、推荐、数据挖掘算法类 / 业务管理器计算错误、推荐结果与体质不匹配数据访问层CRUD、持久化、云端映射Bmob 映射类 / 数据访问封装类数据读不出、写不进、云端字段报错3. 中医体质测评九套问卷的转化分计算与体质判定实现3.1 九种体质的问卷结构与计分规则中医体质测评是整个系统推荐逻辑的地基。食遇记参考了王琦的中医体质学说9 种体质包括 1 种平和质和 8 种偏颇质——气虚、阳虚、阴虚、痰湿、湿热、血瘀、气郁、特禀。系统针对 9 种体质分别设计了问卷每种体质 7 到 8 个问题用户按个人真实情况逐题作答。计分采用五档制没有计 1 分、很少计 2 分、有时计 3 分、经常计 4 分、总是计 5 分。这套计分规则有一个容易忽略的设计意图最低分是 1 而不是 0。这意味着每个条目的基础分是 1转化分公式里减条目数就是在去掉这个基础分剩下的才是症状程度的实际贡献分。答题时用户如果全部选“没有”原始分等于条目数转化分就是 0 分全部选“总是”原始分等于条目数乘以 5转化分是 100 分公式在设计上就把转化分归一化到 0 到 100 的闭区间。设计问卷问题时平和质问卷问的是精力状态、睡眠质量、排便规律这类正向指标偏颇质问卷问的是对应的负向症状——气虚质问“容易疲乏吗”阳虚质问“怕冷吗”痰湿质问“身体沉重吗”。这套问法决定了后续推荐方向平和质只需保持现有饮食习惯偏颇质则需要用特定性味的食物纠偏。题目越有区分度算出来的转化分越能反映真实体质倾向。3.2 原始分与转化分公式为什么减条目数、为什么乘 100原始分就是各问题分数的总和。转化分是整套测评的核心逻辑公式如下转化分 [(原始分 - 条目数) ÷ (条目数 × 4)] × 100拆开理解条目数是某套体质问卷的问题个数。减条目数去掉每个问题最低的 1 分基础分除以条目数乘以 4是因为每题得分区间是 1 到 5、跨度正好 4这个除法把总分差值归一化成每题平均症状强度再乘 100让结果落在 0 到 100 区间便于横向比较和判定。9 种体质各自独立计算转化分分数分开存、分开判定互不干扰。转化分公式还有另一种理解方式原始分减条目数再除以条目数乘 4本质上是“症状程度占比”。每个条目的症状贡献范围是 0没有到 4总是全部条目都选“总是”时占比 100%全部选“没有”时占比 0。公式把占比放大 100 倍便于设置判定阈值设计逻辑就是如此朴素。要注意的是这个公式的边界条件是用户必须答完该套问卷全部题目漏答会导致原始分缺项而转化分系统性偏低后面避坑章节会专门讲。3.3 转化分计算代码从原始分求和到结果展示论文给出的核心计算代码很短但短代码里藏着三个需要注意的参数。// 同一套体质问卷 7 个问题的得分相加得到原始分 int score score_1 score_2 score_3 score_4 score_5 score_6 score_7; // queNum 是当前这套问卷的条目数论文示例里为 7 int queNum 7; // 转化分公式先减基础分再归一化到 0-100 // 注意int 除法会截断小数生产环境应先转 double详见第 5 章 double finalScore ((score - queNum) / (double)(queNum * 4)) * 100; Toast.makeText(full_of_qiActivity.this, 你的得分是: finalScore 分, Toast.LENGTH_LONG).show();第一行把 7 个问题的得分相加得到原始分。第二行定义条目数代码里写死为 7实际项目里应该从问卷配置里读取因为 9 套体质问卷的条目数并不相同有的是 7 条有的是 8 条。第三行套转化分公式这里我用 (double) 做了强转避免 Java 整数除法直接截断小数部分这是从踩坑记录里提炼出来的写法。第四行的 Toast.LENGTH_LONG 是约 3.5 秒的展示时长适合让用户看清分数。真实项目里建议把整套计算封装成一个独立方法入参是分数数组和条目数出参是转化分9 套问卷统一调用。不要每套问卷复制粘贴一份计算代码后期公式调整或阈值修改时只动一处出问题也好排查。3.4 体质判定标准平和质与偏颇质的打分边界转化分算出来后要按评分标准判定体质类型。这张判定表是系统里最值得做成配置文件的东西因为判定逻辑复杂且容易改体质类型判定条件判定结果平和质转化分 ≥ 60且其他 8 种体质转化分均 30是平和质转化分 ≥ 60且其他 8 种体质转化分均 40基本是平和质不满足上述条件否偏颇质转化分 ≥ 40是偏颇质转化分 30~39倾向是偏颇质转化分 30否注意平和质的判定依赖全部 9 套问卷的结果而偏颇质各自独立判定。一个人可以同时“倾向”好几种偏颇质这在中医体质学说里是合理的——体质并非非此即彼的互斥状态。系统拿到 9 个转化分后先按上表逐个体质判定再组合成完整的体质画像。体质画像确定后业务逻辑层把结果写进数据库与数据表中的食物性味归经、药膳配方比对筛选出适合该体质的食物形成个性化推荐方案整个过程在表示层无感知地完成。4. 游戏闯关版块以游戏为载体的药膳知识科普机制4.1 闯关游戏的角色设定与关卡递进逻辑食遇记的游戏版块设计思路很巧玩家扮演一个普通人度过一生游戏过程中身体会出现各种不适状况玩家需要根据症状、体质、年龄等各方面因素为自己搭配药膳进行调理系统根据特定算法对搭配效果打分分数越高关卡奖励越多。这不是单纯的答题游戏而是把药膳知识嵌进“养人”的角色模拟里。玩家在游戏里不是被教育而是在闯关过程中被迫理解食物性味和体质禁忌。随着进度推进玩家要照顾的对象从普通人扩展到孕妇、孩子、老人。这类人群身体状况复杂、禁忌多搭配药膳的难度系数明显增加。孕妇要避开活血化瘀类食材老人消化功能弱要选易吸收的温补食材孩子身体发育阶段不适合大补。关卡设计上照顾对象的年龄、体质状态、当前症状都是评分算法的输入参数参数越多越复杂配出合理药膳的难度越高。角色属性设计上还有一个细节年龄和体质状态是动态变化的同一个普通人在青年和中年时期的身体状况不同同样一个症状在不同年龄段背后的调理逻辑也不同。设计时要把年龄、体质、症状三个维度做成独立参数组合成一个状态快照评分算法按快照匹配食疗方案。实现层面游戏记录表至少要有 level关卡、roleType角色类型、age年龄、symptom症状标签、selectedFoods所选食物列表、score评分、timestamp时间戳七个字段。没有独立的角色状态快照表后续要做数据挖掘时很难从历史记录里还原当时的完整场景。4.2 药膳搭配评分算法的设计思路系统会对玩家搭配出来的药膳调理效果打分。评分算法的具体公式论文没有展开但从整体设计能推测出算法至少包含三个输入维度对象体征匹配度、食物禁忌命中率、药膳搭配合理性。体征匹配度看玩家选的食物是否对应角色当前不适症状禁忌命中率看搭配里有没有碰到该人群不该吃的食材搭配合理性看一餐里温热寒凉性味的组合是否协调。打分结果要能驱动游戏反馈所以输出不能只是一个干巴巴的数字。低分时要有提示引导玩家重配高分时给予额外关卡奖励形成“试错—学习—强化”的循环。分数还可以和体质测评数据联动玩家在答题或闯关中选过的食物会被记录系统按食物卡上的性味归经和营养数据计算搭配合理性表现层把评分结果和调整建议渲染在一起让用户既知道分低也知道低在哪。评分结果反馈到界面建议做成“分数 改善建议”的组合展示。玩家看到分低紧接着看到“这道药膳偏温燥不适合现在的阴虚症状”这类具体提示学习效果远好于只看到“再试一次”。反馈文案要预先写好几套模板按匹配失败的原因类型匹配输出。这里有个容易翻车的点评分公式如果和问卷转化分用了同一个方法两者语义完全不同后面避坑章节会专门讲这个事故。4.3 食物卡抽取与答题机制游戏化科普的交互细节游戏里科普药膳知识的手段是“抽取食物卡和答题”。食物卡上印着食物名称、性味温热寒凉、归经、适用体质、禁忌人群等信息。玩家抽取卡片后要在限定时间内把卡片拖拽或点选到药膳搭配区。答题则是针对关卡里出现的体质状况选择对应的食疗方案。这种交互把抽象的中医营养学概念变成了可操作的游戏道具用户不需要先背熟理论才能玩而是在玩的过程中慢慢记住食物属性。答题机制和食物卡抽取可以结合关卡节奏每关开头抽 2 到 3 张卡熟悉食材中途根据症状选择搭配结尾答一道理论知识题巩固记忆。这种节奏安排的目的很明确——让用户在游戏过程中自然完成“认识食材—应用食材—理解原理”的三级学习。实现上食物卡可以用 CardView 加线性布局承载卡片数据从云端食物图鉴表拉取图片资源统一压缩避免一次性加载大量高清图导致列表卡顿。论坛版块也是同样的知识科普载体。玩家可以在论坛里分享药膳心得、讨论疑难搭配管理员定期审核内容保证健康性。论坛和游戏互补游戏负责“学”论坛负责“交流”问卷负责“测体质”三个模块共同构成产品闭环。论坛部分主要有发帖、评论、收藏功能页面布局用 ScrollView进入首页后可滑动浏览帖子点击进入详情每条帖子下有评论和收藏按钮收藏内容保存到数据库收藏中心从数据库调用显示。4.4 游戏进度与体质数据的存储设计游戏闯关的进度数据、答题记录、搭配评分结果都需要持久化。食遇记把用户账户信息、食物图鉴、药膳配方存在云端服务器用的是 Bmob 后端云。游戏进度这类高频写操作的数据建议本地先用 SharedPreferences 或 SQLite 缓存再异步同步到云端。原因很直接游戏过程中每一次搭配打分都要写库如果全部实时走云端网络一抖评分结果就保存失败玩家的游戏体验直接崩坏。一个合理的做法是本地存最近一次关卡进度和当前得分云端存全量历史记录。玩家每过一关本地立即更新云端同步在后台进行同步失败时本地保留待同步队列下次网络恢复再补传。云存储的会话管理也要注意用户登录状态失效时游戏提交的数据会丢需要在应用启动时检查 session 有效性并在游戏关键节点做本地缓存。这套“本地优先、云端兜底”的双写策略在移动应用里是通用解法不只在游戏模块适用。5. 避坑与排查食遇记开发中踩过的五个真实问题5.1 转化分算出来永远是整数Java 整数除法的精度陷阱现象体质问卷明明算出 22 分的原始分转化分显示 53 而不是 53.57换几组数据结果全是整数怎么调都不对。原因score 和 queNum 在 Java 里都是 int 类型(score - queNum) / (queNum * 4) 走的是整数除法直接截断小数部分乘 100 之后精度已经丢了。转化分是判定体质类型的依据精度丢失可能让临界值判定出错——实际 39.6 分截断成 39 分本来“倾向是”的结果变成“否”用户拿到的调理建议完全不一样。解决先转 double 再除或者给分母加 .0 强制浮点。// 正确写法先转 double保留小数精度 double rawScore score_1 score_2 score_3 score_4 score_5 score_6 score_7; double queNum 7.0; // 浮点条目数避免整数除法 double finalScore ((rawScore - queNum) / (queNum * 4.0)) * 100; DecimalFormat df new DecimalFormat(0.0); // 显示时保留一位小数 String displayScore df.format(finalScore);血泪经验凡是涉及判定阈值的健康类应用计算一律用浮点不要在 int 上做除法。财务、健康、评分这类场景最容易踩整数除法的坑编译器不报错结果就是错的属于最阴的那种 bug。5.2 Bmob 云端表结构不同步字段改动后数据死活写不进去现象本地 Java 类加了新字段调用 Bmob 的 save() 方法既不报错也不写入云端查表发现数据还是旧结构新字段的数据丢了。原因Bmob 的表结构在云端创建时已经生成Java 类新增的字段如果云端表没有对应列Bmob 不会自动加列写入操作会静默跳过无法识别的字段甚至整条数据不落库。打包 APK 装到真机后连不上云端多数情况也是本地模型和云端表字段对不上。解决改 Java 类之前先到 Bmob 控制台把云端表结构同步一遍手动添加对应列并确认字段类型和 Java 属性兼容——Integer 映 IntegerDouble 映 DoubleString 映 StringBoolean 映 Boolean。如果 Java 端是 Long 而云端建的是 Integer写入会被拒绝。后续规范流程固定为三步先改云端表结构再改 Java 类最后改业务逻辑层调用代码顺序反了排错成本直接翻倍。另外 BmobObject 的子类必须有空的构造方法否则运行时反序列化会抛异常编译期完全看不出来。5.3 论坛首页用 ScrollView 包列表滑动卡顿和内存问题现象论坛首页滑动浏览帖子时明显掉帧帖子上滑到一半突然卡住甚至偶发崩溃。原因帖子列表数据量大用 ScrollView 包 RecyclerView 或 ListView 时列表自身不再滚动所有子项一次性全部加载进内存图片和文本全部展开资源消耗失控。论文说“页面布局运用 ScrollView”这是当时的实现方案但 ScrollView 承载少量静态内容没问题用在动态帖子列表上就是性能毒药。解决把帖子列表换成一个独立可滚动容器只渲染当前可见的少量 Item页头页尾固定内容放外部布局。如果一定要保留整页滑动用 RecyclerView 配合 nestedScrollingEnabledfalse 并设置固定高度。经验列表超过 20 条数据就不要再手动包 ScrollView让专业列表组件接管复用逻辑内存和帧率都能保住。注意ScrollView 只适合承载少量静态内容动态长列表优先用 RecyclerView省内存、不卡顿、更好维护。5.4 游戏闯关评分与问卷算法共用边界条件没做隔离现象用户提交游戏里的药膳搭配后评分一直被算成 0 分但问卷模块里同样公式算出来正常。排查后发现问题不在算法本身而在传入数据。原因游戏搭配模块和问卷模块共用同一套评分方法但游戏的“条目数”不是固定问卷题目数而是玩家选择的食物数量。调用方把食物数量传进了问卷公式的参数位置分母变成食物数乘 4和问卷的条目数语义完全不一样评分结果直接失真。解决不要把两个模块的评分方法缝在一起。问卷算转化分和游戏算搭配效果虽然都叫评分语义和公式完全不同应该拆成两个独立方法各自校验输入参数。我习惯在方法入口加校验——问卷算分方法强制 queNum 在 7 到 8 之间游戏评分方法强制 foodCount 大于 0 且小于等于 6越界直接抛异常暴露问题而不是默默返回一个看似合理的 0 分。宁可早暴露不要有黑匣子。5.5 问卷未答完就提交缺项数据让转化分系统性偏低现象用户在体质问卷里漏掉两题直接提交算出来转化分明显偏低甚至从“倾向是”变成“否”推荐方案随之改变。原因转化分公式里的条目数固定原始分却少了漏答项的分数分子变小结果被系统性拉低。问卷 UI 如果没做完整性校验这个错误会静默发生用户完全无感知后续所有推荐都建立在一个错误画像上。解决提交前遍历所有题目控件检测到未选项就用 Toast 提示并定位到具体题号不允许跳过提交。同时在业务逻辑层再加一道防线传入的答案数组长度必须等于 queNum否则抛出 IllegalArgumentException 拒绝计算。UI 校验和逻辑层校验双层把关缺项数据永远进不了公式。从那以后我接健康类项目问卷提交必做两层校验前端一层、后端一层缺一不可。6. 进阶从体质问卷到个性化药膳推荐的落地验证6.1 体质转化分与食物性味归经的匹配逻辑系统拿到用户 9 个转化分后判定出体质画像接下来要从食物数据库里筛出适合的食材和药膳配方。食物表里每条记录带性味温热寒凉、归经、适用体质等标签匹配逻辑就是拿体质画像查表阳虚质优先推荐温性食材阴虚质多推荐甘凉滋润类痰湿质避开工味厚腻的食物。匹配结果按适配度排序适配度用加权分计算——体质匹配权重高、禁忌命中直接过滤。排序结果返回给表现层时还要带上推荐理由字段让用户明白为什么推荐这个。6.2 多次测评数据的变化追踪用户每次做体质问卷结果都会写入云端数据库。多次测评数据累积后用户能看到自己身体状态的变化趋势——从“痰湿质倾向是”慢慢变成“否”说明这段时间的饮食调理起了效果。实现不复杂按 userId 和时间字段查询历史记录用折线图或列表展示转化分变化曲线即可。这个功能把一次性的体质测评变成了长期健康管理工具用户有持续打开 App 的理由。数据表设计上测评记录要保留完整的 9 个转化分和判定结果不要只存最终体质类型否则无法还原变化细节。6.3 数据挖掘的边界什么能挖、什么不能碰论文里提到要用云计算对健康数据做挖掘制定个性化调养方案落地时要把边界想清楚。对用户体质数据做统计分群、找规律是合理的比如“某地区用户湿热质比例偏高”这类结论但任何涉及个体诊断和用药指导的结论都不能直接下。系统定位是科普和健康管理不是医疗诊断。推荐语句要用“建议”“倾向”这类措辞不能写成“你的病应该吃这个”。安全边界划清楚产品才能长远。从那以后我每次做健康类应用都强制走一遍“数据采集 → 转化计算 → 匹配推荐 → 合规审核”的链路每层单独自测一遍最后整体过一轮文案审核。数据挖掘再好也抵不过一句不合规的推荐。希望帮到你。本文还有配套的精品资源点击获取
返回列表