小程序宣传发布文案范文 微信朋友圈小程序宣传文案(3篇)

  • 上传日期:2024-04-08 00:07:05 |
  • ZTFB |
  • 11页

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。相信许多人会觉得范文很难写?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧

如何写小程序宣传发布文案范文一

20xx年最后一天,从广州的微信公开课现场回到杭州后,我被王德翰和杨万新两个创业者拉去谈了4个小时,听了一个号称价值一千万的实战分享。

原来,阴差阳错下,他俩两年前开始的项目和微信小程序九成相似,除了开发语言没用小程序那套,产品和业务逻辑一模一样.两年时间内,如何推广、如何设计产品、如何规避问题等心得,值得一读。可反推如何运作小程序。

下文,由他两口述,我整理。

01

为什么说我们做了两年的事情,和小程序引导的九成相似?看产品逻辑就知道了。

食在有趣的产品框架结构是,用户扫码,直接跳出h5生成的页面(切换成微信小程序,大概只要三天的开发),点餐付款,点餐信息在厨房打印出来,商家烧完菜后配送,用户完成一次完整的消费。

这个过程中,不用先关注再打开,不用先下载再打开,不用点完再付现金,不需要服务员介入,不用占一个桌面位置,不用担心在被骚扰。熟悉的用户,可能十秒就完成整个点单操作了。

靠这套产品,我们已经铺设了三千家餐饮店,服务了近100万用户,产生了20万左右的日流水。在长三角地区是排名前三的服务商。

02

依赖二维码入口,打开就用,用完就走,不随意推送……和小程序的思路撞车,不是我们太天才,而是踩着自己挖的坑逼出来的。

两年前,我们自己就开了家互联网主题的咖啡馆,运营过程中就觉得点单这事完全可以用互联网的方式优化。

最早使用蓝牙方案。在餐厅的各个角落放蓝牙设备,只要打开手机的蓝牙功能,使用微信摇一摇,就能跳出店铺,进入后在线点餐,数据直接对接给收银系统,用完餐再去收银台结账。这个流程顾客嫌麻烦,服务员也嫌麻烦,最终放弃。

后来做wifi点餐。用户接入商家wifi后,跳出点餐系统。这事也没走通,现在用户已经没那么在意小流量了,进店问一嘴老板wifi密码都嫌麻烦。也放弃了。

再往后,做app点餐。用户必须下个几兆的app才能享受八折优惠。还是没人用,现在大家的手机都已经被洗得差不多了,常用的就那些。就算贪小便宜装了你的app,拿完优惠也就删。泡沫不持久,还是得放弃。

我们复盘这些教训,发现

1:想用简单服务强制占个app入口的红利早就过去,做不成综合性平台,那就认真做好服务

2:做自然的渠道,而不是试图用截断渠道(wifi)或者创造渠道(蓝牙)

3:形成服务闭环,不要做半吊子的互联网化。都在你这点完餐了,还要去收银系统买单,这个环节就是多此一举的。

4:别拿服务绑架用户。用户用你的场景是在他需要的时候,当用不到你,你却拿着广告味道浓郁的资讯去骚扰他,代价是几千几千的往下掉用户数,看一次就肉疼看两次就不敢再来了。

经由这些教训,我们选择了用贴在餐桌上的二维码作为服务入口,把整个流程简化到不能再轻(用户只需点餐和支付,商家只需收单和烧菜),不再企图吸用户。

换了二维码方案后,原本要对商家花一小时才能讲清的业务逻辑(什么是蓝牙、什么是wifi入口,为什么推app),变成了就一句话“用户二维码买单,你们烧菜,其他都不用”,商家一下子就接受了。用户数井喷式增长。

03

实战中,二维码点餐这样的典型小程序应用能够被快速推起来,我们的商务团队一般是这样说服商家的:

1:用户体验。在用餐高峰期,用户平均等待10分钟,用餐8分钟,换成二维码方案后,平均单个用户点两个餐的时间缩短为29秒,只要厨房烧得过来就好。

2:服务员成本。中小餐饮店,一般都会请全职和兼职的服务员,用来应对高峰期。换成二维码方案后,可以节省2个兼职人员,按12元/小时,每天工作3小时计算,每年节省2万多元开支。

3:硬件成本。一套传统的餐饮解决方案,包括打印机、扫码枪、钱箱等,平均在3000-8000一套,二维码方案只需要一个600元的打印机和不超过50元的二维码贴桌成本。

4:防止逃单。由于微信支付已经成熟,我们使用了预付费模式,就是用户点了餐就直接付钱,厨房接到的单子都是支付过的。不会再出现逃单、假币等问题。就算要退单这种低概率的事情,业务流程也只需要商家确认就把钱退回来。如果使用后付费模式,那么二维码一旦被人偷走,他就故意乱点餐(反正不用付钱),把服务员忙的团团转还找不到谁点的,来个一两次,这个餐馆就不会再里你了。

5:数据沉淀。既然是二维码方案,用户的id、支付记录等自然而然进了商家管理app里,想设置老用户优惠、发微信会员卡、经营分析等都很顺畅。

04

小程序应用能够真正起来,是必须理解线下的业务。纯互联网玩法是推进不了的,必须是又懂互联网又懂线下的复合型人才,例如我们这样花过上千万学费的。

这里有5个小经验:

1:二维码材质。二维码的材料选择,在不同的场景下,材料也不相同。快餐厅,只需要pvc材质即可,表面光滑易擦干净;烧烤店等需要特别的塑料材料,防烫坏;酒吧里面灯光较暗,需要使用荧光材质二维码或者镂空的里面放个灯的装饰二维码。商家也会根据自己的餐厅风格,需要定制或者选择与自己餐厅的格调能够配搭的二维码样式风格,有一些可能还会在二维码下方写一些slogan。

2:二维码设置。如果店铺只有一个二维码,是解决不了顾客在哪个餐桌上点餐的问题。一桌一码又解决不了拼桌、二维码材质破损的问题,最后是二维码与餐桌之间只是一个连接的关系,二维码破损了可以换,有拼桌的需求,可以多贴几个二维码,完全由餐厅老板自己控制。

3:小程序只能也必须做轻量级交互。一旦碰线下市场,不同店铺就有不同个性化需求,什么加辣加葱、什么活鱼要按几斤几两再去算账,什么同样一壶咖啡一人喝半价中途来了人就得算全价,什么不管要不要都收茶位费……如果试图做个性化方案,你有再多的程序员也会被累死,产品的交互也会越来越臃肿。你必须坚定“小程序就得小”,只做标准化的事情,做不了的市场宁可放弃。线下几万亿的市场,做好一块就够你吃香喝辣的了。

4:别抵触硬件。身边做互联网的人,经常喜欢跳过硬件,做无机具的场景。至少在餐饮业,这个走不通。我们测试过不用打印机打菜单,而是把菜单信息发送到厨师手机上,结果厨师要么手太油弄脏手机、要么只有厨师看到配菜师没看到而降低了上菜效率,要么无法确认漏单没等。一般来说,做互联网化餐饮解决方案,要么用电视级大屏幕显示点单信息,要么用打印机。我们选的是成本最低的打印机方案。

5:刺激商家。和纯互联网的流量推广方式不同,线下市场不能用aso、广告展示、弹窗、绑定安装这些方式了,产品能不能活跃起来,依赖的唯一渠道是商家。做好产品体验,帮商家提高效率这是肯定要做透的,但这个不够,这叫隐性提高,感知不强,只有部分年轻而又新进的老板才理解。能刺激到普通商家的,还是要做一些显性服务,例如补贴、例如异业合作、例如帮忙推广等。也就是说,线下业务不能只盯着用户,要把商家那头的利益一起兼顾到,才能真正快速铺开。

微信小程序正式公布后,我才发现这事我们居然干了两年了。又爱又恨,爱的是腾讯背书,让我们这个做法被认同了,恨的是这么晚才说,之前很多人看不懂,损失了好多笔融资机会。

05

小程序出来当天,我们就着手开始开发了,做了这么久相似度这么高的事情,肯定不能落下这个新风口。

但小程序的兴起,也伴随着巨大风险。各位同行一定要注意:

1:巨头之间会不会做“艰难的选择”。既然张小龙说了,希望二维码作为入口,其他巨头肯定也抢,最明显的对头就是支付宝。万一大家打红眼了,做了屏蔽限制,就像微信不能跳淘宝、百度不能搜微博那样,一个二维码只能做一个入口,那么对于用户来说是很难受的事情,我们这些依赖平台的第三方也会被牵连,市场的普及速度也会变慢。希望巨头们不要做得太low。

2:二维码的安全问题。不法分子拿着带病毒的二维码信息到处推,用户们习惯了二维码启动服务后无意中就容易中招。偷钱、盗密码等,都很可能发生。我们第三方很难做这一块的预防,需要平台自己能做安全验证。

3:平台的开放度够不够。做了小程序后,我们相当于把公司几十号人的未来都寄托在平台上了,我们积累的是用户数据,而不是用户,我们做的是服务,做不好广告。那么平台在接口管理上有没有搞特权、政策不清晰(定义诱导分享的边界)、接口临时升级搞坏了我们的服务、服务器故障导致我们挨骂等,都会分分钟把我们搞死。

06

我们暂时能分享的就这些,里面的经验适合ktv点服务、酒吧点酒、商品售后服务和分享购买等实体类场景,不适合修图、日历、电商类的线上场景。

线下实体类场景通用的小程序市场逻辑是:

1:别把小程序当h5营销用,那太浪费。线下有足够需要服务的场景,都适合小程序,做服务就自然有现金流水。

2:只要是现有方案成本太高、操作不便、实现服务时间需要等候的,都可以用小程序提高效率。

3:小前端大后台。别看着二维码入口轻巧,c端的整个交互也不会复杂,但是和线下业务的深度结合才是重点。虽然在c端我们没有了app,但是b端我们还是做了个叫做老板助手的app,以满足商家们的深度服务需求。

4:盈利模式不能再设计依赖用户积累的老套路了。流量红利已经吃完,线下流量更是不可能产生日增百万的覆盖能力,要赚钱是得依靠深入产业链做面向商家的服务。

07

这条正确的新路子,我们终于不是孤孤单单的了。

对于巨头们要说的是,别薅了羊毛就走。前几天支付宝的人过来聊天,说在北京看了三四家做类似二维码业务的,由于没有盈利模式,光顾着给平台打工,结果就挂了。除了佣金、补贴等,希望平台给出更有效的商业模式指导,来激活整个线下市场。

对于同行们要说的是,资本寒冬,盈利不易,大家一起寻找适合小程序模式下的新商业模式,才能把市场做大,共分蛋糕。

如何写小程序宣传发布文案范文二

甲方:____________

乙方:____________

甲、乙双方经充分协商,就甲乙双方对小程序技术开发服务达成一致意见,特订立本合同,双方共同遵守。

一、服务内容

(一)产品名称:__________;单价:__________元/年。

(二)服务期限:________年____月____日至________年____月____日。

(三)首年费用合作金额:__________元(大写:__________元)。

(四)收款方式:□现金□支票□汇款□其他。

二、双方的基本权利和基本义务

(一)甲乙双方共同权利和义务

1、不得以任何理由泄露所获知的对方的商业机密。

2、在履行协议时不得作出有损对方形象、声誉的行为。

3、遵守并履行协议的条款。

(二)甲方的权利和义务

1、甲方有义务在合同签订生效日期之前,向乙方支付相应的服务费用,如延期支付,则服务延期,如果在服务过程中产生费用延迟,则甲方需要向乙方缴纳__________%的滞纳金,如延迟时间超过__________天,则乙方有权暂停甲方的服务。

2、有权获知乙方的服务进程,有权在服务结束或服务过程中协商要求乙方提供能提供的相应服务报表。

3、有义务按乙方要求,提供相关的文字,图片等素材,并保证其合法性,如因甲方配合不到位,影响了使用,乙方不负任何责任。

4、妥善保管所需的用户名及密码,否则,造成的不良后果,由甲方自行负担。

5、甲方有权在合同生效后的__________个工作日内收到乙方工作人员的服务进行反馈,开户产品应在__________个工作日内收到用户名和密码,执行类服务应在合同完款__________个工作日内与客户明确执行方案。

6、甲方有权向乙方提出培训需求,乙方应就甲方合作的产品项目安排相应的培训和咨询服务。

(三)乙方的权利和义务

1、乙方就营销各产品系列的销售工作,为甲方提供相关服务。

2、乙方有义务为甲方提供完整的,合同约定的各项移动互联网营销工具服务,包含:注册、开通和提供稳定的运行环境(稳定环境:指中国标准环境,不稳定因素有客户宽带,电脑和系统陈旧,电信运营商之间互通问题等原因,保证技术、存储和输出宽带等稳定,因为客户自身和国家因素造成的不稳定,非深圳市腾信互联科技有限公司承诺的范围)。

3、乙方在收到甲方上述约定的全部费用后__________个工作日内,必须开始履行该合同的义务,上述约定服务的关联用户名,密码,各类数据报表和其他必要的说明性或确定性资料均由乙方向甲方提供的上述邮箱地址、qq或微信发送,甲方获取后即可登录相关的产品后台,进行信息发布,交易,参数设置等业务操作。

4、本次合作的服务金额不作为续费的参考,乙方有权根据市场变化及产品升级情况,对续费金额进行适当调整。

5、甲方在系统运营过程中同时在线人数过载导致乙方服务器无法承受影响用户体验时乙方有权要求甲方根据流量消耗情况进行扩充流量费用或启用独立部署方案

三、违约责任与协议解除

(一)甲乙任何一方在协议履行中采用欺诈、胁迫或暴力等手段,另一方有权立即终止履行协议。

(二)任意一方欲提前解除本协议,应书面提前通知对方,甲方提前解除协议的,无权要求乙方返还支付的费用,乙方无故解除协议的,应立即返还所收取的费用。

(三)乙方提供营销系统给甲方作合法的商业应用,甲方违规使用该系统功能或者制作和传播非法内容,比如涉及宗教、政治和色情等,法律责任由甲方自行承担,并且乙方有权删除违反内容或者单方面停止整体服务,不承担任何退赔和连带责任,如造成乙方损失的,乙方有权追究甲方法律责任或相关赔偿。

(四)因不可抗力的原因而导致任何一方无法履行协议的,任一方均可解除协议,但甲方已支付的费用不予退还,不可抗力是指不能预见,不能避免且不能克服和客观情况,包括但不限于:第三方(如微信、苹果、安卓)接口规则改变,自然灾害,政府行为以为罢工,战争,电信运营商信号中断,网站遭受黑客攻击,乙方服务器发生非人为因素的故障等。上述原因所造成的本合同任何一方无法完全或部份履行合同义务,或虽能履行合同义务但已失去必要性或实际意义的,遭遇不可抗力的一方可据此免责。当遭遇不可抗力时,当事的一方须在其另所能及的范围内,在第一时间以书面的形式将其所遭遇的情况告知另一方。

(五)系统中所带的数据,若系统到期且甲方不续约的情形下,系统数据将保留__________天,到期将做清零处理。

(六)鉴于源码类产品属于可复制可二次开发产品,凡甲方自行安排了二次开发需甲方自行处理系统升级乙方只提供升级包不提供技术支持和升级服务,凡附带有app端的产品亦或小程序,由于app亦或小程序发布受限于第三方安卓市场和苹果市场规则甲方全力配合乙方提供免费协助发布,非乙方系统原因不承担发布结果责任。

(七)源码类产品属于可复制二次开发类产品一经乙方部署到甲方服务器,非系统长期无法访问且不可修复乙方拒绝以任何理由退款其他事项。

四、其它

(一)本协议签订后,经双方当事人协商一致,可以对本协议有关条款进行变更或者补充但应当以书面形式确认,上述文件一经签署,即具有法律效力并成为本协议的组成部份。

(二)双方当事人对本合同的订立、解释、履行、效力等发生争议的,应友好协商解决,协商不成的,双方均同意向乙方所在管辖权的人民法院以提起诉讼的方式解决。

(三)本合同一式__________份,自签订之日生效,有效期以本协议“服务期限”为准,甲方、乙方各执__________份,每份合同具有同等法律效力。

(四)甲方如有问题可通过以下方式获得帮助:

1、登录公司官方网站:_____________________________。

2、拨打售后服务热线:_____________________________。

甲方(盖章):__________________

法定代表人(签字):____________

联系电话:________________________

开户银行账号:__________________

签署时间:________年____月____日

乙方(盖章):__________________

法定代表人(签字):____________

联系电话:________________________

开户银行账号:__________________

签署时间:________年____月____日

如何写小程序宣传发布文案范文三

这次公司给敲开这扇大门的机会,让我真实体验到了程序员的诞生过程。让我提前感受到了刚刚进入软件行业的压力和困惑,再也没有在学校自己随便写段小程序后的那种自豪感了,要面对每天必须面对的问题,再也不可能以“逃避”而了之了。也让我感觉到做为一个程序员所应该具备的基本素质。真切身的体会到了团队精神和协作能力是我们程序员应该具备的基本素质,因为太大可能因为我们一个小组成员配合不好,导致各模块之间无法连接,会给工作带来及大的麻烦,消耗了大量的劳动力还没有提高工作效率。

一、实习的目的和意义

进大学生活的最后一个年头,站在我们面前的就是那个向往已久的工作社会,所以我们的心可以说是既高兴又兴奋,因为我们终于可以在这个巨大的舞台上展现自我,但我们还需要时间去了解这个社会。为此我选择了实习,其目的在于通过实习使我们自己获得基本操作的感性知识,理论联系实际,扩大知识面;同时专业实习又是锻炼和培养学生业务能力及素质的重要渠道,培养我们当代大学生具有吃苦耐劳的精神,也是学生接触社会、了解产业状况、了解国情的一个重要途径,逐步实现由我们学生到社会的转变,培养我们初步担任技术工作的能力、初步了解企业管理的基本方法和技能;体验企业工作的内容和方法。这些实际知识,对我们学习后面的课程乃至以后的工作,都是十分必要的基础。

二、实习内容

我的工作岗位是软件开发工程师实习,就是程序代码的编写。

当我们进入一个企业,进入一家公司时,首先先要对该公司的概况有一定的了解,并对该公司所开发的项目有一定的认识,我们需要去慢慢的熟悉流程,熟悉业务。刚开始两天就是自己在公司看看文档,并熟悉环境。指导我的是一位年纪大一、二岁的同事,先与我说了一下要点,然就让我自已看,遇到不懂的就问。只有我们接触这种企业公司,才会真正的知道一个企业的项目之大,刚开始令人看了眼花缭乱,看一会就会晕,有几百个表,有几千个类,一个页面好几千行代码。甚至更多。这刚开始我就熟它的大致结构。一开始什么都不懂,也不懂业务。令我感动的是每当我我有一点不明白的地方,他都会不烦其劳的与我讲清楚,直到我弄明白为止。在我坚持不懈的努终于适应了变化,他的脸上也有了笑容。

两天之后,熟悉了基本框架,基本流程之后,我也成为工作之中的一员,开始试着去写代码,去改bug,去写一些新的小模块。在这一段时间里,主要任务有巩固之前所学的,对常见的错误要一看即知,并养成认真仔细的工作作风。在

其后的工作中我都有保持谦虚的心态。在种状态下我进步很快,花了比别少了将近一半的时就达到目标了。

在这个项目中我们前端用的是ext框架,它具有友好的界面功能。让我们做起来更简单。在前端我们通过控件中的属性和在spring里配置好的id值,可以去调用业务中的方法,业务中方法又可以去调用底层实现的方法,或者我们已包装好的方法。最后是底层的方法去调用数据库中的数据以呈现我页面上。

在这个项目中我们用的环境是eclipse,数据库是oracle。主要的框架技术在前台用的是ext框架,后台用的是hibernate+spring,用的mvc模式,包结构非常清楚,在每个包里边都包括四部分,实体类,接口,接口的实现类,还有流序列化。在web部分也是如此,也都有对应的包,对应的jsp去调用对应的js。那么接下来我就对这几分部分作一个讲解吧。首先是ext框架,extjs是一种主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。extjs可以用来开发ria也即富客户端的ajax应用,是一个用javas cript写的,因此,可以把extjs用在、java、php等各种开发语言开发的应用中。extjs最开始基于yui技术,由开发人员jackslocum开发,通过参考javaswing等机制来组织可视化组件,无论从ui界面上css样式的应用,到数据解析上的异常处理,都可算是一款不可多得的javas cript客户端技术的精品。jquery、prototype和yui都属于非常核心的js库。虽然yui,还有最近的jquery,都给自己构建了一系列的ui器件(widget),不过却没有一个真正的整合好的和完整的程序开发平台。哪怕是这些低层的核心库已经非常不错了,但当投入到真正的开发环境中,依然需要开发者做大量的工作去完善很多缺失之处。而ext就是要填补这些缺口。

其次是hibernate,hibernate是一个开放源代码的对象关系映射框架,它对jdbc进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。hibernate可以应用在任何使用jdbc的场合,既可以在java的客户端程序实用,也可以在servlet/jsp的web应用中使用,革命意义的是,hibernate可以在应用ejb的j2ee架构中取代cmp,完成数据持久化的重任。

最后是spring,spring是一个解决了许多在j2ee开发中常见的问题的强大框架。spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。spring的架构基础是基于使用javabean属性的

inversionofcontrol容器。然而,这仅仅是完整图景中的一部分:spring在使用ioc容器作为构建完关注所有架构层的完整解决方案方面是独一无二

的。spring提供了的数据访问抽象,包括简单和有效率的jdbc框架,极大的改进了效率并且减少了可能的错误。spring的数据访问架构还集成了hibernate和其他o/rmapping解决方案。spring还提供了的事务管理抽象,它能够在各种底层事务管理技术,例如jta或者jdbc事务提供一个一致的编程模型。spring提供了一个用标准java语言编写的aop框架,它给pojos提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开ejb的复杂性,同时享受着和传统ejb相关的关键服务。spring还提供了可以和ioc容器集成的强大而灵活的mvcweb框架。

三、实习心得

实习期间给我的感受:收获+喜悦。这实习将来给我们留下的不仅仅是回忆,因为他使我们的自身价值得到了提高。

“天下英雄皆我辈,一入江湖立马催。”从学校到社会的大环境的转变,身边接触的人也完全换了角色,老师变成老板,同学变成同事,相处之道完全不同。在这巨大的转变中,我们可能彷徨,迷茫,无法马上适应新的环境,但在同学、同事的帮助和自己摸索的情况下,逐渐适应了。但我发现,以我们的经验,不学到一定的深度和广度是难以在实际工作中应付自如的。因此反映出学习的还不够,缺点疏漏。需在加以刻苦钻研及学习,不断开拓视野,增强自己的实践操作技能。

四、实习总结

通过这次实习,有接下来的几点认识。

1、对于一个项目来说,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,我们很多工作时间都是在写技术文档,它会在未来的升级以及模块的复用时起着至关的作用。所以我们必须注重这个。

2、良好的代码编写习惯也是非常重要的,它不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。我们要使我们的程序具有易读性,易扩展性,容错性。

(1)易应有尽有性:所有的变量和函数以及类名都用简单易懂易记忆的命名方式,所有类和函数,变量都有关键的注释说明。这点很重要,也很基础。

(2)易扩展性:整体系统架构逻辑简单清晰,模块与模块之间尽量做到互不影响,也就是尽可能的独立,这部分工作主要体现在前期设计工作中,需要掌握好的设计经验和方法才能够做的比较好。

(3)容错性:对所有数据都进行有效性检查:对第三方接口的调用失败的容错性。对所有代码都做调用失败后的处理。以及在大的工程中加入trace文件输出,把关键的操作信息输出,以便对工程异常情况产生条件的定位,及时解决问题。

3、一个好的调试、跟踪与测试方法是非常重要的。我们需要对每个模块的接口做测试,数据界的检查,在对整个模块做测试。主要测试稳定性,效率及功能是否正常。确认单个模块完全,再加入工程。我觉得在我们调试时用debug模式启动服务器是一个非常好的选择,我们可以很快定位到出错的地方。并用可以找到解决的办法。

总之这一段实习的经历让我明白了:一个优秀的程序员必须不断的学习,随时总结,找到自己的不足,这样逐步提高,才能让自己很快的成长起来。

您可能关注的文档