通過BUG,分析某APP的產品設計邏輯
本文結合作者在某APP遇到的bug,以及與APP工作人員方面的溝通處理,分析了這款APP背后的產品設計邏輯。
寫這篇文章,主要是前不久,自己在某APP遇到的BUG,為出發點,昨日又在和小伙們,討論設計后臺遇到的那些事,萌生出了一點想法。
事情的經過是這樣的:
樓主在某APP是通過QQ進行登陸,才發現上面綁定的手機號,早已不是現在的手機,而是很早之前讀大學時期的手機號,于是聯系了客服進行換綁。
本來是一件非常小的事情,但是,卻發現了這個APP后臺的設計可能和我理解的有些不同,然后就遇到了一些問題。
遇到的問題:
- 無法查看原訂單,提示當前賬號與現在的手機號不符合。
- 訂單退款失敗,無法原路退還。
- 第二個APP(非同一個APP)出現錯誤,無法登陸老賬號。用現有手機號登陸,則為一個全新的賬號。
- 第二個APP修改手機號,竟然需要注銷支付和實名認證。
問題1
從問題1,可以看出,此APP在查看訂單詳情的時候,校驗的是【購買該訂單的手機號】,而非當前所登陸的賬號,因此,也就發生了問題1。
問題2
從圖片2,可以看出,當用戶在申請退款時,該APP記錄的訂單支付信息,手機號一欄是動態的,也就是說:后臺記錄的購買的手機號與賬號綁定的手機號一致,當綁定的手機號換綁,記錄的用戶手機號也跟著換綁,退款時由于手機號錯誤,則會導致退款失敗。
當遇到這兩個BUG時,樓主嘗試了如下操作:
通過客戶端短信驗證的方式,將賬號從手機號A,換綁到手機號B,再去查看訂單詳情和申請退款,均能成功。因此,可以從此得出一個結論——用戶通過客戶端更改手機號,和客服更改手機號,不是數據庫的同一個地方!
通過流程圖,好像沒有發現什么異常,但是,就如我上圖所說,同樣都是換綁操作,為什么客服那邊就引起BUG了呢?
因此,從邏輯上分析,當用戶通過更改手機號時,數據庫的操作是直接將用戶賬號所綁定的手機號進行換綁。而客服是將新的手機號創建了一個新的賬號,再把老的賬號內容完全復制過去。
沒看懂?看看下面這個流程圖:
綜上,也就是說為什么客服換綁過后賬號需要重新登錄,而用戶自己換綁,卻不用。也解決了“問題1——為什么會提示當前賬號與現在的手機號不符合”,因為賬號不是同一個賬號,訂單校驗不通過,就無法查看了。這個操作就相當于用戶通過客戶端查看不屬于自己的訂單(通過抓包,修改返回值,也可以達到相同的效果。)同時也解決了問題2,為什么不能原路進行退款。
問題3&問題4
本來事情告一段落了,但是,樓主又出現問題了——第二個APP賬號提示異常,重新登錄,登錄過后是一個全新的賬號,而非老的賬號。
于是在聯系客服過后,客服告知第二個APP賬號也是綁定的那個老的手機號,改了第一個APP的手機號,第二個APP的也自動解綁了。于是客服又是和第一個APP一樣的操作——注銷新賬號,將老賬號數據復制到新賬號。這也解釋了問題3和問題4,因為第二個APP的錢包是實名認證,一個身份證只能認證一個賬號,于是必須得注銷第二個APP的錢包,否則無法綁定到新的賬號上去。
那么問題來了,第二個APP和第一個APP,賬號互不通,為什么會出現修改了手機號(可以理解為:為什么注銷了老賬號),第二個APP的賬號也會跟著出問題呢?
因此,我們可以大膽地推測第二個APP和APP,賬號方面的邏輯:
當用戶同時注冊第二個APP和APP時,會自動將兩個賬號進行關聯,合并為同一個賬號,但是數據不合并,從而有利于運營/產品數據分析,因為這兩個賬號為同一個人,且第二個APP和APP部分功能相似,有利于分析用戶行為。
當注銷第二個APP/第一個APP時,等于將這一個賬號給注銷了,因此相關聯的第二個APP/第一個APP的業務也會跟著注銷,從而產生了問題。
因為用戶是無法主動注銷賬戶的,所以這種問題只有在客服進行手機解綁時,才會出現這種蝴蝶效應。
這點設計,和微信/QQ截然不同了,微信和QQ是兩個完全獨立的賬號,而第二個APP和第一個APP,判斷為同一個人過后,則會自動關聯。
那么為什么第二個APP客服在操作用戶換綁手機時,不是直接像用戶一樣換手機,而是直接換賬號呢?
我這邊猜測,因為這樣的話,就等于有兩個賬號了,第二個APP/第一個APP的用戶量級就更多了,對于企業來講也就更有利啦~
結語
不過第二個APP這樣的設計,是否合理?這樣的設計,背后更深層次的意義在哪?恐怕就只能問APP的架構師或者產品經理。
本文由 @狂暴補師 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議
這簡直是是在反推他們的業務需求…
這個bug提議的很好,可我看了半天卻沒看出所表達的意思。建議,去繁為簡,給出論證和結果。
有時候沒有這么多為什么,就是開發自己怎么簡單怎么寫的