《 导言>
2021/1,我带着“智能速汇”方案与客户初次见面。双方很快建立了信任,也敲定了合作意向。
4个多月后,2021/5,速汇系统启动投产。7天之内客户验证上线运行并反馈评价意见:快至秒、省流量、无支付风险….. 系统在性能和用户体验上获得了客户的高度赞赏,同时也推动了业务从新客户拓展到所有现有客户的业务数字化转型升级上台阶。
项目圆满成功!
《 背景>
2016年至今的四年多时间中,我们为金融行业提供了数十家银行的分行级、以及总行级移动渠道研发与建设的解决方案和技术平台及软硬件支持等服务,包括客户、产品、交易三大管理域和渠道管理域等多个模块的功能及性能需求…… 并在这个过程中培养和形成了团队的核心特色研发能力:基于互联网架构的移动金融技术解决方案体系(包含前后台架构体系构建、敏捷开发过程支持等)和大数据驱动的智能化用户经营能力输出……
本次项目背景是:某商业银行总行直属的数家分行需要建立智能速汇系统以满足实时快速(秒级响应)办理资金转账服务的业务需求和服务能力…..
《正文>
一.问题定义
1.痛点分析
+ 传统方式下客户发起资金转入请求后往往要等至少半天甚至更长时间后才会在对方账户收讫….. (效率低下)
+ 有些大额转账业务由于金额太大导致交易失败或者需要去银行网点销卡重登后再转…. (用户体验差)
+ 由于监管等原因限制银行无法与第三方机构实现直连并办理“即日到账”业务….. (合作难度大)
+ 目前已实现的跨行转账服务存在一定的“同业竞争”压力—– (发展空间小)
因此总行为几家分行规划了建设符合监管要求的智能速汇技术及产品解决方案以突破以上挑战…
2.问题定义—-为什么要做智能化?
+ * 成本投入大—–需投入大量的人力建设维护分行的物理网点—-且网点的运营管理有成本又有风险…..
+ * 人力投入多——需增配分支机构的营业员来负责人工服务—-员工的技能更新培训也会带来较大的人力投入和时间耗费…
+ * 速度慢* ——只能通过柜面人员的输入操作才能发起业务申请——-这决定了其响应的时间速度一定较慢;另一方面因为各家银行的清算规则不一样——-还需要增加人员来对账以便对冲不同银行之间的清算资金错配…… * * *
3.问题定义—-为什么要做移动化?
传统方式下无论客户在哪里使用都离不开实体网点场所和服务设备—包括网上银行的Web端使用也需在电脑终端才能完成操作——因而这种传统的金融服务模式已不能适应当前的数字化时代的发展趋势;当前无论是互联网巨头如BATJ等等纷纷涌入线下商超社区等场景抢占市场份额——还是新兴的科技企业如支付宝微信支付等的跨界切入…这些都从消费用户的痛点出发并运用新的技术手段来解决问题—满足了用户的极致体验….金融机构应该顺应数字化发展的趋势主动拥抱新兴的技术和变革——借助移动互联网和信息技术手段来赋能传统产业提升自身的竞争力和市场份额…
4.结论—-做智能金融移动化–让手机成为全链路线上线下的服务工具!以数字化驱动智能化全面赋能我们的客户解决他们的痛点并获得极致体验……同时也能助力我们银行业务发展和市场营销双赢!
二.原因分析之智能化方法论—–Smartify智能加速推进框架:Smartify = Smart + Speedy + Agile + Engaging1.Smart -智能化处理方式**
由集中中心数据仓库提供各类交易数据以及基础信息资源数据支持;通过大数据及人工智能算法生成统计指标参数表提供决策支撑——比如可进行客群划分成以提升精细化管理效果;可以针对性进行营销资源策划制定匹配不同的客户群体的个性化推广策略以及相关营销活动的创意及方案制作;还可以挖掘识别出具备高价值的“潜流失大客高收入群体”以便制定更好的保客策略以减少流失数量等……如此可进一步改善客户的体验而提升整体服务水平…
SMART分析图示例
- Speedy -高效处理流程
- 由中心引擎统一进行后台数据的运算匹配比对等一系列繁重的计算比较工作—–这样后台的服务支撑功能可以更弹性扩展更灵活配置以便实现更好的资源利用率.
3.Agile -敏捷开发部署
图:Agile敏捷开发流程示例
- Engaging -增强关联互动性
SMART智慧生活-关联互通示例
—SMART加速推进模型—
SMART加速推进模型-简版
三.原因分析之解决方案架构—基于SOA原则的微服务架构
SOA是一种设计风格或组织模型,这种风格或模型采用松耦合的服务为基础,使得连接的实体间在交换时能够独立的改变自身接口,最终达到使整个系统的效率得到提高的目的.
在面向企业服务的软件设计过程中将企业内部流程拆分成各种相对独立又互相关联的功能性单元,通过一系列标准将这些功能单元绑定在一起形成一个统一的通信网络:即面向服务的结构体系结构(SOA).
微服务是一个小的发布快的应用程序,旨在支持云原生环境及其框架。微服务的真正影响来自于微服务的生态系统如何允许它们之间进行通信而不是内部工作的方式。通常情况下,一个大型应用程序可以被拆分成许多不同的应用程序称为子集或模块它们被拆分为独立的服务.
当所有的组件或模块都是独立的并且在各自的编程语言内的时候,应用程序就会变成一个真正的单一代码库(单体应用)这些独立的组件被组合到一起来产生一个更大的结果这个结果可以是一个人机交互也可以是软件系统它可能是单个接口可能是单个软件也可能是其他任何东西.
SOA基本思想
随着公司规模不断扩大,业务越来越复杂同时又面临日益剧烈的市场竞争.为了应对新的问题和挑战公司必须要打破部门间的界限整合原有分散的系统资源使新的信息系统满足更加灵活的变化需要因此这就要求信息系统必须具备足够的柔性和敏捷性使得新的信息架构更加灵活更容易适应环境变化和发展.对于很多大型复杂信息化建设的实际案例来说要使企业的信息化结构具有足够的柔性和应对变化的能力就必须实施SOA战略.一方面根据企业的未来发展和市场需求确定核心产品的范围另一方面根据市场需求迅速推出针对特定细分市场的商业产品的能力从而帮助企业获得持续创新从而增强市场竞争优势.SOA是一种标准的构架方法和一套设计原则它的目的是建立简单而可靠的底层体系结构以便更好地整合已有系统和实现新技术带来的新功能以降低IT开发成本提高运营效率同时还能确保系统的高质量以及具有很强的互操作性能够快速有效地部署各种复杂的计算逻辑并且能够为各种设备提供集成能力(如无线终端PCPDA智能手机以及IP设备);另一方面对于商业来说它则是一个利用现代计算机网络所建立的完整构架不仅具有较强的交互能力和互操作能力并能与用户交流的同时还能够根据外界的要求及时作出相应调整和完善.
SOA的价值主张
ABO原则
**
四.YYMIS MIDAS平台介绍及其应用价值—YYMIS MIDAS平台基于SOA的原则并符合ABO划分原则采用分布式架构模式构建了一个稳定高效的可复用开放式信息中台支持银行及其它金融机构提供各种类型的移动渠道建设定制个性化富媒体产品开发各类数据展示图表创建推送通知消息等等应用功能并且可以在同一个应用层面为各渠道用户打造统一的用户界面以满足用户的需求例如APP端微信Web端支付宝等.. YYMIS MIDAS信息中台是一个开放的灵活可用的技术平台由前端交互界面展现层逻辑运算控制层数据访问存储层基础支撑环境层安全环境层五个核心层次构成并通过API协议规范开放出来便于同其它系统和外部机构实现对接通讯连接..
## YYMIS MIDAS构成架构要素
-
前端-展现层的关键要素有哪些?
### 呈现的关键组成要素有哪些?
frontend# frontend > > # framework# framework < /div> > # engineEngine engine< /div> > > # page Page Page < /div> > # component Component Component < /div > >> + —————— |—————– | —————————- | ————————– | —————- |————————- | +
前驱项要素中的关键项是什么?##### —关键组成要素详解—-
—-【APP组件】APP组件按照不同的使用场景可分为以下几类组件——
———————————
布局类组件示例
---------------------------------
```js const contentGroupItem = props => (<div class = { `${layout.styleGroup.contentItem(props)}` })> <div className={ ` ${item.classNameItem[0]}, ${item.classNameItem[1]}` } >{ div className={"col "} > { props.children } </div </div </div ); const layoutComponentInfo = (<div className="content-grid-group-item" //className={ props.className || '' }> { <ContentGridGroupItem className={ layout.styleGroup.itemClassName }> { contentGroupChildren } </ContentGridItem }) </div ); ```
```
—————————————-
容器类组件示例(包含布局子组布置在内)
----------------------------------------
- ————————————
-
说明:此内容组是纯容器性质的通用模板类布局节点用于适配任意的容器内容组织样式需求
**————————
——————————
说明:
md 这个容器中包含了很多按钮元素且每个按钮都可以点击发生跳转路由动作“
html <div class="content-group-button-grid-template"> <ul className = {grid-button-column, styles.middleButtonCollectionColumn } class="grid-button-row grid-button-row-middle" className="grid-button-row"> <a href = "/" rel="noopener nofollow" id="" href == "" id="" href=="" href=="" /> <br/> <Link className=grid-busition-item-grid-template link-defaultrel="noopener nofollow" type=button`
style ={{ textDecoration=’none’, color: ‘#5a5c60’}}id= `${props.id || "none"}` ><span >< span style={{ iconMarginLeft:'30px', textTransform:'relative' }},></span><span style={{ textDecoration: 'underline', width: '12px' , paddingLeft: '70px' }}>{ title }</span><label>{ {title | default : title } {|default |default | }| </label></br/></a>) <ul className= `grid-business-category-list`, styles.listBusinessCategoryUl class="list-border" style={{ backgroundColor :'rgba(0 ,8 ,16 ,60%' }} //className='content-group-content-list' //(className++) > <li key = `index${index}`; id =`grid-group-type-data_${index}` ><a href className="list-business/category-link" id (`${idListIndexId}_${index}`) data-id = `${dataIdIndex}_${this.id}_${index}` rel ='noopener nofollow' key =`li_${index}` /> <GridRow className ="active category-link-parent" style = { showChildList ? children :``, || showChildrenCount >=children.length} children =`showChildrenCount ? [...showChildGrids].concat(showActiveChildGrid) :(ShowGridTypes)` > <b >{ {selectedType.typeName}}!</b> {% if gridList ? !! ShowingSelectedType.typeNames %}<a href ='/' rel ='noreferrer noopener' id ='link_to(gridList)' key =`$selectedTypesKeys[$selectedType]['$showIndice']` data-type_id = `${selectedType.id}`; data-currentPage =${currentpage}; }>{ {showTypeName}}}
]) )
“`
## —【视图】
## ———————————————————
*———————————————————————————————————————————————————————————————————————————————————-*
*————————————————————————————————————————————————————-*
### —–Mini view example mini view
### miniview miniview detail
### —迷你视图展示列表
### —pagination
“` @component MiniViewComponent@description //Mini View @property {string} type @property String title@property String listDescription@property children @property String paginationId @property object config @emit {“changeMiniviewSelected”: args}
@method changeClickSelection(){{ console.log(‘click selected’) }}
/* this changeClickSelection() –*/// this.updateMiniviewSelected(id) {{ console.log(‘updateSelected Id’) }}this.updateMiniviewPagnation(currentPage){{ this.changeMiniviewActiveRow(rowIndex) }}
{
“`
@@ slot scoped
<m-mini-view-component ref '= null'${types}
selected-types:max-list-length-max “‘5′”
miniev-wrapped-class 'small-view-component-wrapper'
:selection-mode-max "'5'":selection-mode-max-number ‘”10′” ::config=config :select-type-selected-max-number ‘”10′”::change-click-selection:=changeClickSelection()` ::update-mininvew-selected:=this.updateMiniovveSelected() ::update-ninvewpagnation===tisthichiute update-mininvew-page===tiqzhiuifruiqjdiwuquwuvxwiuvxgdfvsdfsdfsfdfdvwuvxgdfvsdfsafdasfadfsvasfasfasfaaavwfuwsadfsadsadqadsadssadafwsssdffdsffdsffdvxguvfuvggwgwwweeeeeeeeeggdgwwwgwwgwggggggwwwwwsgtwrgtrtsgtwrgtrrtgoqsqpssdffafsgswfgswgfsdfsasfasfasffsaassddsfddsvvvvvvxvwefvwerwtrewtrewwtrewrtetwertyerteryertretwywteertyerteryertretyeretyertryteryterryeryertyterryerteytertyertyeertyertetyxyzxc123456789abcdesftghijklmnopqrstuytzxc123456789abcdesftghijklmnopqrstuytzxc123456789abcdetsfhijklmnpoqrtuytzcx13456798dfsljkpmnoqrtyczsx13465789fedclkmnoqrutyazsx13456790dljskpnoruryzsd1236579hjklyrugyzcv1346875tfghijsklmnuoruvhgzxc1346578tsghjklmnopqrtstvyzsaxcy1346975tfjuiklmnoqprstvtuyzsdxcy3465977tfrjikpqrtsttvvyzzcc13457899tfrtjqprstsrruuyzxtcfjjpqrstuysttvyyzaabcdeFGHKLNOQPRSTUVWXYSZcvbnm76890ABCDEFGHIJKLMNORSTUVWXY&config={max-width:”550px”,max-height:”450px”,showPagination: true,paginationOptions:{numberOfItems:true,size:true,itemInfo:false},width:”100%”};
:x-scale-type-size-pages '"10"'
/* config */
/*={
*/* style.*=,* *=,* showPagination.*=,* *=,***.\ *=:*, **+**.\ *=:*, **+\=`\’;;`.~:`\’.{\”}.+:~:<:\\\"\"::.+\.\(\)`:.:.;\n\):\(:;.\”;.,\\”\”\”).’*/
*pagination?.={“\’;;$+$=pagination?\?:{};$:+;\n.$+$=“\’;;$+$=$.$+’.showPagination:’;$:+);\n.$+$=$.$+’.size:’;$:+);\n.$+$=$.$+’.numberOfItems,’;) /*+\=/;;;p$=fractionStyle;*) p$=fraction?.?\?:{};p$=`\$\$p;:$; \$&=$.pagenation?\?:{};\$p=${{$ \$&… $:$)};$++=p$.[‘paginationOptions’];++=p$.[p$.[‘showPagination’]]?\:p $.[p$.[‘numberOfItems’]]?\:.[p $.[‘pageSize’]]?!.[p $.[‘showSize’]];}$={})};
}
“`
## —【弹窗】
–>
## ———————————-
———–
~~
~~
~~
~~
~~
## ——————————————————————–
—–)
“` js import React,{ref}else import React,BromeletPropTypes,{DefaultProps}@@FunctionalComp as Component from ‘@/intui-core/index.js’;
const WrapperRefNameBdemoAlertMessageComponentWrapperref=&;
const WrapperPropsBdemoAlertMessageComponentWrapper={};
const RefNameBdemoAlertMessageComponentref=&;
export default class BdemoalertMessageComp is a constructor in Bromeleted demoalert message Comp.
export default function DemoAlertMessage({message,type }) {
return () {
let wrapperElementNodeRef=wrapperElementNodeRef;
let ref=ref&&ref.length!==0?[ref_.[0]]:null;
let alertCom ponentNodeRef=null(let alertComponensrEl node=&let parentE lmtentNode=parentElementNode_;
if(parentEl ementN ode&&parentElementNode.childElements&&parentEl entN od.childE le ments.length!==0){
for(let indexel=e ndsarray(parentElementN odCHildEl ems), indexe,lenght=l ength;
i nx el<=en dsarrray(parentEl emEntN odCHildEl Ems).len gth;
++);
if(alertComponen tEl node.parentE lemen tNa me===’app-componen t-node’){
alertCom ponentEdnode.ref=
alertCom ponentEdnode;
alertCom ponentEdnoderef_;
alertCom ponente n El Node();
}
}
else{
return null;
}
return ()=>{};
};
}
};
demoalert msg eg ageComp Demo alert message Comp
demoalertmsgageComp Demo alert messag e Comp
demoalertmsgageC onp Demo alerts message Com pe
demoalert msge
熊猫速汇 | PandaRemit
🐼熊猫速汇是一家总部位于新加坡的跨境汇款公司,旨在为全球用户提供安全、便捷、价格公道的汇款服务。 熊猫速汇目前已经成为全球百万用户的选择,使用熊猫速汇,到账更多,速度更快。跨境汇款手续费只需80元,跨境汇款,熊猫速汇你值得拥有!!!
