Foreigner Sequence Diagram » History » Version 2
Ryan Supawarapong, 03/02/2026 01:45 AM
| 1 | 1 | karnake ruengchaicharnkij | # Foreigner Sequence Diagram |
|---|---|---|---|
| 2 | 2 | Ryan Supawarapong | |
| 3 | <img style="width: 797px;" src="clipboard-202603020845-awl2t.png"><br> |
||
| 4 | |||
| 5 | ``` |
||
| 6 | @startuml |
||
| 7 | |||
| 8 | title Onboarding Foreigner |
||
| 9 | |||
| 10 | actor "customer" as c |
||
| 11 | participant "frontend" as fe |
||
| 12 | participant "backend" as be |
||
| 13 | database "database" as db |
||
| 14 | participant "notification" as n |
||
| 15 | participant "appman" as ap |
||
| 16 | |||
| 17 | |||
| 18 | c -> fe: choose Foreign Investor |
||
| 19 | fe --> c: ok |
||
| 20 | |||
| 21 | group Fullname Page |
||
| 22 | |||
| 23 | c -> fe: fill fullname, email, mobile and passport detail |
||
| 24 | fe -> be: send fullname, email, mobile and passport detail |
||
| 25 | |||
| 26 | be -> db: check for existing email, mobile and passport |
||
| 27 | db --> be: not found |
||
| 28 | be -> db: create user entry in information |
||
| 29 | db --> be: ok |
||
| 30 | be --> fe: ok & redirect to appman page (init by BE) |
||
| 31 | fe --> c: show next page (Appman) |
||
| 32 | |||
| 33 | group Back to Register |
||
| 34 | db --> be: found |
||
| 35 | be --> fe: found existing user |
||
| 36 | fe --> c: this account already exist. "Enter passport no" |
||
| 37 | c -> fe: enter passport no``` |
||
| 38 | @startuml |
||
| 39 | |||
| 40 | title Onboarding Foreigner |
||
| 41 | |||
| 42 | actor "customer" as c |
||
| 43 | participant "frontend" as fe |
||
| 44 | participant "backend" as be |
||
| 45 | database "database" as db |
||
| 46 | participant "notification" as n |
||
| 47 | participant "appman" as ap |
||
| 48 | |||
| 49 | |||
| 50 | c -> fe: choose Foreign Investor |
||
| 51 | fe --> c: ok |
||
| 52 | |||
| 53 | group Fullname Page |
||
| 54 | |||
| 55 | c -> fe: fill fullname, email, mobile and passport detail |
||
| 56 | fe -> be: send fullname, email, mobile and passport detail |
||
| 57 | |||
| 58 | be -> db: check for existing email, mobile and passport |
||
| 59 | db --> be: not found |
||
| 60 | be -> db: create user entry in information |
||
| 61 | db --> be: ok |
||
| 62 | be --> fe: ok & redirect to appman page (init by BE) |
||
| 63 | fe --> c: show next page (Appman) |
||
| 64 | |||
| 65 | group Back to Register |
||
| 66 | db --> be: found |
||
| 67 | be --> fe: found existing user |
||
| 68 | fe --> c: this account already exist. "Enter passport no" |
||
| 69 | c -> fe: enter passport no |
||
| 70 | fe --> be: check passport no for existing user |
||
| 71 | end |
||
| 72 | |||
| 73 | end |
||
| 74 | |||
| 75 | group Appman Page |
||
| 76 | c -> ap: do passport |
||
| 77 | ap --> fe: redirect to next page(CRS) |
||
| 78 | end |
||
| 79 | |||
| 80 | group CRS page |
||
| 81 | fe -> be: send appman state code |
||
| 82 | be -> ap: request customer data |
||
| 83 | ap --> be: send customer data |
||
| 84 | be --> fe: ok |
||
| 85 | |||
| 86 | c -> fe: do eligibility |
||
| 87 | fe --> c: ok |
||
| 88 | c -> fe: TIN detail for CRS |
||
| 89 | fe -> be: send Tin detail |
||
| 90 | be -> db: save TIN |
||
| 91 | db --> be: ok |
||
| 92 | be --> fe: ok |
||
| 93 | fe --> c: redirect to next page(basic info) |
||
| 94 | end |
||
| 95 | |||
| 96 | group Basic Info page |
||
| 97 | |||
| 98 | c -> fe: input data |
||
| 99 | fe -> be: same info (Same as regular onboarding) |
||
| 100 | be -> db: save info |
||
| 101 | db --> be: ok |
||
| 102 | be --> fe: ok |
||
| 103 | fe --> c: redirect to next page(Suite test) |
||
| 104 | end |
||
| 105 | |||
| 106 | group Suite test |
||
| 107 | c -> fe: do suite test |
||
| 108 | fe -> be: send suite test result |
||
| 109 | be -> db: save suite test result |
||
| 110 | db --> be: ok |
||
| 111 | db --> fe: ok |
||
| 112 | fe --> c: redirect to next page(verification document) |
||
| 113 | end |
||
| 114 | |||
| 115 | group Verification Document |
||
| 116 | |||
| 117 | c -> fe: choose type & upload document |
||
| 118 | fe -> be: document & document type |
||
| 119 | be -> db: save document & document type |
||
| 120 | db --> be: ok |
||
| 121 | be --> fe: ok |
||
| 122 | fe --> c: redirect to next page(verify email and mobile) |
||
| 123 | |||
| 124 | end |
||
| 125 | |||
| 126 | group Veirfy Email and Mobile |
||
| 127 | |||
| 128 | c -> fe: verify mobile |
||
| 129 | fe -> be: request sms otp |
||
| 130 | be -> n: send sms otp |
||
| 131 | n --> be: ok |
||
| 132 | be --> fe: ok |
||
| 133 | n -> c: sms otp |
||
| 134 | c -> fe: input otp |
||
| 135 | fe -> be: otp code |
||
| 136 | be -> db: check otp code |
||
| 137 | db --> be: ok |
||
| 138 | be --> fe: ok |
||
| 139 | fe --> c: ok |
||
| 140 | |||
| 141 | c -> fe: verify email |
||
| 142 | fe -> be: request verification link |
||
| 143 | be -> n: send email with link |
||
| 144 | n --> be: ok |
||
| 145 | be --> fe: ok |
||
| 146 | n -> c: email with link |
||
| 147 | |||
| 148 | c -> fe: click link |
||
| 149 | fe -> be: jwt token |
||
| 150 | be -> be: check jwt token |
||
| 151 | be -> db: update status |
||
| 152 | db --> be: ok |
||
| 153 | be --> fe: ok |
||
| 154 | fe --> c: ok |
||
| 155 | |||
| 156 | end |
||
| 157 | |||
| 158 | @enduml |
||
| 159 | ``` |
||
| 160 | fe --> be: check passport no for existing user |
||
| 161 | end |
||
| 162 | |||
| 163 | end |
||
| 164 | |||
| 165 | group Appman Page |
||
| 166 | c -> ap: do passport |
||
| 167 | ap --> fe: redirect to next page(CRS) |
||
| 168 | end |
||
| 169 | |||
| 170 | group CRS page |
||
| 171 | fe -> be: send appman state code |
||
| 172 | be -> ap: request customer data |
||
| 173 | ap --> be: send customer data |
||
| 174 | be --> fe: ok |
||
| 175 | |||
| 176 | c -> fe: do eligibility |
||
| 177 | fe --> c: ok |
||
| 178 | c -> fe: TIN detail for CRS |
||
| 179 | fe -> be: send Tin detail |
||
| 180 | be -> db: save TIN |
||
| 181 | db --> be: ok |
||
| 182 | be --> fe: ok |
||
| 183 | fe --> c: redirect to next page(basic info) |
||
| 184 | end |
||
| 185 | |||
| 186 | group Basic Info page |
||
| 187 | |||
| 188 | c -> fe: input data |
||
| 189 | fe -> be: same info (Same as regular onboarding) |
||
| 190 | be -> db: save info |
||
| 191 | db --> be: ok |
||
| 192 | be --> fe: ok |
||
| 193 | fe --> c: redirect to next page(Suite test) |
||
| 194 | end |
||
| 195 | |||
| 196 | group Suite test |
||
| 197 | c -> fe: do suite test |
||
| 198 | fe -> be: send suite test result |
||
| 199 | be -> db: save suite test result |
||
| 200 | db --> be: ok |
||
| 201 | db --> fe: ok |
||
| 202 | fe --> c: redirect to next page(verification document) |
||
| 203 | end |
||
| 204 | |||
| 205 | group Verification Document |
||
| 206 | |||
| 207 | c -> fe: choose type & upload document |
||
| 208 | fe -> be: document & document type |
||
| 209 | be -> db: save document & document type |
||
| 210 | db --> be: ok |
||
| 211 | be --> fe: ok |
||
| 212 | fe --> c: redirect to next page(verify email and mobile) |
||
| 213 | |||
| 214 | end |
||
| 215 | |||
| 216 | group Veirfy Email and Mobile |
||
| 217 | |||
| 218 | c -> fe: verify mobile |
||
| 219 | fe -> be: request sms otp |
||
| 220 | be -> n: send sms otp |
||
| 221 | n --> be: ok |
||
| 222 | be --> fe: ok |
||
| 223 | n -> c: sms otp |
||
| 224 | c -> fe: input otp |
||
| 225 | fe -> be: otp code |
||
| 226 | be -> db: check otp code |
||
| 227 | db --> be: ok |
||
| 228 | be --> fe: ok |
||
| 229 | fe --> c: ok |
||
| 230 | |||
| 231 | c -> fe: verify email |
||
| 232 | fe -> be: request verification link |
||
| 233 | be -> n: send email with link |
||
| 234 | n --> be: ok |
||
| 235 | be --> fe: ok |
||
| 236 | n -> c: email with link |
||
| 237 | |||
| 238 | c -> fe: click link |
||
| 239 | fe -> be: jwt token |
||
| 240 | be -> be: check jwt token |
||
| 241 | be -> db: update status |
||
| 242 | db --> be: ok |
||
| 243 | be --> fe: ok |
||
| 244 | fe --> c: ok |
||
| 245 | |||
| 246 | end |
||
| 247 | |||
| 248 | @enduml |
||
| 249 | ``` |