华为云用户手册
-
人工智能性能优化 1.训练优化模型性能提升实践 参数调优策略:调整模型flash attention、并行切分策略、micro batch size、重计算策略等参数。 尽可能充分利用显存和算力,通过参数调优,初步优化性能。 性能拆解 参数调优后性能仍然与转商目标有较大的差距,需要考虑进行profiling,采集性能数据后从更底层的算子、通信、调度和内存等维度将性能进行拆解分析,训练脚本中加入profiling代码。具体步骤:生成profiling数据目录结构;利用att工具,将NPU与竞品之间的数据进行端到端耗时对比分析;Tracing分析。 算子分析 通过生成profiling中的summary文件对具体的算子进行分析,考虑算子层面向FA与MM算子方向优化。 2.路由规划加速最佳实践 ranktable路由规划是一种用于分布式并行训练中的通信优化能力,在使用NPU的场景下,支持对节点之间的通信路径根据交换机实际topo做网络路由亲和规划,进而提升节点之间的通信速度。本案例介绍如何在ModelArts Lite场景下使用ranktable路由规划完成Pytorch NPU分布式训练任务,训练任务默认使用Volcano job形式下发到Lite资源池集群。详细步骤可参考最佳实践文档。 训练显存优化实践 pytorch的内存池基本管理策略 pytorch的内存池以block为粒度来进行管理,block池分为小内存池与大内存池,block是pytorch向device驱动申请内存的粒度,整存整取。用户/Pytorch代码向内存池申请内存的接口归一为tensor的申请释放(这点最开始也不是很好理解,也就是说:任何一个pytorch代码申请内存的地方,均表现为一个tensor的申请释放)。 tensor的生命周期使用类似智能指针的引用计数方式来管理,且打通了Python与C++的通道,即:一个Python的tensor对象关联一个C++的tensor对象,Python的tensor对象的消失会触发C++的tensor对象析构释放内存。一个在C++环境里创建的tensor对象可以返回成一个Python的tensor对象。 C++的tensor对象分为两部分:一部分是viewTensor,包含tensor的各种meta信息:shape, stride, dataType等,一部分是storageTensor,包含具体的内存addr,offset,对外呈现的是viewTensor,这是pytorch做view类操作后,多个tensor对应同一块内存的基本支撑。在storageTensor申请时,向pytorch的block池申请一块内存,找到空闲块之后,视实际要求对block进行切分使用并返回address指针。 pytorch的内存的跨流复用策略 如果一个stream上的内存池里申请的tensor需要给另一个stream使用,那么则需要进行recordStream操作,将这个tensor的所属block标识上新stream的信息,在这个tensor的生命周期消失触发address释放时,发现其所属block有其他stream信息,此时会给对应stream下发一个event_record task然后返回。 在之后本stream在每一次新申请内存时,均做一下event_query操作,如果发现event已经被record则其他stream上的task已经执行完成,此时可以放心地回收这个block。 Pytorch的内存统计信息说明 pytorch的内存一般看三个峰值信息:allocated / active / reserved。allocated对应host上的tensor实际申请了但是没释放的内存(注意:是在host上申请释放,不代表device状态)。active对应host上还未释放的内存+还在被别的流占用的内存。 举例,一个tensor在streamA上申请了,让供streamB做allreduce的集合通信操作,然后tensor进过一次add后被释放,此时:释放会减去allocated值,但是不会减去active 值,直至这个allreduce真实执行之后,通过query_event查询到结果之后触发释放,才会减去active值。 reserved对应pytorch向device申请了的内存,比如申请了100M,然后释放了,然后又申请了20M,还未释放,此时的allocated 为20M,reserved为100M。真实网络里,reserved里存在大量block被切小了的可使用内存但是当申请一个大块内存时又无法复用,这种会导致reserved 与 allocated 的较大差值,通常称为内存碎片。 pytorch的内存碎片影响因素 一个step里更多的内存申请释放内存次数理论上一定会导致更多的内存碎片,为什么说是一个step呢?因为pytorch内存池只取决于host上的训练脚本逻辑,而每个step的训练脚本逻辑是相同的,所以一般第一个step之后内存状态可以稳定下来。 不同生命周期的tensor交替地申请释放,因为pytorch向驱动申请是整存整取,所以:一个常规的优秀做法是把长生命周期放在最开始申请,这样不易形成碎片。而workspace内存由于可以绝对意义上地串行复用,因此对此单独做一个定制的内存池策略可以减少对内存碎片影响,在NPU上常见的非连续转连续操作,就是一个相对GPU来说较多的内存申请。 显存优化策略 由于大模型的参数成倍数的增长,远超出了单GPU物理显存所能承载的范围,大模型训练必然需要进行显存优化。显存优化要么是优化算法本身,降低模型算法的显存消耗;要么是去扩大显存,通过一些置换方式获得“额外“空间,由于显存物理大小一定,我们获得额外空间的方式不外乎两种:时间换空间和空间转移。其中,时间换空间通常会消耗算力、带宽;空间转移主要是消耗I/O带宽,有一定的时延,可能会降低吞吐。 观测性能指标 指标ID 指标名称 指标说明 cpu_usage CPU使用率 该指标用于统计ModelArts用户服务的CPU使用率。 mem_usage 内存使用率 该指标用于统计ModelArts用户服务的内存使用率。 gpu_util GPU使用率 该指标用于统计ModelArts用户服务的GPU使用情况。 gpu_mem_usage GPU显存使用率 该指标用于统计ModelArts用户服务的GPU显存使用情况。 npu_util NPU使用率 该指标用于统计ModelArts用户服务的NPU使用情况。 npu_mem_usage NPU显存使用率 该指标用于统计ModelArts用户服务的NPU显存使用情况。 disk_read_rate 磁盘读取速率 统计ModelArts用户服务的磁盘读取速率。 disk_write_rate 磁盘写入速率 统计ModelArts用户服务的磁盘写入速率。 全量指标可参考ModelArts支持的监控指标文档。 父主题: 云服务性能优化介绍
-
产品规格差异 Astro工作流提供了基础版、专业版和企业版三种不同的规格套餐,以满足不同场景下的用户需求。关于各规格的详细介绍,请参见表1。 基础版:满足个人及创业团队的基础需求,用户能够低门槛入门使用该产品。 专业版:满足中大企业搭建复杂业务场景的需求,提供了更多定制和集成的功能。 企业版:满足大企业搭建高性能复杂场景的需求,支持高级流程和表单的设计。 表1 Astro工作流套餐规格清单 版本类型 基础版 专业版 企业版 组织用户数 10人以内 50人起 50人起 创建、发布应用数 5个 100个 300个 应用模板 50个 1000个 6000个 单应用表单数 30个 100个 500个 单应用流程数 50个 100个 500个 单表单数据上限 1万条 20万条 50万条 单流程版本数 100个 200个 300个 流程模板 / / 500个 总数据调用次数 2万次/年 说明: 每月上限为2000次。如何计算数据调用次数,请参见在AstroFlow中,如何计算总数据调用次数。 20万次/年 50万次/年 自定义连接器 5个 100个 300个 存储空间 20G 125G 250G 包含专属工作台 支持 支持 支持 业务门户风格定制 支持 支持 支持 第三方服务集成 支持使用官方连接器和5个自定义连接器 支持使用官方连接器和100个自定义连接器 支持使用官方连接器和300个自定义连接器 高级流程编排能力 不支持 不支持 支持 高级表单设计能力 不支持 不支持 支持 不同版本的Astro工作流套餐包含不同的功能,详细功能说明请参见表2。 表2 Astro工作流套餐功能说明 功能名称 功能描述 组织用户数 组织内的用户人数。 应用数 创建、发布的应用数量。 总数据调用次数 购买版本的总数据调用次数。 单表单数据上限 单表数据量和总数据量中的“数据量”指的是通过表单提交的数据记录,提交一次即生成一条数据,也可以理解为数据的行数。 存储空间 可用的附件及相关资料的存储空间总量。 专属工作台 组织专属工作台功能。 (可选)第三方服务集成 自定义连接器,用于集成第三方服务在Astro工作流中使用。 (可选)流程、表单高级功能 在基础表单、流程功能基础上,对组件功能及设置进行了增强。 (可选)业务门户风格定制 可定制组织的业务门户风格和展示应用信息等。
-
连接器 连接器是AstroFlow提供的调用第三方服务的集成工具。通过连接器,开发者无需关注具体代码实现,只需要选择所需的连接器和配置动作,即可在流程中快速集成其他系统。在AstroFlow中您可以使用Astro低代码平台中提供的官方连接器和自定义连接器。 官方连接器:Astro低代码平台封装了不同类型的连接器对接相应的服务,帮助您拼装能力、联接云端、打通行业,让您的应用无所不能。Astro低代码平台中提供的官方连接器,可在AstroFlow中的流程中直接使用。 自定义连接器:当官方连接器不能满足需求时,可通过自定义连接器,将第三方服务集成到AstroFlow流程中使用。自定义连接器包括从Astro低代码平台中转存的官方连接器和在AstroFlow中自定义的连接器。 图2 连接器
-
AstroFlow权限 默认情况下,新建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 AstroFlow部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京4)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效。如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问AstroFlow时,需要先切换至授权区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能,定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。 如表1所示,包括了AstroFlow的所有系统权限。 表1 AstroFlow系统权限 策略名称 描述 类别 策略内容 Astro Flow FullAccess Astro工作流的管理员权限,拥有该权限的用户可以使用服务的所有功能。 系统策略 Astro Flow FullAccess策略内容 Astro Flow InstanceManagement Astro工作流的实例管理权限,拥有该权限的用户可以创建和管理实例。 系统策略 Astro Flow InstanceManagement策略内容 表2列出了AstroFlow常用操作与系统策略的授权关系,您可以参照该表选择合适的系统策略。 表2 AstroFlow操作与系统策略关系 操作 Astro Flow FullAccess Astro Flow InstanceManagement 查询商品可售卖周期 √ √ 查询订单信息 √ √ 订购询价 √ √ 查询实例信息 √ √ 变更询价 √ √ 云服务到期查询 √ √ 购买实例 √ √ 购买扩容包 √ √ 实例升级 √ √ 实例冻结 √ √ 实例解冻 √ √ 删除实例 √ √
-
Astro Flow InstanceManagement策略内容 { "Version": "1.1", "Statement": [ { "Action": [ "astroflow:instances:*" ], "Effect": "Allow" } ] }
-
财务管理 企业的实际场景中,不同的企业所需的管理流程不同,但面对的企业财务控制难点是殊途同归的,如事前无计划、费用控制难执行、审核耗精力和结果难统计等。这些问题可以通过表单、流程和应用的个性化构建快速支撑实际的使用,合同管理、借款付款、报销发票等实现一站式管理和数据查看,从而提高财务管理效率,降低财务风险。 AstroFlow提供了一套可自行管理和定制的自动化流程引擎服务,以财务人员的办公流程为场景基础,满足企业中财物、合同、款项的管理、流动、统计的数字化需求,还可以利用已有的财务管理模板搭建出个性化、适应企业自身使用需求的财务管理系统、收付款管理系统和发票报销管理系统等。 信息化工作流程 可以选择标准化的收付款、报销、发票应用模板并根据实际需求在模板的基础上进行个性自定义(编辑、修改),做到功能随需而动,还可以根据实际场景配置对应的表单和流程,明细信息可追溯、可修正。 工作流及时管理 多终端的费用保险、合同审批、发票管理功能,实现系统定时自动提醒,为财务人员分角色生成工作台,审批流程及时推送创建对应待办流程,不再遗忘收付款,缩短财务流程处理周期。 数据报表可视化 财务模块可自定义大屏分析表盘,生成财务流水、可视化呈现、企业财务情况实时掌握,减轻了财务人员负担,大幅提高财务人员工作效率,为企业提供经营决策的支持数据。
-
行政管理 AstroFlow适用于中小企业的行政管理,针对企业资料管理混乱、审批流程繁琐等问题,对行政工作进行科学化、信息化管理,包括物资领用、出入凭证、车辆调配、访客登记等摆脱纸质流程。 物资领用管理 领用管理及发放记录,方便员工申请。 会议室管理 提前预约会议室,充分利用会议室资源。 公告通知 通知到位,同时方便员工查询告知。 访客管理 线上预约、线下核验,访客预约、到访、记录和存档。 车辆管理 为企业统筹车辆的安排,管理车辆状态、驾驶员状态,查看报表数据,从而合理配置资源。
-
人事管理 人力资源业务没有标准的准则规范,且不同行业、不同规模、不同发展阶段的企业 人力资源管理 重点并不一致,很难形成统一的业务标准并找到完全适配的标准化HR系统产品。传统的人力资源管理系统的功能设计,无法快速适配到实际的现代化企业的人事管理实际场景中,并且开发流程耗时长、维护成本高、迭代敏捷度低,无法助力企业的高效运营。 使用AstroFlow可快速构建业务流程及自动化工作流程,从本质上释放HR的双手,提高工作效能,提升员工的使用体验,联合数据洞察,助力企业智慧决策,满足企业集团化、个性化管理需求。 针对企业传统的人事管理模式,AstroFlow提供了可定制化的流程管理服务,可落地应用到多样化的人事管理场景中,如企业的人员入职、离职、请假、差旅等流程审批等。 轻松入职,人员信息不遗漏 HR快速定制入职信息表单,定制信息栏目新人指南等模块功能,便于人员信息管理和查找。 流程规范电子化、协助新同事业务快速上手。 全方位自定义信息字段,由企业按需配置使用。 入转调离,无忧动态管理 组织结构灵活调整,灵活流程配置、审批节点快速设置,关键节点动态跟踪,信息安全留存。 提升协同效率,规范流程表单,可覆盖员工入、转、调、离、复全场景的人员管理。 无代码配置和调整各类人事流程,无论是审批、待办、信息收集,皆可流程化设置、自动化推送审批消息。 休假、差旅管理轻松数字化 灵活配置的工作流程,可以支撑不同行业标准和工时、排班和休假模式。 提供多场景的管理应用模板,可快速复用,覆盖企业的差旅、休假、人员管理等实际场景。
-
Astro工作流产品功能 统一底座平台能力,为企业客户数字化转型打好坚实基础 组织管理:提供统一组织角色权限控制管理RBAC模型,权限可控,管理统一。 产品学习:打造低代码领域学习资源池,阶梯化的专家成长路径,协助用户快速上手。 资产中心:提供平台级多业务资产,供多业务场景用户开箱即用,构建快、选择多、标准化。 一站式业务门户构建,千商千面,灵活搭建企业应用中心 统一应用收口:企业可灵活搭建业务门户,为企业提供统一的、系统化应用组合收口。 自由应用组合:支持Astro低代码平台中企业搭建的应用、大屏等多场景应用组合解决方案。 个性化门户:支持客户定制个性化门户页面、实现千商千面。 流程编排全面升级,定制更高效,编排更灵活 多种触发类型:流程支持多种触发类型,可根据业务需求按需控制工作流的触发条件。 流程模板:支持流程模板灵活引用,无缝升级和回滚,实现流程高度重用。 海量官方连接器:丰富的云服务与行业连接器,快速创建、轻松配置,灵活组装。 表单构建能力升级,打造无纸化办公新体验 丰富的组件库:可视化拖拉拽&丰富表单组件库,快速可视化组件和页面搭建。 灵活打通数据:业务数据轻松打通,一键创建数据管理出口。 表单、流程独立发布:支持表单、流程独立发布,快速应对各类业务场景的客户诉求。
-
代码接入 Provider端: import ( "context" "log" "net" "github.com/cloudwego/kitex-examples/hello/kitex_gen/api" "github.com/cloudwego/kitex-examples/hello/kitex_gen/api/hello" "github.com/cloudwego/kitex/pkg/rpcinfo" "github.com/cloudwego/kitex/server" "github.com/kitex-contrib/registry-servicecomb/registry" ) type HelloImpl struct{} func (h *HelloImpl) Echo(_ context.Context, req *api.Request) (resp *api.Response, err error) { resp = &api.Response{ Message: req.Message, } return } func main() { // **初始化ServiceComb注册中心,默认从环境变量读取配置** r, err := registry.NewDefaultSCRegistry() if err != nil { panic(err) } svr := hello.NewServer( new(HelloImpl), server.WithRegistry(r), server.WithServerBasicInfo(&rpcinfo.EndpointBasicInfo{ServiceName: "Hello"}), server.WithServiceAddr(&net.TCPAddr{IP: net.IPv4(0, 0, 0, 0), Port: 8080}), ) if err := svr.Run(); err != nil { log.Println("server stopped with error:", err) } else { log.Println("server stopped") } } Consumer端: import ( "context" "log" "time" "github.com/cloudwego/kitex-examples/hello/kitex_gen/api" "github.com/cloudwego/kitex-examples/hello/kitex_gen/api/hello" "github.com/cloudwego/kitex/client" "github.com/kitex-contrib/registry-servicecomb/resolver" ) func main() { // **初始化ServiceComb注册中心,默认从环境变量读取配置** r, err := resolver.NewDefaultSCResolver() if err != nil { panic(err) } newClient := hello.MustNewClient( "Hello", client.WithResolver(r), client.WithRPCTimeout(time.Second*3), ) for { resp, err := newClient.Echo(context.Background(), &api.Request{Message: "Hello"}) if err != nil { log.Fatal(err) } log.Println(resp) time.Sleep(time.Second) } }
-
验证 部署成功后,登录微服务引擎控制台,在左侧导航栏选择“ServiceComb引擎专享版”,单击前提条件创建的ServiceComb引擎,选择“微服务目录”,单击微服务名称,在“实例列表”页签查看服务实例是否已经成功注册。 您也可以验证Consumer调用Provider能够正常调用。 设置环境变量serverAddr和serverPort为ServiceComb引擎服务注册发现地址的ip和port。 运行consumer。说明成功从ServiceComb引擎的服务中心获取了provider的ip和port,并调用了provider。
-
自定义统计采集 自定义统计采集(AppEvent)是自定义统计采集器,获取自定义统计相关信息。包括:类别、指标、指标名称、指标说明、单位、数据类型以及默认聚合方式。 表1 自定义统计采集(AppEvent)指标说明 指标类别 指标 指标名称 指标说明 单位 数据类型 默认聚合方式 自定义统计指标集(Event,自定义统计指标集相关信息。) total 自定义事件总次数 自定义事件总次数 - INT SUM k 自定义事件名 自定义事件名 - STRING LAST v 最后一次事件值 最后一次事件值 - STRING LAST avgV2 内容平均事件值 内容平均事件值 - DOUBLE AVG maxV2 内容最大事件值 内容最大事件值 - DOUBLE MAX minV2 内容最小事件值 内容最小事件值 - DOUBLE MIN 父主题: App
-
规则介绍 自动续费可以减少手动续费的管理成本,避免因忘记手动续费而导致AstroPro无法使用。自动续费的规则如下所述: 以AstroPro的到期日计算第一次自动续费日期和计费周期。 AstroPro自动续费周期,以您选择的套餐版本时长为准。 AstroPro到期前均可开通自动续费,到期前7日凌晨3:00首次尝试自动续费,如果扣款失败,每天凌晨3:00尝试一次,直至AstroPro到期或者续费成功。 开通自动续费后,还可以手动续费AstroPro。手动续费后,自动续费仍然有效,在新的到期时间前的第7天开始扣款。 自动续费的到期前7日自动扣款属于系统默认配置,您也可以根据需要修改此扣款日,如到期前6日、到期前5日等。 更多关于自动续费的规则介绍,请参见自动续费规则说明。
-
背景信息 在购买AstroPro后,如果发现当前规格套餐无法满足业务需求,您可以变更套餐规格。当需要变更到高规格套餐时,需补齐版本差价,剩余服务周期按照剩余天数(不含闰年的2.29号)/365 进行计算(变更当天不算) ,续费时按照变更后的版本进行续费。 升级版本费用 = 升级后版本价格 * 剩余周期 - 未升级版本价格 * 剩余周期 剩余周期计算:按照实际剩余有效期进行换算 示例:2023/11/1客户购买了3年的AstroPro,有效期截止到2026/11/1,客户在2024/5/1发生变更版本,则剩余周期=2024年剩余周期+2025年剩余周期+2026年剩余周期=244/365+1+305/365=2.50(年)。
-
计费说明 根据您选择的版本规格进行计费。购买专业版套餐后,计费项还包括扩容包。 表1 AstroPro计费项 计费项 计费项说明 适用的计费模式 计费公式 套餐规格 AstroPro提供了两种不同的规格套餐,请根据自身需求,购买相应的规格套餐。 基础版:满足个人及创业团队的基础需求,用户能够低门槛入门使用该产品。 专业版/企业版:提供了更多的应用及实体功能,可满足中大型企业的复杂管理需求。 包年/包月 套餐版本单价 * 购买时长 扩容包 扩容包用于新增更多的用户数、应用数和实体个数。扩容包不可单独购买和退订,扩容包的使用截止时间与主资源的截止时间保持一致,主资源套餐到期后,扩容包将不可使用。一个扩容包,包含用户数50个、应用数20个、实体个数200个。 包年/包月 扩容包单价 * 购买时长(以主套餐有效时间折算)
-
计费示例(无扩容包) 假设您在2023年11月01日,购买了AstroPro专业版有效期1年,并在到期前手动续费1年,则: 第一个计费周期为:2023/11/01 15:50:04 ~ 2024/11/01 23:59:59 第二个计费周期为:2024/11/01 23:59:59 ~ 2025/11/01 23:59:59 续费时需支付的费用为AstroPro规格套餐包年的费用(费用以官网实际费用为准)。
-
到期后影响 图1描述了AstroPro套餐包年/包月的各个阶段的状态。购买后,在计费周期内资源正常运行,此阶段为有效期。资源到期而未续费时,将陆续进入宽限期和保留期。 图1 包年/包月AstroPro套餐生命周期 到期预警 AstroPro套餐在包年/包月的到期前第7天内,系统将向用户推送到期预警消息。预警消息将通过邮件、短信和站内信的方式通知到华为账号的创建者。 到期后影响 当您包年/包月的AstroPro套餐到期未续费,首先会进入宽限期,资源状态变为“已过期”。宽限期内您可以正常访问AstroPro。 如果在宽限期内仍未续费AstroPro套餐,那么就会进入保留期,资源状态变为“已冻结”,您将无法对处于保留期的包年/包月AstroPro执行任何操作。 保留期到期后,若仍未续费,那么超过AstroPro基础版范围的功能会进入停用状态。
-
适用计费项 AstroPro提供了如下两种不同的规格套餐,供不同规模和管理需求的企业进行选购使用。希望通过合理的功能和服务的组合,为不同需求的客户,提供最合适的产品及服务内容。 基础版:满足个人及创业团队的基础需求,用户能够低门槛入门使用该产品。 专业版/企业版:提供了更多的应用及实体功能,可满足中大型企业的复杂管理需求。 表1 适用计费项 计费项 说明 套餐规格 套餐规格由用户数、服务数量和模型数量等组成。AstroPro套餐规格清单及功能介绍,请参见产品规格差异。
-
变更配置后对计费的影响 当前包年/包月AstroPro套餐的规格不能满足您的业务需要时,可以在控制台发起变更规格操作,变更时系统将按照如下规则为您计算变更费用: 套餐版本升级:新套餐版本价格高于老套餐版本价格,此时您需要支付新老版本的差价。 升级版本费用 = 升级后版本价格 * 剩余周期 - 未升级版本价格 * 剩余周期 剩余周期计算示例: 2023/11/1客户购买了3年的AstroPro,有效期截止到2026/11/1,客户在2024/5/1发生变更,则剩余周期=2024年剩余周期+2025年剩余周期+2026年剩余周期=244/365+1+305/365=2.50(年)。
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 code 是 String 角色代码,应用内唯一。 最大长度:50 name 否 String 角色名称。 最大长度:32
-
请求示例 根据应用id新增应用侧角色,角色代码为admin1,角色名称为管理员1。 POST https://{domain_name}/api/v2/tenant/applications/{application_id}/role Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "code": "admin1", "name": "管理员1" }
-
请求示例 修改用户,用户名zhangsan,手机号12345678901,邮箱zhangsan@example.com。 PUT https://{domain_name}/api/v2/tenant/users/{user_id} Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "user_name": "zhangsan", "org_code": "10000", "name": "zhangsan", "mobile": "12345678901", "email": "zhangsan@example.com", "employee_id": "123456789", "pwd_must_modify": false, "first_name": "F", "middle_name": "M", "last_name": "L", "attr_gender": "male", "attr_birthday": "1990-02-01", "attr_nick_name": "zhangsan", "attr_identity_type": "id_card", "attr_identity_number": "123456789", "attr_area": "CN", "attr_city": "xxx", "attr_manager_id": "123456789", "attr_user_type": "regular", "attr_hire_date": "2021-04-01", "attr_work_place": "xxx", "user_org_relation_list": [ { "orgCode": "10000", "relationType": 1 }, { "orgCode": "TestOrg1", "relationType": 0 }, { "orgCode": "TestOrg2", "relationType": 0 } ], "extension": { "age": "18" } }
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 user_name 否 String 用户名,用户唯一标识,企业内唯一。 mobile 否 String 手机号,企业内唯一。 org_code 否 String 组织编码。 name 否 String 姓名。 email 否 String 邮箱。 employee_id 否 String 员工id。 first_name 否 String 名字。 middle_name 否 String 中间名。 last_name 否 String 姓氏。 pwd_must_modify 否 Boolean 首次登录是否需要强制修改密码。 缺省值:true attr_gender 否 String 性别。 枚举值: unknown:保密 male:男 female:女 attr_birthday 否 String 生日,格式为yyyy-mm-dd。 attr_nick_name 否 String 昵称。 attr_identity_type 否 String 证件类型。 枚举值: id_card:居民身份证 HongKong_Macau_Taiwan_residence_permit:港澳台居住证 mainland_travel_permit_for_HongKong_Macao:港澳居民来往内地通行证 mainland_travel_permit_for_Taiwan:台湾居民来往大陆通行证 chinese_passport:中国护照 overseas_passport:海外驾照 overseas_driver_license:海外驾照 officer_id:军官证 foreigner_residence_permit:外国人居留证 other:其他 attr_identity_number 否 String 证件号码。 attr_area 否 String 国家或者地区的编码。 attr_city 否 String 城市。 attr_manager_id 否 String 直属上级。 attr_user_type 否 String 人员类型。 枚举值: regular:正式 intern:实习 dispatch:劳务派遣 outsourcing:劳务外包 attr_hire_date 否 String 入职时间,格式为yyyy-MM-dd。 attr_work_place 否 String 工作地点。 user_org_relation_list 否 UserOrgRelationListOption object 用户组织关系集合。若填写,必须包含主组织的信息。 extension 否 Object 自定义扩展属性。 表4 UserOrgRelationListOption 参数 是否必选 参数类型 描述 orgCode 是 String 组织编码 relationType 是 String 归属关系,同一用户只能有1个归属,最多9个挂靠。 枚举值: 0:挂靠 1:归属
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 role_id 是 String 角色id。 account_Ids 是 Array of strings 应用账号id集合,最大50条。
-
请求示例 根据应用id新增应用侧角色成员,角色id为20220420144449385-C66D-E8C1D1D79,应用账号id集合为[ "20220415171558023-84A4-ED5C390B8", "20220414163425614-2FD6-CA9B208BE" ]。 POST https://{domain_name}/api/v2/tenant/applications/{application_id}/role-member { "role_id" : "20220420144449385-C66D-E8C1D1D79", "account_Ids" : [ "20220415171558023-84A4-ED5C390B8", "20220414163425614-2FD6-CA9B208BE" ] }
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 org_id String 应用机构id。 org_code String 应用机构编码。 name String 应用机构名。 parent_id String 父机构id。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误编号。 error_msg String 错误详情。
-
请求示例 创建一个用户,用户名zhangsan,手机号12345678901,邮箱zhangsan@example.com。 POST https://{domain_name}/api/v2/tenant/users Authorization: Bearer 334963fc-1e4a-473b-9096-52a929140... { "user_name": "zhangsan", "password": "p******d", "org_code": "10000", "name": "zhangsan", "mobile": "12345678901", "email": "zhangsan@example.com", "employee_id": "123456789", "pwd_must_modify": false, "first_name": "F", "middle_name": "M", "last_name": "L", "attr_gender": "male", "attr_birthday": "1990-02-01", "attr_nick_name": "zhangsan", "attr_identity_type": "id_card", "attr_identity_number": "123456789", "attr_area": "CN", "attr_city": "xxx", "attr_manager_id": "123456789", "attr_user_type": "regular", "attr_hire_date": "2021-04-01", "attr_work_place": "xxx", "user_org_relation_list": [ { "orgCode": "10000", "relationType": 1 }, { "orgCode": "TestOrg1", "relationType": 0 }, { "orgCode": "TestOrg2", "relationType": 0 } ], "extension": { "age": "18" } }
-
请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 Authorization 是 String 认证凭据,值:Bearer {access_token},access_token通过“获取访问凭据”接口获取。 表2 请求Body参数 参数 是否必选 参数类型 描述 user_name 是 String 用户名,用户唯一标识,企业内唯一。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 password 否 String 密码,需要满足企业定义的格式。 mobile 是 String 手机号,企业内唯一。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性 org_code 否 String 主组织的组织编码,填写企业中存在的组织编码。为空时组织在第一个根组织下。 name 否 String 姓名,为空值时设置为user_name。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 email 否 String 邮箱。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 employee_id 否 String 员工id。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 first_name 否 String 名字。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 middle_name 否 String 中间名。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 last_name 否 String 姓氏。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 pwd_must_modify 否 Boolean 首次登录是否需要强制修改密码。 缺省值:true attr_gender 否 String 性别。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 枚举值: unknown:保密 male:男 female:女 attr_birthday 否 String 生日,格式为yyyy-mm-dd。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 attr_nick_name 否 String 昵称。可在管理门户界面,用户菜单下的用户属性定义中修改必填属性。 attr_identity_type 否 String 证件类型。 枚举值: id_card:居民身份证 HongKong_Macau_Taiwan_residence_permit:港澳台居住证 mainland_travel_permit_for_HongKong_Macao:港澳居民来往内地通行证 mainland_travel_permit_for_Taiwan:台湾居民来往大陆通行证 chinese_passport:中国护照 overseas_passport:海外驾照 overseas_driver_license:海外驾照 officer_id:军官证 foreigner_residence_permit:外国人居留证 other:其他 attr_identity_number 否 String 证件号码。 attr_area 否 String 国家或者地区的编码。 attr_city 否 String 城市。 attr_manager_id 否 String 直属上级。 attr_user_type 否 String 人员类型。 枚举值: regular:正式 intern:实习 dispatch:劳务派遣 outsourcing:劳务外包 attr_hire_date 否 String 入职时间,格式为yyyy-MM-dd。 attr_work_place 否 String 工作地点。 user_org_relation_list 否 Array of UserOrgRelationListOption objects 用户组织关系集合。若填写,必须包含主组织的信息。 extension 否 Object 自定义扩展属性。 表3 UserOrgRelationListOption 参数 是否必选 参数类型 描述 orgCode 是 String 组织编码 relationType 是 String 归属关系,同一用户只能有1个归属,最多9个挂靠。 枚举值: 0:挂靠 1:归属
-
请求示例 微信登录。微信应用提供的授权码为ad12sasdsfe3dfdg3sc。 POST https://{domain_name}/api/v2/sdk/login/wechat X-operating-sys-version: Android 10 X-device-fingerprint: 156aysdna213sac X-device-ip: 10.10.10.1 X-agent: Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.99 Mobile Safari/537.36 X-L: zh X-client-id: DRrYIqauawN0I8myTMoDTPys6ezGZxnm X-tenant-id: 08f770f51f80d2f40f38c00cb199fd21 { "code": "ad12sasdsfe3dfdg3sc" }
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 status String 登录流程状态标识。 枚举值: SUC CES S:登录成功 SOCIAL_BIND:绑定流程,需要调用验证码和社交账号登录绑定手机号相关接口完成绑定流程 USER_REGISTER:自动注册绑定流程,需要调用验证码和社交账号注册并绑定手机号相关接口完成注册绑定流程 ACCESS_DENIED:拒绝访问 MFA_AUTH:登录成功但需要进行二次认证,需要调用验证码和二次认证相关接口进行二次认证 session_token String 用户session_token,可使用该token调用单点登录接口获取sso_ticket,通过sso_ticket可以获取用户信息。 id_token String 本质上是一个JWT Token,包含了用户身份信息,默认2小时有效,支持可配置。 expire Integer session_token有效期,单位为秒,有效期内可以使用session_token获取sso_ticket。 state_token String 用户带有状态的令牌。 data String 返回说明。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误详情。
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- ...
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章