Li te yon bon jou solè nan Seattle, ak manm mwen te vle gen popilè a viral Dubaï Chocolate Pistachio Shake. Avèk eksitasyon, nou te deside ale nan Shake Shack ki pi pre, ak pou surprenant nou, li te vann, epi nou te di yo rele yo anvan vizite. Pa gen garanti ke li pral disponib nan jou sa a tou akòz bay limit. De jou apre, mwen te ale ankò yo tcheke pou yon atik oswa ale nan magazen yo tcheke si li disponib. Sa a te mennen nan kèk ide pou mwen: Ki sa si te gen yon AI ki pral fè apèl yo pou m 'ak ajou m' lè mwen bezwen yon rezèvasyon, oswa ale nan liy la long pou apèl kliyan, ak konekte avèk m 'kòmanse lè mwen se pare yo pale ak yon moun? Èske gen yon fason yo dwe avize lè yon atik disponib nan Shake Shack? Si li pa gen, mwen ka bati yon enfrastrikti nwaj pou sa? Se posib yo tcheke si yon atik se disponib epi ajoute li nan kouch la pou lòd sou entènèt, sa vle di gen kèk apèl rezo atravè ki nou ka identifye si Dubai Chocolate Pistachio Shake se disponib. Implementation Implemantasyon Pou jwenn enfòmasyon sou disponiblite, nou bezwen kèk pwen done. Èske gen yon fason pou jwenn enfòmasyon nan magazen an? Ki jan yo diferan si yon magazen gen yon shake oswa pa? Pou jwenn enfòmasyon magazen, lè nou louvri eleman enspekte ak gade nan apèl rezo, lè nou chwazi Washington, nou wè kèk apèl enteresan. Vityèl la Washington gen sèt kote, epi nou bezwen konnen ki nan sa yo gen shake la. Si nou gade nan repons nan enfòmasyon rejyon an, nou te kapab jwenn tout enfòmasyon eta a. curl 'https://ssma24.com/production-location/regions?isAlpha=true' \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'authorization: Basic removedSecretCodeHere==' \ -H 'cache-control: no-cache' \ -H 'origin: https://shakeshack.com' \ -H 'platform-os: macos' \ -H 'platform-version: 1.71.20' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://shakeshack.com/' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'x-requested-with: XMLHttpRequest' Dapre sa, ID WA se a3d65b58-ee3c-42af-adb9-9e39e09503c3, epi nou wè enfòmasyon magazen si nou pase regionId nan API a. curl 'https://ssma24.com/production-location/locations?regionId=a3d65b58-ee3c-42af-adb9-9e39e09503c3&channel=WEB&includePrivate=false' \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'authorization: Basic removedSecretCodeHere' \ -H 'cache-control: no-cache' \ -H 'origin: https://shakeshack.com' \ -H 'platform-os: macos' \ -H 'platform-version: 1.71.20' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://shakeshack.com/' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'x-requested-with: XMLHttpRequest' enfòmasyon sa a se toujou pa ase jiska nou konnen ki jan yo ale nan yon paj magazen ak identifye disponiblite a. Si yon magazen gen yon shake, li pral montre Dubai shake nan seksyon an shake. Apre rechèch sou apèl la curl, mwen wè apèl la pou opsyon meni a. curl 'https://ssma24.com/v1.0/locations/82099/menus?includeOptionalCategories=utensils&platform=web' \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'authorization: Basic removedSecretCodeHere==' \ -H 'cache-control: no-cache' \ -H 'channel: WEB' \ -H 'origin: https://shakeshack.com' \ -H 'platform-os: macos' \ -H 'platform-version: 1.71.20' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://shakeshack.com/' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'x-requested-with: XMLHttpRequest' Si yon shake disponib, Lè sa a, nou wè li nan seksyon an pwodwi. Si yon magazen pa gen li, Lè sa a, nou pa pral wè li nan repons la. Se poutèt sa, tout sa nou bezwen fè se jwenn tout enfòmasyon magazen an ak verifye ki magazen yo gen shake la. Si ou gade nan magazen kesyon yo, oloId li yo se lye nan kesyon ki gen rapò ak yon magazen. Sa a ka mape nan enfòmasyon magazen soti nan kesyon anvan yo, lè l sèvi avèk ki mwen te kapab jwenn tout ID magazen yo. Avèk kèk scripting shell prensipal, mwen te kapab kreye sa a curl script, ki pral di ki magazen pral gen shake a. for store in 203514 236001 265657 82099 62274 96570 203515; do echo $store curl "https://ssma24.com/v1.0/locations/$store/menus?includeOptionalCategories=utensils&platform=web" \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'authorization: Basic removedSecretCodeHere==' \ -H 'cache-control: no-cache' \ -H 'channel: WEB' \ -H 'origin: https://shakeshack.com' \ -H 'platform-os: macos' \ -H 'platform-version: 1.71.20' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://shakeshack.com/' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'x-requested-with: XMLHttpRequest' | jq| grep '"name": "Dubai Chocolate Pistachio Shake",' done Kòm chak magazen se storeId, epi mwen te itilize bibliyotèk la jq yo fòma repons la nan pwodiksyon JSON, ak te fè yon grips sou non sa a, magazen ki gen shake a pral bay yon hit. Respon nan echantiyon Dapre sa a, nou konnen ke magazen 82099, 62274, ak 96570 gen shakes, ak mwen te resevwa adrès la magazen soti nan apèl anvan yo ak te resevwa shakes. :) Conclusion Konklisyon Nan dokiman sa a, nou te ale nan rezo apèl yo identifye enfòmasyon ki nou bezwen ak tou te jwenn yon fason pou jwenn enfòmasyon magazen nan rezo apèl yo. Sa a te di, nou ka tou otomatize sa a atravè Selenium (ki se òdinatè-gwo), oswa nou ka sèvi ak yon AI yo analize sit entènèt la ak jwenn yon fason pou jwenn enfrastrikti sa a pare pou nou. Sa a pral yon avanse ki pral retire kèk travay ki gen rapò ak QA soti nan endistri a (on se pa gen anyen, men nou pral nan pozisyon sa a trè vit). Pifò nan apwòch yo nou wè jodi a te manyen. Nan atik pwochen mwen, mwen pral montre ki jan nou ka pran lide sa a senp epi bati yon enfrastrikti nwaj alantou li. Mwen pral ekri sou bilding: Yon apèl sèvè ki baze sou nwaj pou jwenn enfòmasyon soti nan entènèt la. Yon sèvis trigger ki baze sou nwaj ki pral trigger apèl la sèvè. Yon sistèm depo pou sove done sa yo pou caching - kote nou ka sove repons yo? Yon sistèm notifikasyon pou anonse nan yon app mobil oswa nan plizyè lòt fason. Si nou ap resevwa ase pwen done, mwen pral montre ki jan yo bati yon modèl ML lè l sèvi avèk pwen done espesifik. Sa a se pou objektif edikatif; mwen ak patnè mwen (SGG) te pran egzanp sa a reyèl pou bati yon enfrastrikti nwaj, ak kòd la ak lòt artifak yo pa pral pibliye asire w ke sit wèb Shake Shack yo pa overloaded.