[{"data":1,"prerenderedAt":2235},["ShallowReactive",2],{"learn-chrome-th":3,"nav-th":114,"doc-\u002Fth\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fusage-and-safety":677,"mdc-ask8i9-key":2224},{"id":4,"docsPage":5,"docsSidebar":15,"docsTabs":17,"extension":19,"footer":20,"header":92,"localeSwitch":109,"meta":111,"stem":112,"__hash__":113},"chrome_th\u002Fth\u002Fchrome.yml",{"onThisPage":6,"copyPage":7,"copied":8,"copyMenu":9,"copyMarkdownLink":10,"linkCopied":8,"viewMarkdown":11,"openChatGpt":12,"openClaude":13,"platforms":14},"บนหน้านี้","คัดลอกหน้า","คัดลอกแล้ว","ตัวเลือกการคัดลอกเพิ่มเติม","คัดลอกลิงก์ Markdown","ดูเป็น Markdown","เปิดใน ChatGPT","เปิดใน Claude","ใช้ได้กับ",{"label":16},"เมนูเอกสาร",{"ariaLabel":18},"หมวดเอกสาร","yml",{"ariaLabel":21,"columns":22,"legal":72,"quote":73,"askAi":76},"ส่วนท้าย",[23,38,50,60],{"label":24,"children":25},"เรียนรู้",[26,29,32,35],{"label":27,"to":28},"เอกสาร","\u002Fdocs",{"label":30,"to":31},"ตัวอย่างการใช้งาน","\u002Fuse-cases",{"label":33,"to":34},"การฝึกอบรม","\u002Ftraining",{"label":36,"to":37},"แหล่งข้อมูล","\u002Fresources",{"label":39,"children":40},"สำหรับนักพัฒนา",[41,44,47],{"label":42,"to":43},"ผู้ช่วย AI","\u002Fdocs\u002Fai-and-api\u002Fassistants",{"label":45,"to":46},"API","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fgetting-started",{"label":48,"to":49},"Open Platform","\u002Fdocs\u002Fadministration\u002Faccount\u002Fopen-platform",{"label":51,"children":52},"อัปเดต",[53,56],{"label":54,"to":55},"อัปเดตล่าสุด","\u002Freleases",{"label":57,"to":58,"target":59},"บทความ","https:\u002F\u002Fwww.dataglasslabs.com\u002Fblog","_blank",{"label":61,"children":62},"DataGlass",[63,66,69],{"label":64,"to":65,"target":59},"เปิด DataGlass","https:\u002F\u002Fapp.dataglasslabs.com",{"label":67,"to":68,"target":59},"เว็บไซต์","https:\u002F\u002Fwww.dataglasslabs.com",{"label":70,"to":71},"ราคา","\u002Fdocs\u002Foverview\u002Fexplore\u002Fpricing","DataGlass Labs สงวนลิขสิทธิ์",{"text":74,"caption":75},"วัดสิ่งที่เหลือเป็นกำไร แล้วค่อยเติบโตจากสิ่งที่วัดได้","ทีม DataGlass",{"label":77,"prompt":78,"assistants":79},"ถาม AI เกี่ยวกับ DataGlass","ช่วยสอนวิธีใช้ DataGlass ให้หน่อย DataGlass คือ Decision Engine สำหรับผู้ขายบน Shopee, Lazada และ TikTok Shop ที่ปรับโฆษณา ราคา และโปรโมชันเพื่อกำไรที่แท้จริง ใช้การค้นหาเว็บเพื่ออ่านเอกสารที่ https:\u002F\u002Flearn.dataglasslabs.com\u002Fth\u002Fdocs (สรุปสำหรับ AI อยู่ที่ https:\u002F\u002Flearn.dataglasslabs.com\u002Fllms.txt) แล้วตอบเป็นภาษาไทยว่า DataGlass ทำอะไร เริ่มต้นใช้งานอย่างไร และควรอ่านคู่มือเรื่องไหนก่อน",[80,84,88],{"label":81,"icon":82,"url":83},"ChatGPT","chatgpt","https:\u002F\u002Fchatgpt.com\u002F?prompt={prompt}",{"label":85,"icon":86,"url":87},"Claude","claude","https:\u002F\u002Fclaude.ai\u002Fnew?q={prompt}",{"label":89,"icon":90,"url":91},"Perplexity","perplexity","https:\u002F\u002Fwww.perplexity.ai\u002Fsearch?q={prompt}",{"sections":93,"navLabel":107,"openApp":64,"search":108},[94,97,99,101,103,105],{"key":95,"label":96},"home","หน้าแรก",{"key":98,"label":27},"docs",{"key":100,"label":30},"use-cases",{"key":102,"label":33},"training",{"key":104,"label":54},"releases",{"key":106,"label":36},"resources","ส่วนต่าง ๆ","เริ่มค้นหา",{"label":110},"ภูมิภาคและภาษา",{},"th\u002Fchrome","oehsJxJS8-mOnkBR_goBo54MPvM7axylEK_M0cWBEHI",[115],{"title":116,"path":28,"stem":98,"children":117,"page":120},"Docs",[118,185,374,562,640],{"title":119,"draft":120,"path":121,"stem":122,"children":123},"ภาพรวม",false,"\u002Fdocs\u002Foverview","docs\u002F01.overview\u002Findex",[124,125,149,174],{"title":119,"path":121,"stem":122,"draft":120},{"title":126,"draft":120,"path":127,"stem":128,"children":129,"page":120},"เริ่มต้นใช้งาน","\u002Fdocs\u002Foverview\u002Fget-started","docs\u002F01.overview\u002F01.get-started",[130,135,139,144],{"title":131,"path":132,"stem":133,"draft":120,"icon":134},"DataGlass คืออะไร","\u002Fdocs\u002Foverview\u002Fget-started\u002Fwhat-is-dataglass","docs\u002F01.overview\u002F01.get-started\u002F01.what-is-dataglass","i-material-symbols-info-rounded",{"title":126,"path":136,"stem":137,"draft":120,"icon":138},"\u002Fdocs\u002Foverview\u002Fget-started\u002Fquick-start","docs\u002F01.overview\u002F01.get-started\u002F02.quick-start","i-material-symbols-rocket-launch-rounded",{"title":140,"path":141,"stem":142,"draft":120,"icon":143},"แพลตฟอร์มที่รองรับ","\u002Fdocs\u002Foverview\u002Fget-started\u002Fsupported-platforms","docs\u002F01.overview\u002F01.get-started\u002F03.supported-platforms","i-material-symbols-grid-view-rounded",{"title":145,"path":146,"stem":147,"draft":120,"icon":148},"การเชื่อมต่อร้านค้า","\u002Fdocs\u002Foverview\u002Fget-started\u002Fconnecting-shops","docs\u002F01.overview\u002F01.get-started\u002F04.connecting-shops","i-material-symbols-link-rounded",{"title":150,"draft":120,"path":151,"stem":152,"children":153,"page":120},"พื้นฐาน","\u002Fdocs\u002Foverview\u002Ffoundations","docs\u002F01.overview\u002F02.foundations",[154,159,164,169],{"title":155,"path":156,"stem":157,"draft":120,"icon":158},"มุมมองร้านค้านี้ เทียบกับ มุมมองรวมทุกร้าน","\u002Fdocs\u002Foverview\u002Ffoundations\u002Fthis-shop-vs-unified","docs\u002F01.overview\u002F02.foundations\u002F01.this-shop-vs-unified","i-material-symbols-layers-rounded",{"title":160,"path":161,"stem":162,"draft":120,"icon":163},"COGS และบทบาทสำคัญ","\u002Fdocs\u002Foverview\u002Ffoundations\u002Fcogs-and-their-role","docs\u002F01.overview\u002F02.foundations\u002F02.cogs-and-their-role","i-material-symbols-payments-rounded",{"title":165,"path":166,"stem":167,"draft":120,"icon":168},"margin ของคุณรวมอะไรบ้าง","\u002Fdocs\u002Foverview\u002Ffoundations\u002Fideal-vs-realized-margin","docs\u002F01.overview\u002F02.foundations\u002F03.ideal-vs-realized-margin","i-material-symbols-compare-arrows-rounded",{"title":170,"path":171,"stem":172,"draft":120,"icon":173},"True ROAS","\u002Fdocs\u002Foverview\u002Ffoundations\u002Ftrue-roas","docs\u002F01.overview\u002F02.foundations\u002F04.true-roas","i-material-symbols-ad-group-rounded",{"title":175,"draft":120,"path":176,"stem":177,"children":178,"page":120},"สำรวจ","\u002Fdocs\u002Foverview\u002Fexplore","docs\u002F01.overview\u002F03.explore",[179,182],{"title":70,"path":71,"stem":180,"draft":120,"icon":181},"docs\u002F01.overview\u002F03.explore\u002F01.pricing","i-material-symbols-sell-rounded",{"title":54,"path":183,"stem":184,"draft":120,"to":55},"\u002Fdocs\u002Foverview\u002Fexplore\u002Freleases","docs\u002F01.overview\u002F03.explore\u002F02.releases",{"title":186,"draft":120,"path":187,"stem":188,"children":189},"ฟีเจอร์","\u002Fdocs\u002Ffeatures","docs\u002F02.features\u002Findex",[190,191,221,271,312,335,355],{"title":119,"path":187,"stem":188,"draft":120},{"title":192,"draft":120,"path":193,"stem":194,"children":195,"page":120},"ร้านค้า","\u002Fdocs\u002Ffeatures\u002Fshops","docs\u002F02.features\u002F01.shops",[196,201,206,211,216],{"title":197,"path":198,"stem":199,"draft":120,"icon":200},"ภาพรวมร้านค้า","\u002Fdocs\u002Ffeatures\u002Fshops\u002Fshop-overview","docs\u002F02.features\u002F01.shops\u002F01.shop-overview","i-material-symbols-space-dashboard-rounded",{"title":202,"path":203,"stem":204,"draft":120,"icon":205},"ทำความเข้าใจตัวเลขต่างๆ","\u002Fdocs\u002Ffeatures\u002Fshops\u002Funderstanding-the-numbers","docs\u002F02.features\u002F01.shops\u002F02.understanding-the-numbers","i-material-symbols-help-rounded",{"title":207,"path":208,"stem":209,"draft":120,"icon":210},"การระบุที่มาและการขจัดการนับซ้ำ (Attribution & dedup)","\u002Fdocs\u002Ffeatures\u002Fshops\u002Fattribution-and-dedup","docs\u002F02.features\u002F01.shops\u002F03.attribution-and-dedup","i-material-symbols-call-merge-rounded",{"title":212,"path":213,"stem":214,"draft":120,"icon":215},"สุขภาพร้าน","\u002Fdocs\u002Ffeatures\u002Fshops\u002Fshop-health","docs\u002F02.features\u002F01.shops\u002F04.shop-health","i-material-symbols-monitor-heart-rounded",{"title":217,"path":218,"stem":219,"draft":120,"icon":220},"การตั้งค่าร้านค้าและการซิงก์ข้อมูล","\u002Fdocs\u002Ffeatures\u002Fshops\u002Fshop-settings-and-sync","docs\u002F02.features\u002F01.shops\u002F05.shop-settings-and-sync","i-material-symbols-settings-rounded",{"title":222,"draft":120,"path":223,"stem":224,"children":225,"page":120},"สินค้า","\u002Fdocs\u002Ffeatures\u002Fproducts","docs\u002F02.features\u002F02.products",[226,231,236,241,246,251,256,261,266],{"title":227,"path":228,"stem":229,"draft":120,"icon":230},"ตารางสินค้า","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fproduct-table","docs\u002F02.features\u002F02.products\u002F01.product-table","i-material-symbols-deployed-code-rounded",{"title":232,"path":233,"stem":234,"draft":120,"icon":235},"ภาพรวมสินค้า","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Funified-products","docs\u002F02.features\u002F02.products\u002F02.unified-products","i-material-symbols-dashboard-customize-rounded",{"title":237,"path":238,"stem":239,"draft":120,"icon":240},"จับคู่และรวมสินค้า","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fmatching-and-merging","docs\u002F02.features\u002F02.products\u002F03.matching-and-merging","i-material-symbols-merge-rounded",{"title":242,"path":243,"stem":244,"draft":120,"icon":245},"แก้ไขหลายรายการ (Excel)","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fbulk-edit-excel","docs\u002F02.features\u002F02.products\u002F04.bulk-edit-excel","i-material-symbols-grid-on-rounded",{"title":247,"path":248,"stem":249,"draft":120,"icon":250},"สต็อกและการสั่งซื้อเพิ่ม","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Finventory-and-reorder","docs\u002F02.features\u002F02.products\u002F05.inventory-and-reorder","i-material-symbols-inventory-2-rounded",{"title":252,"path":253,"stem":254,"draft":120,"icon":255},"ซิงก์สต็อก","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fstock-sync","docs\u002F02.features\u002F02.products\u002F06.stock-sync","i-material-symbols-sync-rounded",{"title":257,"path":258,"stem":259,"draft":120,"icon":260},"ค่าคอมมิชชั่น","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fcommission","docs\u002F02.features\u002F02.products\u002F07.commission","i-material-symbols-price-change-rounded",{"title":262,"path":263,"stem":264,"draft":120,"icon":265},"Auto bump","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fauto-bump","docs\u002F02.features\u002F02.products\u002F08.auto-bump","i-material-symbols-trending-up-rounded",{"title":267,"path":268,"stem":269,"draft":120,"icon":270},"ช่วง margin","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fmargin-spread","docs\u002F02.features\u002F02.products\u002F09.margin-spread","i-material-symbols-straighten-rounded",{"title":272,"draft":120,"path":273,"stem":274,"children":275},"การวิเคราะห์ทางการเงิน","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown","docs\u002F02.features\u002F03.financial-breakdown\u002Findex",[276,277,282,287,292,297,302,307],{"title":119,"path":273,"stem":274,"draft":120},{"title":278,"path":279,"stem":280,"draft":120,"icon":281},"การจำลองและบันทึกร่างการแก้ไข","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fsimulate-and-draft-edit","docs\u002F02.features\u002F03.financial-breakdown\u002F01.simulate-and-draft-edit","i-material-symbols-science-rounded",{"title":283,"path":284,"stem":285,"draft":120,"icon":286},"การตั้งค่า margin","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fset-margin","docs\u002F02.features\u002F03.financial-breakdown\u002F02.set-margin","i-material-symbols-tune-rounded",{"title":288,"path":289,"stem":290,"draft":120,"icon":291},"Margin optimizer","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fmargin-optimizer","docs\u002F02.features\u002F03.financial-breakdown\u002F03.margin-optimizer","i-material-symbols-instant-mix-rounded",{"title":293,"path":294,"stem":295,"draft":120,"icon":296},"ความยืดหยุ่นของราคา","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fprice-elasticity","docs\u002F02.features\u002F03.financial-breakdown\u002F04.price-elasticity","i-material-symbols-show-chart-rounded",{"title":298,"path":299,"stem":300,"draft":120,"icon":301},"เครื่องคำนวณสินค้า","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fproduct-calculator","docs\u002F02.features\u002F03.financial-breakdown\u002F05.product-calculator","i-material-symbols-calculate-rounded",{"title":303,"path":304,"stem":305,"draft":120,"icon":306},"ประวัติสินค้า","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fproduct-history","docs\u002F02.features\u002F03.financial-breakdown\u002F06.product-history","i-material-symbols-history-rounded",{"title":308,"path":309,"stem":310,"draft":120,"icon":311},"กำไรสุทธิและต้นทุนแฝง","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fnet-profit-and-hidden-cost","docs\u002F02.features\u002F03.financial-breakdown\u002F07.net-profit-and-hidden-cost","i-material-symbols-visibility-off-rounded",{"title":313,"draft":120,"path":314,"stem":315,"children":316,"page":120},"การตั้งราคา","\u002Fdocs\u002Ffeatures\u002Fpricing","docs\u002F02.features\u002F04.pricing",[317,321,326,331],{"title":318,"path":319,"stem":320,"draft":120,"icon":245},"Price Edit","\u002Fdocs\u002Ffeatures\u002Fpricing\u002Fprice-edit","docs\u002F02.features\u002F04.pricing\u002F01.price-edit",{"title":322,"path":323,"stem":324,"draft":120,"icon":325},"Whitelist การขึ้นราคา","\u002Fdocs\u002Ffeatures\u002Fpricing\u002Fprice-increase-whitelist","docs\u002F02.features\u002F04.pricing\u002F02.price-increase-whitelist","i-lucide-badge-check",{"title":327,"path":328,"stem":329,"draft":120,"icon":330},"การขออนุมัติ whitelist","\u002Fdocs\u002Ffeatures\u002Fpricing\u002Frequest-whitelist-approval","docs\u002F02.features\u002F04.pricing\u002F03.request-whitelist-approval","i-lucide-mail",{"title":332,"path":333,"stem":334,"draft":120,"icon":181},"ระดับราคา","\u002Fdocs\u002Ffeatures\u002Fpricing\u002Fprice-tiers","docs\u002F02.features\u002F04.pricing\u002F04.price-tiers",{"title":336,"draft":120,"path":337,"stem":338,"children":339},"ตัวจำลองแคมเปญ","\u002Fdocs\u002Ffeatures\u002Fcampaign-simulator","docs\u002F02.features\u002F05.campaign-simulator\u002Findex",[340,341,346,351],{"title":119,"path":337,"stem":338,"draft":120},{"title":342,"path":343,"stem":344,"draft":120,"icon":345},"โมเดลช่วงแคมเปญ","\u002Fdocs\u002Ffeatures\u002Fcampaign-simulator\u002Fphase-model","docs\u002F02.features\u002F05.campaign-simulator\u002F01.phase-model","i-material-symbols-timeline-rounded",{"title":347,"path":348,"stem":349,"draft":120,"icon":350},"การวางแผนโฆษณา","\u002Fdocs\u002Ffeatures\u002Fcampaign-simulator\u002Fads-planning","docs\u002F02.features\u002F05.campaign-simulator\u002F02.ads-planning","i-material-symbols-ads-click-rounded",{"title":352,"path":353,"stem":354,"draft":120,"icon":168},"เทียบไม่จัดแคมเปญ","\u002Fdocs\u002Ffeatures\u002Fcampaign-simulator\u002Fcounterfactual","docs\u002F02.features\u002F05.campaign-simulator\u002F03.counterfactual",{"title":356,"draft":120,"path":357,"stem":358,"children":359,"page":120},"ออเดอร์","\u002Fdocs\u002Ffeatures\u002Forders","docs\u002F02.features\u002F06.orders",[360,364,369],{"title":356,"path":361,"stem":362,"draft":120,"icon":363},"\u002Fdocs\u002Ffeatures\u002Forders\u002Forders","docs\u002F02.features\u002F06.orders\u002F01.orders","i-material-symbols-receipt-long-rounded",{"title":365,"path":366,"stem":367,"draft":120,"icon":368},"Reconciliation","\u002Fdocs\u002Ffeatures\u002Forders\u002Freconciliation","docs\u002F02.features\u002F06.orders\u002F02.reconciliation","i-material-symbols-balance",{"title":370,"path":371,"stem":372,"draft":120,"icon":373},"ใบปะหน้าพัสดุ","\u002Fdocs\u002Ffeatures\u002Forders\u002Fshipping-labels","docs\u002F02.features\u002F06.orders\u002F03.shipping-labels","i-material-symbols-local-shipping-rounded",{"title":375,"draft":120,"path":376,"stem":377,"children":378},"การเติบโต","\u002Fdocs\u002Fgrowth","docs\u002F03.growth\u002Findex",[379,380,403,467,491],{"title":119,"path":376,"stem":377,"draft":120},{"title":381,"draft":120,"path":382,"stem":383,"children":384,"page":120},"Actions","\u002Fdocs\u002Fgrowth\u002Factions","docs\u002F03.growth\u002F01.actions",[385,390,394,399],{"title":386,"path":387,"stem":388,"draft":120,"icon":389},"Actions คืออะไร","\u002Fdocs\u002Fgrowth\u002Factions\u002Fwhat-are-actions","docs\u002F03.growth\u002F01.actions\u002F01.what-are-actions","i-material-symbols-app-spark-rounded",{"title":391,"path":392,"stem":393,"draft":120},"ขั้นตอนของ Action","\u002Fdocs\u002Fgrowth\u002Factions\u002Faction-flow","docs\u002F03.growth\u002F01.actions\u002F02.action-flow",{"title":395,"path":396,"stem":397,"draft":120,"icon":398},"Deployed และ Dismissed","\u002Fdocs\u002Fgrowth\u002Factions\u002Fdeployed-and-dismissed","docs\u002F03.growth\u002F01.actions\u002F03.deployed-and-dismissed","i-material-symbols-published-with-changes-rounded",{"title":400,"path":401,"stem":402,"draft":120,"icon":301},"ผลลัพธ์คำนวณอย่างไร","\u002Fdocs\u002Fgrowth\u002Factions\u002Fresults","docs\u002F03.growth\u002F01.actions\u002F04.results",{"title":404,"draft":120,"path":405,"stem":406,"children":407,"icon":409},"ประเภทของ Action","\u002Fdocs\u002Fgrowth\u002Faction-types","docs\u002F03.growth\u002F02.action-types\u002Findex",[408,410,415,420,424,429,434,439,444,448,453,458,463],{"title":119,"path":405,"stem":406,"draft":120,"icon":409},"i-material-symbols-format-list-bulleted-rounded",{"title":411,"path":412,"stem":413,"draft":120,"icon":414},"Price buffer","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fprice-buffer","docs\u002F03.growth\u002F02.action-types\u002F01.price-buffer","i-material-symbols-money-range-rounded",{"title":416,"path":417,"stem":418,"draft":120,"icon":419},"Commission adjust","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fcommission-adjust","docs\u002F03.growth\u002F02.action-types\u002F02.commission-adjust","i-material-symbols-percent-discount-rounded",{"title":421,"path":422,"stem":423,"draft":120,"icon":210},"Variant merge","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fvariant-merge","docs\u002F03.growth\u002F02.action-types\u002F03.variant-merge",{"title":425,"path":426,"stem":427,"draft":120,"icon":428},"Target ROAS","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Ftarget-roas","docs\u002F03.growth\u002F02.action-types\u002F04.target-roas","i-material-symbols-target",{"title":430,"path":431,"stem":432,"draft":120,"icon":433},"Bundle Deal","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fbundle-deal","docs\u002F03.growth\u002F02.action-types\u002F05.bundle-deal","i-material-symbols-category-rounded",{"title":435,"path":436,"stem":437,"draft":120,"icon":438},"Product Boost","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fproduct-boost","docs\u002F03.growth\u002F02.action-types\u002F06.product-boost","i-material-symbols-electric-bolt-rounded",{"title":440,"path":441,"stem":442,"draft":120,"icon":443},"การลงทะเบียนแคมเปญ","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fcampaign-enrollment","docs\u002F03.growth\u002F02.action-types\u002F07.campaign-enrollment","i-material-symbols-play-arrow-rounded",{"title":445,"path":446,"stem":447,"draft":120,"icon":350},"การปรับแต่งโฆษณา","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fad-adjustment","docs\u002F03.growth\u002F02.action-types\u002F08.ad-adjustment",{"title":449,"path":450,"stem":451,"draft":120,"icon":452},"SEO","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fseo","docs\u002F03.growth\u002F02.action-types\u002F09.seo","i-material-symbols-category-search-rounded",{"title":454,"path":455,"stem":456,"draft":120,"icon":457},"Add-on Deal","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fadd-on-deal","docs\u002F03.growth\u002F02.action-types\u002F10.add-on-deal","i-material-symbols-add-box-rounded",{"title":459,"path":460,"stem":461,"draft":120,"icon":462},"Stock Up","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fstock-up","docs\u002F03.growth\u002F02.action-types\u002F11.stock-up","i-material-symbols-inventory-rounded",{"title":464,"path":465,"stem":466,"draft":120,"icon":428},"TikTok Target ROAS","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Ftiktok-target-roas","docs\u002F03.growth\u002F02.action-types\u002F12.tiktok-target-roas",{"title":468,"draft":120,"path":469,"stem":470,"children":471,"page":120},"โฆษณา","\u002Fdocs\u002Fgrowth\u002Fads","docs\u002F03.growth\u002F03.ads",[472,477,481,486],{"title":473,"path":474,"stem":475,"draft":120,"icon":476},"การอ่านแผนภูมิ Sankey","\u002Fdocs\u002Fgrowth\u002Fads\u002Freading-the-sankey","docs\u002F03.growth\u002F03.ads\u002F01.reading-the-sankey","i-material-symbols-schema-rounded",{"title":478,"path":479,"stem":480,"draft":120,"icon":168},"Cannibalization","\u002Fdocs\u002Fgrowth\u002Fads\u002Fcannibalization","docs\u002F03.growth\u002F03.ads\u002F02.cannibalization",{"title":482,"path":483,"stem":484,"draft":120,"icon":485},"Meta (Facebook) Ads","\u002Fdocs\u002Fgrowth\u002Fads\u002Fmeta-ads","docs\u002F03.growth\u002F03.ads\u002F03.meta-ads","i-simple-icons-meta",{"title":487,"path":488,"stem":489,"draft":120,"icon":490},"กำไรจาก CPAS","\u002Fdocs\u002Fgrowth\u002Fads\u002Fcpas-profit","docs\u002F03.growth\u002F03.ads\u002F04.cpas-profit","i-material-symbols-hub-rounded",{"title":492,"draft":120,"path":493,"stem":494,"children":495,"icon":173},"Optimization groups","\u002Fdocs\u002Fgrowth\u002Foptimization-groups","docs\u002F03.growth\u002F04.optimization-groups\u002Findex",[496,497,502,507,512,517,522,527,532,537,542,547,552,557],{"title":119,"path":493,"stem":494,"draft":120,"icon":173},{"title":498,"path":499,"stem":500,"draft":120,"icon":501},"สร้างกลุ่ม","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fcreating-a-group","docs\u002F03.growth\u002F04.optimization-groups\u002F01.creating-a-group","i-lucide-plus",{"title":503,"path":504,"stem":505,"draft":120,"icon":506},"การตั้งค่าโดยรวม","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fglobal-settings","docs\u002F03.growth\u002F04.optimization-groups\u002F02.global-settings","i-lucide-settings-2",{"title":508,"path":509,"stem":510,"draft":120,"icon":511},"งบและขีดจำกัด","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fbudget-and-limits","docs\u002F03.growth\u002F04.optimization-groups\u002F03.budget-and-limits","i-lucide-wallet",{"title":513,"path":514,"stem":515,"draft":120,"icon":516},"เลือกเป้าหมาย","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fchoosing-an-objective","docs\u002F03.growth\u002F04.optimization-groups\u002F05.choosing-an-objective","i-lucide-target",{"title":518,"path":519,"stem":520,"draft":120,"icon":521},"เงื่อนไข","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fconstraints","docs\u002F03.growth\u002F04.optimization-groups\u002F06.constraints","i-lucide-shield-check",{"title":523,"path":524,"stem":525,"draft":120,"icon":526},"การกระจายงบ","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fallocation-preference","docs\u002F03.growth\u002F04.optimization-groups\u002F07.allocation-preference","i-lucide-sliders-horizontal",{"title":528,"path":529,"stem":530,"draft":120,"icon":531},"แผนรายเดือน","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fmonthly-plan","docs\u002F03.growth\u002F04.optimization-groups\u002F09.monthly-plan","i-lucide-calendar-days",{"title":533,"path":534,"stem":535,"draft":120,"icon":536},"ตารางเวลาบนไทม์ไลน์","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fschedule","docs\u002F03.growth\u002F04.optimization-groups\u002F10.schedule","i-lucide-clock",{"title":538,"path":539,"stem":540,"draft":120,"icon":541},"กฎระบบอัตโนมัติ","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fautomation","docs\u002F03.growth\u002F04.optimization-groups\u002F11.automation","i-lucide-workflow",{"title":543,"path":544,"stem":545,"draft":120,"icon":546},"จัดการแคมเปญในกลุ่ม","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fmanaging-campaigns","docs\u002F03.growth\u002F04.optimization-groups\u002F12.managing-campaigns","i-lucide-list-checks",{"title":548,"path":549,"stem":550,"draft":120,"icon":551},"รอบการปรับงบทำงานอย่างไร","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fdaily-run","docs\u002F03.growth\u002F04.optimization-groups\u002F13.daily-run","i-lucide-refresh-cw",{"title":553,"path":554,"stem":555,"draft":120,"icon":556},"เมื่อโมเดลโฆษณากำลังอัปเดต","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fmodel-training","docs\u002F03.growth\u002F04.optimization-groups\u002F14.model-training","i-lucide-brain-circuit",{"title":558,"path":559,"stem":560,"draft":120,"icon":561},"อภิธานศัพท์","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fglossary","docs\u002F03.growth\u002F04.optimization-groups\u002F16.glossary","i-lucide-book-a",{"title":563,"draft":120,"path":564,"stem":565,"children":566},"AI และ API","\u002Fdocs\u002Fai-and-api","docs\u002F04.ai-and-api\u002Findex",[567,568,608],{"title":119,"path":564,"stem":565,"draft":120},{"title":42,"draft":120,"path":43,"stem":569,"children":570,"icon":572},"docs\u002F04.ai-and-api\u002F01.assistants\u002Findex",[571,573,578,583,588,593,598,603],{"title":119,"path":43,"stem":569,"draft":120,"icon":572},"i-material-symbols-smart-toy-rounded",{"title":574,"path":575,"stem":576,"draft":120,"icon":577},"เชื่อมต่อกับ ChatGPT","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fconnect-chatgpt","docs\u002F04.ai-and-api\u002F01.assistants\u002F01.connect-chatgpt","i-simple-icons-openai",{"title":579,"path":580,"stem":581,"draft":120,"icon":582},"เชื่อมต่อกับ Claude","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fconnect-claude","docs\u002F04.ai-and-api\u002F01.assistants\u002F02.connect-claude","i-simple-icons-claude",{"title":584,"path":585,"stem":586,"draft":120,"icon":587},"Native playbooks","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fplaybooks","docs\u002F04.ai-and-api\u002F01.assistants\u002F03.playbooks","i-material-symbols-route-rounded",{"title":589,"path":590,"stem":591,"draft":120,"icon":592},"คลัง prompt","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fprompt-library","docs\u002F04.ai-and-api\u002F01.assistants\u002F04.prompt-library","i-material-symbols-forum-rounded",{"title":594,"path":595,"stem":596,"draft":120,"icon":597},"MCP tool catalog","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Ftool-catalog","docs\u002F04.ai-and-api\u002F01.assistants\u002F05.tool-catalog","i-material-symbols-build-rounded",{"title":599,"path":600,"stem":601,"draft":120,"icon":602},"สิทธิ์และความปลอดภัย","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fusage-and-safety","docs\u002F04.ai-and-api\u002F01.assistants\u002F06.usage-and-safety","i-material-symbols-health-and-safety-rounded",{"title":604,"path":605,"stem":606,"draft":120,"icon":607},"ตัวอย่าง MCP แบบครบขั้นตอน","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fworked-examples","docs\u002F04.ai-and-api\u002F01.assistants\u002F07.worked-examples","i-material-symbols-menu-book-rounded",{"title":45,"draft":120,"path":609,"stem":610,"children":611,"page":120},"\u002Fdocs\u002Fai-and-api\u002Fapi","docs\u002F04.ai-and-api\u002F02.api",[612,615,620,625,630,635],{"title":126,"path":46,"stem":613,"draft":120,"icon":614},"docs\u002F04.ai-and-api\u002F02.api\u002F01.getting-started","i-material-symbols-key-rounded",{"title":616,"path":617,"stem":618,"draft":120,"icon":619},"ความปลอดภัยและขีดจำกัดของ API","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fsecurity","docs\u002F04.ai-and-api\u002F02.api\u002F02.security","i-material-symbols-verified-user-rounded",{"title":621,"path":622,"stem":623,"draft":120,"icon":624},"Endpoints: สินค้าและออเดอร์","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fproducts-and-orders","docs\u002F04.ai-and-api\u002F02.api\u002F03.products-and-orders","i-material-symbols-package-2-rounded",{"title":626,"path":627,"stem":628,"draft":120,"icon":629},"Endpoints: การแยกรายละเอียดทางการเงิน","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Ffinancial-breakdown","docs\u002F04.ai-and-api\u002F02.api\u002F04.financial-breakdown","i-material-symbols-account-balance-rounded",{"title":631,"path":632,"stem":633,"draft":120,"icon":634},"Endpoints: ข้อมูลแพลตฟอร์มดิบ","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fplatform-data","docs\u002F04.ai-and-api\u002F02.api\u002F05.platform-data","i-material-symbols-database-rounded",{"title":636,"path":637,"stem":638,"draft":120,"icon":639},"Endpoints: Actions และคำแนะนำ","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Frecommendations","docs\u002F04.ai-and-api\u002F02.api\u002F06.recommendations","i-material-symbols-recommend-rounded",{"title":641,"draft":120,"path":642,"stem":643,"children":644},"การดูแลระบบ","\u002Fdocs\u002Fadministration","docs\u002F05.administration\u002Findex",[645,646,666],{"title":119,"path":642,"stem":643,"draft":120},{"title":647,"draft":120,"path":648,"stem":649,"children":650,"page":120},"ทีมและการเข้าถึง","\u002Fdocs\u002Fadministration\u002Fteam-and-access","docs\u002F05.administration\u002F01.team-and-access",[651,656,661],{"title":652,"path":653,"stem":654,"draft":120,"icon":655},"ทีมและบทบาท","\u002Fdocs\u002Fadministration\u002Fteam-and-access\u002Fteam-and-roles","docs\u002F05.administration\u002F01.team-and-access\u002F01.team-and-roles","i-material-symbols-group-rounded",{"title":657,"path":658,"stem":659,"draft":120,"icon":660},"การเพิ่มสมาชิก","\u002Fdocs\u002Fadministration\u002Fteam-and-access\u002Fadding-teammates","docs\u002F05.administration\u002F01.team-and-access\u002F02.adding-teammates","i-material-symbols-person-add-rounded",{"title":662,"path":663,"stem":664,"draft":120,"icon":665},"การจัดการการเข้าถึง","\u002Fdocs\u002Fadministration\u002Fteam-and-access\u002Fmanaging-access","docs\u002F05.administration\u002F01.team-and-access\u002F03.managing-access","i-material-symbols-admin-panel-settings-rounded",{"title":667,"draft":120,"path":668,"stem":669,"children":670,"page":120},"บัญชี","\u002Fdocs\u002Fadministration\u002Faccount","docs\u002F05.administration\u002F02.account",[671,673],{"title":48,"path":49,"stem":672,"draft":120,"icon":490},"docs\u002F05.administration\u002F02.account\u002F01.open-platform",{"title":674,"path":675,"stem":676,"draft":120,"icon":363},"VAT","\u002Fdocs\u002Fadministration\u002Faccount\u002Fvat","docs\u002F05.administration\u002F02.account\u002F02.vat",{"id":678,"title":599,"body":679,"description":2216,"draft":120,"draftReason":2217,"extension":2218,"layout":2217,"meta":2219,"navigation":2220,"path":600,"platforms":2217,"rawbody":2221,"seo":2222,"stem":601,"__hash__":2223},"docs_th\u002Fdocs\u002F04.ai-and-api\u002F01.assistants\u002F06.usage-and-safety.md",{"type":680,"value":681,"toc":2191},"minimark",[682,690,696,701,738,741,963,966,973,977,983,989,1005,1012,1016,1019,1032,1035,1039,1058,1061,1065,1068,1122,1129,1133,1142,1146,1157,1168,1172,1175,1179,1193,1197,1260,1270,1284,1287,1340,1343,1347,1399,1402,1409,1412,1415,1445,1458,1461,1519,1522,1526,1549,1552,1573,1577,1609,1612,1669,1794,1797,1810,1817,1820,1823,1855,1968,1971,2089,2093,2096,2144,2147,2151,2187],[683,684,685,689],"p",{},[686,687,688],"strong",{},"MCP connector ของ DataGlass เริ่มต้นด้วยการอ่านอย่างเดียว และจะอ่านได้อย่างเดียวต่อไปจนกว่าคุณจะอนุมัติสิทธิ์เขียน โดยแต่ละสิทธิ์ปลดล็อกเพียงหนึ่งด้าน"," ตั้งแต่วันที่ 3 สิงหาคม 2026 connector เขียนข้อมูลได้ ผู้ช่วยที่มีสิทธิ์ตรงกันจะนำ price tier draft ไปใช้ เปลี่ยนงบของ ads group เขียน COGS ยกเลิกออเดอร์ หรือจัดส่งพัสดุได้ ไม่มีสิทธิ์ใดถูกให้โดยอัตโนมัติ ทุกสิทธิ์ผ่านการอนุมัติของคุณบนหน้าจอ consent และเครื่องมือทุกตัวที่ไปถึง Marketplace จะประกาศตัวเองว่าเป็น destructive เพื่อให้ผู้ช่วยถามก่อนลงมือ",[691,692,693],"callout",{"icon":521},[683,694,695],{},"เอกสาร DataGlass รุ่นก่อนหน้าระบุว่า connector อ่านได้อย่างเดียว ข้อความนั้นถูกต้องจนถึงวันที่ 3 สิงหาคม 2026 และไม่เป็นจริงอีกต่อไป หน้านี้คือข้อกำหนดปัจจุบัน",[697,698,700],"h2",{"id":699},"โมเดลสิทธิ์ของ-mcp-dataglass-สี่ชั้น","โมเดลสิทธิ์ของ MCP DataGlass สี่ชั้น",[702,703,704,711,717,732],"ol",{},[705,706,707,710],"li",{},[686,708,709],{},"ปฏิเสธเป็นค่าเริ่มต้น"," connector ที่เพิ่งออกให้จะมีเพียงสิทธิ์อ่านพื้นฐาน ใช้รายงาน เปรียบเทียบ วิเคราะห์ แนะนำ และจำลองได้ แต่เปลี่ยนอะไรไม่ได้เลย",[705,712,713,716],{},[686,714,715],{},"สิทธิ์เขียนแยกตามด้าน"," ความสามารถในการเขียนมาจาก OAuth scope ที่คุณอนุมัติเท่านั้น และแต่ละสิทธิ์ครอบคลุมเพียงหนึ่งด้าน ผู้ขายจึงให้ agent ดูแลค่าโฆษณาได้โดยไม่ต้องให้แตะราคา",[705,718,719,722,723,727,728,731],{},[686,720,721],{},"การยืนยันก่อนใช้เครื่องมือ destructive"," เครื่องมือที่เขียนข้อมูลทุกตัวประกาศ ",[724,725,726],"code",{},"readOnlyHint=false"," และ ",[724,729,730],{},"destructiveHint=true"," ซึ่งเป็นเหตุให้ Claude และ ChatGPT ถามก่อนทำงาน คำอธิบายของเครื่องมือจะบอกชัดว่าอะไรจะเปลี่ยน และถ้ามีเครื่องมือ preview หรือเครื่องมืออ่านย้อนกลับ ก็จะระบุชื่อไว้ให้เรียกก่อน",[705,733,734,737],{},[686,735,736],{},"เขียนผ่านขั้นตอนของ DataGlass เท่านั้น"," เครื่องมือเขียนทำงานผ่านขั้นตอนด้านราคา โฆษณา สินค้า และการจัดส่งของ DataGlass เอง ซึ่งเป็นขั้นตอนที่คำนวณ margin ที่จะได้และบันทึกสถานะสำหรับย้อนกลับ ส่วนการส่งค่าตรงเข้า Marketplace ไม่ได้เปิดเป็นเครื่องมือเลย",[697,739,740],{"id":740},"สิทธิ์เขียนเก้าด้าน",[742,743,744,760],"table",{},[745,746,747],"thead",{},[748,749,750,754,757],"tr",{},[751,752,753],"th",{},"สิทธิ์",[751,755,756],{},"ปลดล็อกอะไร",[751,758,759],{},"ตัวอย่างเครื่องมือ",[761,762,763,789,813,837,861,882,903,924,945],"tbody",{},[748,764,765,771,774],{},[766,767,768],"td",{},[724,769,770],{},"PAT_PRICING_WRITE",[766,772,773],{},"price tier draft, การนำ target margin ไปใช้, margin defense และ price buffer",[766,775,776,779,780,779,783,779,786],{},[724,777,778],{},"apply_price_tier_draft",", ",[724,781,782],{},"apply_shopee_target_margin",[724,784,785],{},"apply_margin_defense_action",[724,787,788],{},"rollback_price_tier_draft",[748,790,791,796,799],{},[766,792,793],{},[724,794,795],{},"PAT_ADS_WRITE",[766,797,798],{},"ads optimization group, งบ, target ROAS และ boost",[766,800,801,779,804,779,807,779,810],{},[724,802,803],{},"create_ads_group",[724,805,806],{},"disable_ads_group_optimization",[724,808,809],{},"apply_shopee_target_roas",[724,811,812],{},"apply_tiktok_ad_budget",[748,814,815,820,823],{},[766,816,817],{},[724,818,819],{},"PAT_CATALOG_WRITE",[766,821,822],{},"COGS, สต็อก, ชื่อรายการสินค้า, การผูก canonical และการสร้างสินค้า",[766,824,825,779,828,779,831,779,834],{},[724,826,827],{},"apply_shopee_cogs",[724,829,830],{},"apply_shopee_stock",[724,832,833],{},"create_canonical_product",[724,835,836],{},"copy_product_to_shops",[748,838,839,844,847],{},[766,840,841],{},[724,842,843],{},"PAT_RETURNS_WRITE",[766,845,846],{},"การตัดสินใจเรื่องคืนสินค้าและคืนเงิน",[766,848,849,779,852,779,855,779,858],{},[724,850,851],{},"approve_tiktok_return",[724,853,854],{},"reject_tiktok_return",[724,856,857],{},"decide_lazada_refund",[724,859,860],{},"confirm_shopee_return",[748,862,863,868,871],{},[766,864,865],{},[724,866,867],{},"PAT_ORDERS_WRITE",[766,869,870],{},"การจัดการออเดอร์และเอกสาร",[766,872,873,779,876,779,879],{},[724,874,875],{},"cancel_shopee_order",[724,877,878],{},"split_shopee_order",[724,880,881],{},"set_shopee_order_note",[748,883,884,889,892],{},[766,885,886],{},[724,887,888],{},"PAT_LOGISTICS_WRITE",[766,890,891],{},"พัสดุ การจัดส่ง และ AWB",[766,893,894,779,897,779,900],{},[724,895,896],{},"ship_tiktok_package",[724,898,899],{},"batch_ship_tiktok_packages",[724,901,902],{},"print_shopee_airway_bills",[748,904,905,910,913],{},[766,906,907],{},[724,908,909],{},"PAT_RECOMMENDATION_WRITE",[766,911,912],{},"การจัดการ Actions ของ DataGlass",[766,914,915,779,918,779,921],{},[724,916,917],{},"reject_recommendation",[724,919,920],{},"stop_recommendation",[724,922,923],{},"rollback_recommendation",[748,925,926,931,934],{},[766,927,928],{},[724,929,930],{},"PAT_INVENTORY_WRITE",[766,932,933],{},"การแจ้งเตือน ใบสั่งซื้อ และการตั้งค่า stock sync",[766,935,936,779,939,779,942],{},[724,937,938],{},"acknowledge_inventory_alert",[724,940,941],{},"log_purchase_order",[724,943,944],{},"set_shopee_stock_sync",[748,946,947,952,955],{},[766,948,949],{},[724,950,951],{},"PAT_REPORTS_WRITE",[766,953,954],{},"การจัดทำรายงานผลการทำงานของโฆษณา",[766,956,957,779,960],{},[724,958,959],{},"generate_ads_performance_report",[724,961,962],{},"publish_ads_report_workspace",[683,964,965],{},"การตัดสินใจเรื่องคืนสินค้าและคืนเงินอยู่ภายใต้สิทธิ์ของตัวเอง ไม่รวมอยู่กับออเดอร์หรือการจัดส่ง เพราะเป็นการเคลื่อนย้ายเงินจริงและแพลตฟอร์มจะไม่ย้อนให้",[683,967,968,969,972],{},"การให้สิทธิ์เขียนไม่ได้ขยายสิทธิ์ของคุณใน DataGlass สิทธิ์ ",[724,970,971],{},"PAT_*"," ปลดล็อกเฉพาะประตูการเขียนของ agent เท่านั้น ส่วนสิทธิ์ระดับ organization การตรวจความเป็นเจ้าของร้าน และกฎเรื่องข้อมูลการเงินที่อ่อนไหว ยังทำงานทุกครั้งเหมือนที่ทำงานในแอป",[697,974,976],{"id":975},"การเขียนผ่านขั้นตอนของ-dataglass-เทียบกับการส่งค่าตรงเข้า-marketplace","การเขียนผ่านขั้นตอนของ DataGlass เทียบกับการส่งค่าตรงเข้า Marketplace",[683,978,979,982],{},[686,980,981],{},"connector เขียนผ่าน DataGlass ไม่เคยส่งค่าตรงเข้า API ของ Marketplace"," เส้นแบ่งนี้คือสิ่งที่ตัดสินว่าความสามารถใดจะมีเป็นเครื่องมือได้บ้าง",[683,984,985,988],{},[686,986,987],{},"ทางที่ผ่านขั้นตอนของ DataGlass"," เช่น price tier draft การนำ target margin ไปใช้ และการนำคำแนะนำไปใช้ จะคำนวณ margin ที่จะได้ก่อนลงมือ บันทึกสถานะ draft หรือสถานะสำหรับย้อนกลับ และไปในทางเดียวกับส่วนอื่นของระบบราคา ตัวเลขที่คุณเห็นใน DataGlass กับตัวเลขที่ผู้ซื้อเห็นจึงตรงกันหลังจากนั้น ทางเหล่านี้คือทางที่เปิดเป็นเครื่องมือ",[683,990,991,994,995,779,998,779,1001,1004],{},[686,992,993],{},"การส่งค่าตรง"," เช่น ",[724,996,997],{},"updatePrice",[724,999,1000],{},"addDiscount",[724,1002,1003],{},"updateStock"," และการเรียก partner API ของ voucher, Bundle Deal, flexi combo และการส่งฟรี จะยิงค่าเข้า Marketplace แล้วจบ ทำให้ DataGlass ถือราคาหนึ่งและ Marketplace ถืออีกราคาหนึ่ง handler เหล่านั้นมีไว้ให้แอปใช้เอง และตั้งใจไม่ให้ agent เข้าถึง",[683,1006,1007,1008,1011],{},"ผลที่ตามมาซึ่งต้องบอกกันตรงๆ คือ ",[686,1009,1010],{},"voucher, Bundle Deal, flexi combo และแคมเปญส่งฟรี ไม่มีทางที่ผ่านขั้นตอนของ DataGlass รองรับ ความสามารถเหล่านี้จึงไม่มีอยู่ในพื้นผิวของ agent เลย"," ผู้ช่วยสร้างหรือแก้ไขให้ไม่ได้ไม่ว่าจะมีสิทธิ์ใด ต้องทำในแอปหรือใน Seller Center",[697,1013,1015],{"id":1014},"เครื่องมือสองตัวที่สร้างรายการสินค้าจริงบน-marketplace","เครื่องมือสองตัวที่สร้างรายการสินค้าจริงบน Marketplace",[683,1017,1018],{},"เครื่องมือด้านสินค้าสองตัวเรียก API สร้างสินค้าของแพลตฟอร์มโดยตรง และทำให้เกิดรายการสินค้าที่ผู้ซื้อมองเห็นได้",[1020,1021,1022,1027],"ul",{},[705,1023,1024,1026],{},[724,1025,833],{}," สร้างรายการสินค้าใหม่บนทุกร้าน Shopee, Lazada และ TikTok Shop ที่เลือก แล้วผูกเข้ากับสินค้า canonical เดียว",[705,1028,1029,1031],{},[724,1030,836],{}," สร้างรายการสินค้าเดิมขึ้นใหม่เป็นรายการจริงบนร้านปลายทางแต่ละร้าน รวมถึงข้ามแพลตฟอร์ม",[683,1033,1034],{},"ทั้งสองตัวถูกระบุว่าเป็น destructive ด้วยเหตุผลนี้ และไม่ใช่การสร้างแถว canonical เฉยๆ ควรอ่าน payload ทั้งชุด ทั้งร้าน ชื่อ ราคา และสต็อก ก่อนอนุมัติ",[697,1036,1038],{"id":1037},"สองรายการวิเคราะห์กำไรที่ถอดออกจากพื้นผิวของ-agent","สองรายการวิเคราะห์กำไรที่ถอดออกจากพื้นผิวของ agent",[683,1040,1041,1044,1045,1048,1049,1053,1054,1057],{},[686,1042,1043],{},"คิวตรวจสอบราคาตาม price tier"," ของ Shopee และ ",[686,1046,1047],{},"รายการแคมเปญที่ขาดทุนตาม profit-adjusted ROAS"," ถูกถอดออกจากพื้นผิวเครื่องมือโดยตั้งใจเมื่อวันที่ 3 สิงหาคม 2026 เพราะการอยู่ในรายการเหล่านั้น ",[1050,1051,1052],"em",{},"คือ"," สัญญาณทางการเงินในตัวมันเอง การอยู่ในคิวหมายถึง margin ต่ำกว่าเกณฑ์ และการอยู่ในรายการที่ขาดทุนหมายถึงกำไรจริงติดลบ ต่อให้บังค่าตัวเลขไว้ ข้อมูลนี้ก็ยังรั่วถึงสมาชิกทีมที่ไม่มีสิทธิ์ ",[724,1055,1056],{},"VIEW_SENSITIVE_FINANCIAL"," อยู่ดี และการเปิดเป็นเครื่องมือจะทำให้ไล่ดูได้ครบทุกร้านในการเรียกครั้งเดียว",[683,1059,1060],{},"ทั้งสองรายการยังใช้งานได้ตามปกติในแอป DataGlass และผ่าน REST API ภายใต้สิทธิ์ระดับหน้าเดิม มีเพียงพื้นผิวของ agent เท่านั้นที่แคบกว่า",[697,1062,1064],{"id":1063},"api-key-จากในแอปอ่านได้อย่างเดียว-ส่วน-oauth-connector-ได้สิทธิ์ตามที่คุณอนุมัติ","API key จากในแอปอ่านได้อย่างเดียว ส่วน OAuth connector ได้สิทธิ์ตามที่คุณอนุมัติ",[683,1066,1067],{},"การมอบข้อมูลรับรองของ DataGlass ให้ agent มีสองทาง และทั้งสองทางต่างกัน",[742,1069,1070,1083],{},[745,1071,1072],{},[748,1073,1074,1077,1080],{},[751,1075,1076],{},"ข้อมูลรับรอง",[751,1078,1079],{},"ออกให้อย่างไร",[751,1081,1082],{},"ความสามารถในการเขียน",[761,1084,1085,1102],{},[748,1086,1087,1093,1096],{},[766,1088,1089,1090],{},"API key จาก ",[686,1091,1092],{},"ตั้งค่า → API keys",[766,1094,1095],{},"หน้าจอในแอป ซึ่งไม่มีตัวเลือกสิทธิ์ให้เลือก",[766,1097,1098,1101],{},[686,1099,1100],{},"อ่านอย่างเดียวโดยโครงสร้าง"," key ถูกสร้างด้วยสิทธิ์อ่านพื้นฐานเท่านั้น",[748,1103,1104,1110,1116],{},[766,1105,1106,1109],{},[686,1107,1108],{},"OAuth connector"," ใน ChatGPT หรือ Claude",[766,1111,1112,1113],{},"หน้าจอ consent ที่ ",[724,1114,1115],{},"\u002Fconnect",[766,1117,1118,1119,1121],{},"ได้สิทธิ์ ",[724,1120,971],{}," ตามที่แสดงบนหน้าจอนั้นและคุณอนุมัติเท่านั้น",[683,1123,1124,1125,1128],{},"ดังนั้น token ",[724,1126,1127],{},"dg_pat_"," ที่คุณวางไว้ในสคริปต์จะเขียนข้อมูลไม่ได้ แม้ connector ที่คุณอนุมัติใน Claude อาจเขียนได้ก็ตาม เวลามีคนบอกว่า \"API อ่านได้อย่างเดียว\" มักหมายถึงความต่างข้อนี้",[697,1130,1132],{"id":1131},"แผนกำหนดอะไรสำหรับ-mcp-และ-api-key","แผนกำหนดอะไรสำหรับ MCP และ API key",[683,1134,1135,1136,1141],{},"การเชื่อมต่อผู้ช่วย AI ผ่าน MCP ใช้ได้ในทุกแผน สิ่งที่แผนกำหนดคือเครื่องมือเข้าถึงอะไรได้บ้าง: เครื่องมือที่อ่านหรือแก้ไขฟีเจอร์ของ Pro (Actions, กลุ่มเพิ่มประสิทธิภาพโฆษณาและกฎอัตโนมัติ, จังหวะการประมูล, price elasticity) จะตอบผู้เรียกที่อยู่ต่ำกว่าระดับ Pro ด้วยผลลัพธ์แบบปฏิเสธตามแผน ไม่ใช่ผลลัพธ์ของเครื่องมือ ส่วนการสร้าง Personal Access Token (API key) ต้องใช้ ",[686,1137,1138],{},[724,1139,1140],{},"PlanTier.PRO"," อย่าอธิบายว่า API key หรือเครื่องมือ MCP ทุกตัวรวมอยู่ในทุกแผน",[697,1143,1145],{"id":1144},"rate-limit-และกฎ-fail-closed-สำหรับ-key-ที่เขียนได้","rate limit และกฎ fail closed สำหรับ key ที่เขียนได้",[683,1147,1148,1149,1152,1153,1156],{},"แต่ละ key ถูกจำกัดที่ ",[686,1150,1151],{},"60 คำขอแบบ burst และ 1 คำขอต่อวินาทีแบบต่อเนื่อง"," โดยนับแยกรายคีย์ agent ที่ทำงานผิดปกติจึงไม่ทำให้แดชบอร์ดของคุณใช้ไม่ได้ การเรียกภายในที่เครื่องมือ MCP กระจายออกไปไม่กินโควตาเพิ่ม เพราะการเรียก ",[724,1154,1155],{},"\u002Fmcp"," ชั้นนอกใช้ไปแล้วหนึ่งครั้ง",[683,1158,1159,1160,1163,1164,1167],{},"เมื่อตัวจำกัดอัตราเองใช้งานไม่ได้ พฤติกรรมจะแยกตามความสามารถของ key ",[686,1161,1162],{},"key ที่อ่านอย่างเดียวจะ fail open"," เพราะ token ผ่านการตรวจแล้ว และเหตุขัดข้องไม่ควรทำให้การอ่านล่มทั้งหมด ส่วน ",[686,1165,1166],{},"key ที่เขียนได้จะ fail closed"," เพราะ agent ที่วนเรียกเครื่องมือเขียนโดยไม่มีตัวจำกัดจะเปลี่ยนราคาจริงและค่าโฆษณาจริง ซึ่งไม่คุ้มกับการรักษาให้การอ่านทำงานต่อไปได้",[697,1169,1171],{"id":1170},"การแยกข้อมูลระหว่างผู้ใช้ในพื้นผิวของ-api-key","การแยกข้อมูลระหว่างผู้ใช้ในพื้นผิวของ API key",[683,1173,1174],{},"การไล่ตรวจ endpoint ทุกตัวที่ API key เข้าถึงได้ทั้งหมด 625 handler ไม่พบการอ่านหรือการเขียนข้ามผู้ใช้เลย การเรียกเครื่องมือทุกครั้งถูกส่งเป็นคำขอที่ยืนยันตัวตนด้วย token ของคุณเอง การตรวจความเป็นเจ้าของจึงทำงานเหมือนคำขอที่มาจากแอปทุกประการ",[697,1176,1178],{"id":1177},"การบังข้อมูลการเงินที่อ่อนไหวยังทำงานข้ามฝั่ง-agent","การบังข้อมูลการเงินที่อ่อนไหวยังทำงานข้ามฝั่ง agent",[683,1180,1181,1182,1184,1185,1188,1189,1192],{},"ค่าที่ถูกซ่อนด้วย ",[724,1183,1056],{}," จะไปถึงผู้ช่วยในรูป string ",[724,1186,1187],{},"\"***\""," หรือเป็น ",[724,1190,1191],{},"null"," เมื่อเป็น object หรือ list ไม่ใช่ตัวเลขจริง ให้แสดงเป็นฟิลด์ที่ถูกล็อก อย่าแปลงเป็นศูนย์ อย่าถือว่าข้อมูลหาย และอย่าเรียกซ้ำเพื่อเลี่ยงสิทธิ์ ในกรณีที่ลำดับการเรียงเองก็เปิดเผยค่าที่ถูกบัง ระบบจะตัดการเรียงนั้นออกด้วย",[697,1194,1196],{"id":1195},"endpoint-สำหรับ-production","endpoint สำหรับ production",[742,1198,1199,1209],{},[745,1200,1201],{},[748,1202,1203,1206],{},[751,1204,1205],{},"ใช้ทำอะไร",[751,1207,1208],{},"URL",[761,1210,1211,1220,1230,1240,1250],{},[748,1212,1213,1216],{},[766,1214,1215],{},"แอป DataGlass",[766,1217,1218],{},[724,1219,65],{},[748,1221,1222,1225],{},[766,1223,1224],{},"หน้าจอ consent ของ connector",[766,1226,1227],{},[724,1228,1229],{},"https:\u002F\u002Fapp.dataglasslabs.com\u002Fconnect",[748,1231,1232,1235],{},[766,1233,1234],{},"แผนและการกู้คืนการเรียกเก็บเงิน",[766,1236,1237],{},[724,1238,1239],{},"https:\u002F\u002Fapp.dataglasslabs.com\u002Fopen\u002Fbilling",[748,1241,1242,1245],{},[766,1243,1244],{},"MCP endpoint",[766,1246,1247],{},[724,1248,1249],{},"https:\u002F\u002Fprod-api.dataglasslabs.com\u002Fmcp",[748,1251,1252,1255],{},[766,1253,1254],{},"OAuth metadata",[766,1256,1257],{},[724,1258,1259],{},"https:\u002F\u002Fprod-api.dataglasslabs.com\u002F.well-known\u002F...",[683,1261,1262,1263,1266,1267,1269],{},"ผลการค้นหาสินค้าอาจมีลิงก์แบบ relative เช่น ",[724,1264,1265],{},"\u002Fproducts?canonicalId=123"," ให้อ้างอิงกับ ",[724,1268,65],{}," ไม่ใช่ origin ของ API",[683,1271,1272,1275,1276,1279,1280,1283],{},[686,1273,1274],{},"ไม่มี OpenAPI spec ที่เปิดสาธารณะ"," spec ของ agent ถูกสร้างขึ้นภายในที่ ",[724,1277,1278],{},"\u002Fv3\u002Fapi-docs\u002Fagent"," จากกฎการเข้าถึงจริง แต่จำกัดด้วย IP allowlist และคืน 404 ต่ออินเทอร์เน็ตสาธารณะ สำหรับผู้ช่วยที่เชื่อมต่อแล้ว ",[724,1281,1282],{},"tools\u002Flist"," ตอน runtime คือข้อกำหนดที่เครื่องอ่านได้",[697,1285,1286],{"id":1286},"คำศัพท์ธุรกิจที่ใช้ในคำตอบ",[742,1288,1289,1299],{},[745,1290,1291],{},[748,1292,1293,1296],{},[751,1294,1295],{},"คำศัพท์",[751,1297,1298],{},"ความหมาย",[761,1300,1301,1309,1316,1324,1332],{},[748,1302,1303,1306],{},[766,1304,1305],{},"กำไรที่เกิดขึ้นจริง",[766,1307,1308],{},"กำไรจากข้อมูลการเงินของ Marketplace ที่ settle แล้วและปรับการยกเลิกแล้ว",[748,1310,1311,1313],{},[766,1312,170],{},[766,1314,1315],{},"ผลตอบแทนจากโฆษณาหลังหัก COGS ค่าธรรมเนียม การคืนสินค้า และการปรับจากการยกเลิก",[748,1317,1318,1321],{},[766,1319,1320],{},"payout",[766,1322,1323],{},"เงินที่ Marketplace โอนจริง ไม่เท่ากับกำไร",[748,1325,1326,1329],{},[766,1327,1328],{},"COGS ที่ประเมิน",[766,1330,1331],{},"ค่าที่ DataGlass อนุมานเมื่อไม่มีต้นทุนสินค้าที่กรอกจริง",[748,1333,1334,1337],{},[766,1335,1336],{},"คำแนะนำ",[766,1338,1339],{},"ข้อเสนอที่ตรวจได้ใน DataGlass และนำไปใช้ผ่านเครื่องมือได้เมื่อได้รับสิทธิ์เขียนด้านคำแนะนำ",[683,1341,1342],{},"อย่ารับปากว่าเป็นข้อมูลสดจาก Marketplace หรือรับประกันผลลัพธ์ในอนาคต",[697,1344,1346],{"id":1345},"ขั้นตอนการทำงานของผู้ช่วยกับคำถาม-dataglass","ขั้นตอนการทำงานของผู้ช่วยกับคำถาม DataGlass",[702,1348,1349,1367,1373,1384,1387,1390,1393,1396],{},[705,1350,1351,1352,1355,1356,779,1359,1362,1363,1366],{},"ค้นหาร้านที่เลือกด้วยเครื่องมือ ",[724,1353,1354],{},"list_*_shops"," ที่ตรงกัน ห้ามสร้าง ",[724,1357,1358],{},"shopId",[724,1360,1361],{},"sellerId"," หรือ ",[724,1364,1365],{},"region"," ขึ้นเอง",[705,1368,1369,1370],{},"คำถามแนว \"ร้านเป็นอย่างไร\" หรือ \"อะไรเปลี่ยนไป\" ให้เริ่มที่ ",[724,1371,1372],{},"diagnose_shop",[705,1374,1375,1376,1379,1380,1383],{},"อ่าน ",[724,1377,1378],{},"signals[]"," และตาม ",[724,1381,1382],{},"suggestedTool"," ของ signal เมื่อคำถามต้องใช้หลักฐานนั้นเท่านั้น",[705,1385,1386],{},"เทียบช่วงเวลาที่เทียบกันได้ และระบุช่วงเวลากับสกุลเงินท้องถิ่น",[705,1388,1389],{},"เริ่มจากปัจจัยทางธุรกิจที่ใหญ่ที่สุด ตามด้วยข้อเท็จจริงสนับสนุนไม่เกินสามข้อและขั้นตอนต่อไป",[705,1391,1392],{},"ระบุเมื่อ COGS เป็นค่าอนุมาน settlement ล่าสุดยังไม่ครบ ฟิลด์ถูกบังด้วยสิทธิ์ หรือผลลัพธ์เป็นการจำลอง",[705,1394,1395],{},"ก่อนเขียนข้อมูลทุกครั้ง ให้ระบุชื่อเครื่องมือ สิ่งที่จะถูกแตะอย่างเจาะจง และค่าปัจจุบันเทียบค่าที่เสนอ แล้วรอให้ผู้ใช้ยืนยันชัดเจน",[705,1397,1398],{},"หลังเขียนแล้ว ให้บอกว่าอะไรเปลี่ยนไปจริง และระบุชื่อเครื่องมือย้อนกลับถ้ามี",[697,1400,1401],{"id":1401},"การใช้ถ้อยคำระหว่างผลการอ่านกับการเขียน",[683,1403,1404,1405,1408],{},"ใช้คำว่า preview, จำลอง, แนะนำ หรือ ตรวจใน DataGlass สำหรับทุกสิ่งที่ผู้ช่วยเพียงอ่านหรือคำนวณจำลอง ใช้คำว่า นำไปใช้แล้ว อัปเดตแล้ว ยกเลิกแล้ว หรือ จัดส่งแล้ว ",[686,1406,1407],{},"ต่อเมื่อเครื่องมือเขียนทำงานสำเร็จแล้วเท่านั้น"," และให้ระบุชื่อเครื่องมือที่ทำ การอ้างว่าเปลี่ยนทั้งที่ไม่ได้เปลี่ยน กับการไม่รายงานว่าเปลี่ยนไปแล้ว ร้ายแรงพอกัน",[683,1410,1411],{},"ข้อควรรู้คือคำว่าย้อนกลับแทบไม่เคยหมายถึงการ undo การย้อนราคาคือการเขียนขึ้นแพลตฟอร์มชุดใหม่เพื่อคืนราคาก่อนนำไปใช้ที่บันทึกไว้ ผู้ซื้อจะเห็นราคาเปลี่ยนอีกครั้ง และบางอย่างย้อนไม่ได้เลย เช่น ออเดอร์ Shopee ที่ยกเลิกไปแล้ว หรือการคืนสินค้า TikTok Shop ที่อนุมัติไปแล้ว",[697,1413,1414],{"id":1414},"รหัสอ้างอิง",[1020,1416,1417,1429,1439,1442],{},[705,1418,1419,1420,779,1423,1362,1426],{},"ดูรหัสร้านและ region จาก ",[724,1421,1422],{},"list_shopee_shops",[724,1424,1425],{},"list_lazada_shops",[724,1427,1428],{},"list_tiktok_shops",[705,1430,1431,1432,779,1435,1438],{},"ใช้รหัสสินค้า canonical ต่อเมื่อ ",[724,1433,1434],{},"search",[724,1436,1437],{},"list_products"," หรือผลลัพธ์สินค้าอื่นคืนมาแล้วเท่านั้น",[705,1440,1441],{},"อย่าเดา Marketplace จากรูปแบบของรหัส",[705,1443,1444],{},"รหัสร้าน แคมเปญ advertiser สินค้า และ SKU ของ TikTok Shop อาจเกินช่วงจำนวนเต็มที่ JavaScript รองรับได้อย่างปลอดภัย ให้เก็บเป็น string ตลอดทางตั้งแต่ browser ถึง MCP และกลับมา",[683,1446,1447,1448,1450,1451,1454,1455,1457],{},"ขณะนี้ ",[724,1449,1372],{}," สร้าง schema จากค่า ",[724,1452,1453],{},"Long"," ใน path ของ Kotlin ให้ส่งรหัสร้าน TikTok Shop ตรงตามที่ ",[724,1456,1428],{}," คืนมา ถ้า host ที่เข้มงวดรักษาค่าไว้ไม่ได้โดยไม่แปลงเป็นตัวเลข ให้ใช้เครื่องมือภาพรวมการเงินเฉพาะของ TikTok Shop แทน",[697,1459,1460],{"id":1460},"วันที่และการเปรียบเทียบ",[742,1462,1463,1473],{},[745,1464,1465],{},[748,1466,1467,1470],{},[751,1468,1469],{},"ค่า",[751,1471,1472],{},"รูปแบบ",[761,1474,1475,1485,1503,1511],{},[748,1476,1477,1480],{},[766,1478,1479],{},"วันที่ปกติ",[766,1481,1482],{},[724,1483,1484],{},"YYYY-MM-DD",[748,1486,1487,1497],{},[766,1488,1489,1492,1493,1496],{},[724,1490,1491],{},"datadateFrom"," \u002F ",[724,1494,1495],{},"datadateTo"," ของ conversion",[766,1498,1499,1500],{},"จำนวนเต็ม ",[724,1501,1502],{},"YYYYMMDD",[748,1504,1505,1508],{},[766,1506,1507],{},"timestamp",[766,1509,1510],{},"ISO 8601",[748,1512,1513,1516],{},[766,1514,1515],{},"การเทียบค่าเริ่มต้น",[766,1517,1518],{},"ช่วงก่อนหน้าที่ยาวเท่ากันทันที",[683,1520,1521],{},"เครื่องมือ payout กรองตามวันที่ payout หรือ settlement ไม่ใช่วันที่สั่งซื้อ ค่าที่เกิดขึ้นจริงของวันใกล้ปัจจุบันอาจยังไม่ครบระหว่างที่ Marketplace ยัง settle ไม่เสร็จ ให้แสดงหมายเหตุเรื่อง settlement lag แทนการสรุปว่ายอดที่ลดลงล่าสุดเป็นผลจริง",[697,1523,1525],{"id":1524},"เงิน-vat-และ-cogs","เงิน VAT และ COGS",[1020,1527,1528,1531,1537,1543,1546],{},[705,1529,1530],{},"เงินใช้สกุลท้องถิ่นของร้าน อย่ารวมสกุลเงินต่างกันโดยไม่อธิบายวิธีรวม",[705,1532,1533,1536],{},[724,1534,1535],{},"includeVat=false"," คือมุมมอง forward VAT ตามปกติ เว้นแต่ผู้ใช้ขอเป็นอย่างอื่น",[705,1538,1539,1542],{},[724,1540,1541],{},"includeInferredCogs=true"," จะเติม COGS ที่ขาดด้วยค่าประเมินของ DataGlass",[705,1544,1545],{},"ระบุกำกับเสมอเมื่อการจัดอันดับสินค้าที่ขาดทุนหรือการจำลองอิงต้นทุนที่อนุมาน",[705,1547,1548],{},"การเขียน COGS เปลี่ยนทุกตัวเลขกำไรและ margin ของสินค้านั้น รวมถึงรายงานย้อนหลัง ให้ preview ก่อนเสมอ",[697,1550,1551],{"id":1551},"การแบ่งหน้าและต้นทุนของการเรียก",[1020,1553,1554,1557,1563,1570],{},[705,1555,1556],{},"เริ่มจากจำนวน diagnostics หรือสรุปกลุ่มบนกับกลุ่มล่าง เมื่อข้อมูลเหล่านั้นตอบคำถามได้แล้ว",[705,1558,1559,1560,1562],{},"ใช้ ",[724,1561,1434],{}," ก่อนดึงรายการสินค้าทั้งหมด เมื่อผู้ใช้ให้ชื่อสินค้า SKU model SKU หรือรหัสรายการ",[705,1564,1565,1566,1569],{},"ผลลัพธ์แบบ cursor ให้ส่ง ",[724,1567,1568],{},"nextCursor"," จาก response กลับเข้าไปในการเรียกครั้งถัดไป",[705,1571,1572],{},"ดึงหน้าถัดไปเฉพาะเมื่อต้องการผลครบถ้วนจริง หรือเมื่อการตัดสินใจจำเป็นต้องใช้",[697,1574,1576],{"id":1575},"ข้อกำหนดของ-oauth-consent","ข้อกำหนดของ OAuth consent",[683,1578,1579,1580,1582,1583,779,1586,1589,1590,779,1593,779,1596,1589,1599,779,1602,727,1605,1608],{},"host ของ MCP เริ่ม OAuth ที่โดเมนของ API หลังตรวจสอบแล้ว DataGlass จะพา browser ไปที่ ",[724,1581,1229],{}," พร้อม ",[724,1584,1585],{},"client_id",[724,1587,1588],{},"client_name"," แบบ optional, ",[724,1591,1592],{},"redirect_uri",[724,1594,1595],{},"scope",[724,1597,1598],{},"state",[724,1600,1601],{},"code_challenge",[724,1603,1604],{},"code_challenge_method=S256",[724,1606,1607],{},"resource"," แบบ optional",[683,1610,1611],{},"หน้าจอ consent ต้องทำสิ่งต่อไปนี้",[702,1613,1614,1617,1627,1633,1636,1642,1649,1659,1666],{},[705,1615,1616],{},"รักษา query parameter ทุกตัวไว้ตลอดการลงชื่อเข้าใช้ และพาผู้ใช้กลับมาที่ URL ของ consent เดิมทุกตัวอักษร",[705,1618,1619,1620,1626],{},"แสดงสิทธิ์อ่านพื้นฐานพร้อม ",[686,1621,1622,1623,1625],{},"สิทธิ์เขียน ",[724,1624,971],{}," ทุกตัวที่ถูกร้องขอ โดยอธิบายเป็นภาษาที่คนทั่วไปเข้าใจ"," เพื่อให้ผู้ใช้เห็นว่า client จะเปลี่ยนแปลงด้านใดได้บ้าง",[705,1628,1629,1630,1632],{},"แสดง ",[724,1631,1588],{}," ที่ผ่านการตรวจสอบเมื่อมี โดยไม่สื่อว่า DataGlass เป็นเจ้าของ client นั้น",[705,1634,1635],{},"บังคับให้ผู้ใช้เลือกอนุญาตหรือปฏิเสธอย่างชัดเจน",[705,1637,1638,1639],{},"POST ฟิลด์แบบ snake case ไปที่ ",[724,1640,1641],{},"https:\u002F\u002Fprod-api.dataglasslabs.com\u002Fapi\u002Foauth\u002Fconsent",[705,1643,1644,1645,1648],{},"ส่ง JWT ของ DataGlass ใน ",[724,1646,1647],{},"Authorization: Bearer ..."," โดย endpoint จะไม่สนใจ cookie ของ access token ที่ติดมา เพื่อป้องกัน consent CSRF",[705,1650,1559,1651,1654,1655,1658],{},[724,1652,1653],{},"approve: true"," เมื่ออนุญาต และ ",[724,1656,1657],{},"approve: false"," เมื่อปฏิเสธ",[705,1660,1661,1662,1665],{},"พาไปยัง ",[724,1663,1664],{},"data.redirectTo"," ที่ backend คืนมาเท่านั้น",[705,1667,1668],{},"ล้างสถานะ consent ที่ค้างอยู่หลังพาไปหน้าถัดไปหรือหลังยกเลิก",[1670,1671,1676],"pre",{"className":1672,"code":1673,"language":1674,"meta":1675,"style":1675},"language-json shiki shiki-themes github-light","{\n  \"client_id\": \"...\",\n  \"redirect_uri\": \"...\",\n  \"scope\": \"...\",\n  \"state\": \"...\",\n  \"code_challenge\": \"...\",\n  \"code_challenge_method\": \"S256\",\n  \"resource\": \"...\",\n  \"approve\": true\n}\n","json","",[724,1677,1678,1687,1704,1716,1728,1740,1752,1765,1777,1788],{"__ignoreMap":1675},[1679,1680,1683],"span",{"class":1681,"line":1682},"line",1,[1679,1684,1686],{"class":1685},"sgsFI","{\n",[1679,1688,1690,1694,1697,1701],{"class":1681,"line":1689},2,[1679,1691,1693],{"class":1692},"sYu0t","  \"client_id\"",[1679,1695,1696],{"class":1685},": ",[1679,1698,1700],{"class":1699},"sYBdl","\"...\"",[1679,1702,1703],{"class":1685},",\n",[1679,1705,1707,1710,1712,1714],{"class":1681,"line":1706},3,[1679,1708,1709],{"class":1692},"  \"redirect_uri\"",[1679,1711,1696],{"class":1685},[1679,1713,1700],{"class":1699},[1679,1715,1703],{"class":1685},[1679,1717,1719,1722,1724,1726],{"class":1681,"line":1718},4,[1679,1720,1721],{"class":1692},"  \"scope\"",[1679,1723,1696],{"class":1685},[1679,1725,1700],{"class":1699},[1679,1727,1703],{"class":1685},[1679,1729,1731,1734,1736,1738],{"class":1681,"line":1730},5,[1679,1732,1733],{"class":1692},"  \"state\"",[1679,1735,1696],{"class":1685},[1679,1737,1700],{"class":1699},[1679,1739,1703],{"class":1685},[1679,1741,1743,1746,1748,1750],{"class":1681,"line":1742},6,[1679,1744,1745],{"class":1692},"  \"code_challenge\"",[1679,1747,1696],{"class":1685},[1679,1749,1700],{"class":1699},[1679,1751,1703],{"class":1685},[1679,1753,1755,1758,1760,1763],{"class":1681,"line":1754},7,[1679,1756,1757],{"class":1692},"  \"code_challenge_method\"",[1679,1759,1696],{"class":1685},[1679,1761,1762],{"class":1699},"\"S256\"",[1679,1764,1703],{"class":1685},[1679,1766,1768,1771,1773,1775],{"class":1681,"line":1767},8,[1679,1769,1770],{"class":1692},"  \"resource\"",[1679,1772,1696],{"class":1685},[1679,1774,1700],{"class":1699},[1679,1776,1703],{"class":1685},[1679,1778,1780,1783,1785],{"class":1681,"line":1779},9,[1679,1781,1782],{"class":1692},"  \"approve\"",[1679,1784,1696],{"class":1685},[1679,1786,1787],{"class":1692},"true\n",[1679,1789,1791],{"class":1681,"line":1790},10,[1679,1792,1793],{"class":1685},"}\n",[683,1795,1796],{},"ข้อความบนหน้าจอ consent ควรบอกทั้งสองด้าน คือสิ่งที่ client อ่านได้และสิ่งที่ client เปลี่ยนได้",[1798,1799,1800],"blockquote",{},[683,1801,1802,1803,1806,1807,1809],{},"เชื่อมต่อ DataGlass กับ ",[724,1804,1805],{},"{clientName}"," หรือไม่ ",[724,1808,1805],{}," จะอ่านข้อมูลวิเคราะห์ของร้านที่บัญชี DataGlass ของคุณเข้าถึงได้ ทั้งสินค้า ออเดอร์ กำไร โฆษณา คำแนะนำ และสต็อก และถ้าคุณอนุมัติสิทธิ์เขียนที่แสดงไว้ด้านบนด้วย ก็จะเปลี่ยนแปลงสิ่งเหล่านั้นในร้านของคุณได้",[683,1811,1812,1813,1816],{},"เมื่อไม่มีการขอสิทธิ์เขียนเลย ให้ระบุให้ชัดและใช้ปุ่ม ",[686,1814,1815],{},"อนุญาตแบบอ่านอย่างเดียว"," แต่เมื่อมีการขอสิทธิ์เขียนตั้งแต่หนึ่งรายการขึ้นไป ปุ่มต้องไม่อ้างว่าเป็นการอ่านอย่างเดียว",[697,1818,1819],{"id":1819},"การออกแบบคำตอบ",[683,1821,1822],{},"คำตอบที่ใช้งานได้จริงเรียงลำดับดังนี้",[702,1824,1825,1831,1837,1843,1849],{},[705,1826,1827,1830],{},[686,1828,1829],{},"ขอบเขต"," ร้านและแพลตฟอร์ม ช่วงวันที่ การเปรียบเทียบ และสกุลเงิน",[705,1832,1833,1836],{},[686,1834,1835],{},"ข้อสรุป"," ข้อสรุปที่สำคัญที่สุดในหนึ่งประโยค",[705,1838,1839,1842],{},[686,1840,1841],{},"หลักฐาน"," ตัวชี้วัดหลักหรือปัจจัยที่จัดอันดับแล้วไม่เกินสามข้อในตอนแรก",[705,1844,1845,1848],{},[686,1846,1847],{},"ความมั่นใจ"," ความครบของ COGS, settlement lag, สิทธิ์ หรือสมมติฐานของการจำลอง",[705,1850,1851,1854],{},[686,1852,1853],{},"ขั้นตอนต่อไป"," คำถามต่อยอด การจำลองเพิ่ม ข้อเสนอให้เขียนข้อมูล หรือลิงก์ลึกไปยัง DataGlass",[742,1856,1857,1867],{},[745,1858,1859],{},[748,1860,1861,1864],{},[751,1862,1863],{},"ผลลัพธ์",[751,1865,1866],{},"รูปแบบที่แนะนำ",[761,1868,1869,1877,1885,1893,1901,1909,1917,1925,1932,1940,1948,1960],{},[748,1870,1871,1874],{},[766,1872,1873],{},"รายการร้าน",[766,1875,1876],{},"แถวที่เลือกได้ จัดกลุ่มตาม Marketplace",[748,1878,1879,1882],{},[766,1880,1881],{},"diagnostics",[766,1883,1884],{},"ข้อสรุปพร้อมการ์ด signal ที่ติดระดับความรุนแรง",[748,1886,1887,1890],{},[766,1888,1889],{},"การเทียบช่วงเวลา",[766,1891,1892],{},"ค่า KPI พร้อมส่วนต่างแบบสัมบูรณ์และเปอร์เซ็นต์",[748,1894,1895,1898],{},[766,1896,1897],{},"การจัดอันดับสินค้าหรือแคมเปญ",[766,1899,1900],{},"ตารางที่เรียงได้ เน้นตัวที่ดีที่สุดและแย่ที่สุด",[748,1902,1903,1906],{},[766,1904,1905],{},"รายละเอียดกำไรขาดทุน",[766,1907,1908],{},"waterfall หรือรายการต้นทุนแบบซ้อน",[748,1910,1911,1914],{},[766,1912,1913],{},"การจำลอง",[766,1915,1916],{},"ค่าปัจจุบันวางคู่กับสถานการณ์ที่เสนอ",[748,1918,1919,1922],{},[766,1920,1921],{},"แผนสั่งซื้อ",[766,1923,1924],{},"ตาราง SKU พร้อมความเร่งด่วนและสต็อกที่กำลังเข้า",[748,1926,1927,1929],{},[766,1928,1336],{},[766,1930,1931],{},"การ์ดพร้อมเหตุผล ลิงก์สำหรับตรวจ และเครื่องมือนำไปใช้เมื่อสิทธิ์เอื้อ",[748,1933,1934,1937],{},[766,1935,1936],{},"ข้อเสนอให้เขียนข้อมูล",[766,1938,1939],{},"ค่าปัจจุบันเทียบค่าที่เสนอ สิ่งที่จะถูกแตะอย่างเจาะจง และวิธีย้อนกลับ",[748,1941,1942,1945],{},[766,1943,1944],{},"การเขียนที่ทำไปแล้ว",[766,1946,1947],{},"อะไรเปลี่ยนไป เครื่องมือใดเป็นคนเปลี่ยน และย้อนกลับอย่างไร",[748,1949,1950,1957],{},[766,1951,1952,1362,1954,1956],{},[724,1953,1187],{},[724,1955,1191],{}," ที่อ่อนไหว",[766,1958,1959],{},"ฟิลด์ที่ถูกล็อกพร้อมคำอธิบายเรื่องสิทธิ์",[748,1961,1962,1965],{},[766,1963,1964],{},"ข้อผิดพลาดของเครื่องมือ",[766,1966,1967],{},"สถานะที่บอกวิธีแก้ในหน้านั้น ไม่ใช่สถานะไม่มีข้อมูล",[697,1969,1970],{"id":1970},"การกู้คืนจากข้อผิดพลาด",[742,1972,1973,1982],{},[745,1974,1975],{},[748,1976,1977,1979],{},[751,1978,518],{},[751,1980,1981],{},"สิ่งที่ผู้ใช้ควรเห็น",[761,1983,1984,1992,2000,2008,2022,2030,2038,2050,2058,2069,2077],{},[748,1985,1986,1989],{},[766,1987,1988],{},"401 หรือ token ถูกเพิกถอน",[766,1990,1991],{},"\"เชื่อมต่อ DataGlass ใหม่เพื่อใช้งานต่อ\" แล้วเริ่ม OAuth ใหม่",[748,1993,1994,1997],{},[766,1995,1996],{},"403 ตอนอ่าน",[766,1998,1999],{},"\"บัญชีนี้เข้าถึงร้านหรือทรัพยากรนั้นไม่ได้\" อย่าเริ่ม OAuth ใหม่อัตโนมัติ",[748,2001,2002,2005],{},[766,2003,2004],{},"403 ตอนใช้เครื่องมือเขียน",[766,2006,2007],{},"connector ไม่มีสิทธิ์เขียนของด้านนั้น ให้ระบุชื่อสิทธิ์ที่ขาดและเสนอให้เชื่อมต่อใหม่พร้อมสิทธิ์นั้น หรือชี้ไปที่แอป",[748,2009,2010,2013],{},[766,2011,2012],{},"แผนไม่รองรับ",[766,2014,2015,2016],{},"อธิบายว่าเครื่องมือนี้ต้องใช้แผน Pro และลิงก์ไปที่ ",[2017,2018,2021],"a",{"href":1239,"rel":2019},[2020],"nofollow","การเรียกเก็บเงิน",[748,2023,2024,2027],{},[766,2025,2026],{},"ทดลองใช้ใกล้หมด",[766,2028,2029],{},"แสดงข้อความเตือนจากเซิร์ฟเวอร์หนึ่งครั้งแบบไม่ขวางการใช้งาน",[748,2031,2032,2035],{},[766,2033,2034],{},"ทดลองใช้หรือการสมัครสมาชิกสิ้นสุด",[766,2036,2037],{},"แสดงข้อความจากเซิร์ฟเวอร์พร้อมลิงก์กู้คืนการเรียกเก็บเงิน",[748,2039,2040,2043],{},[766,2041,2042],{},"429",[766,2044,2045,2046,2049],{},"ทำตาม ",[724,2047,2048],{},"Retry-After"," และบอกผู้ใช้ว่าเรียกใหม่ได้เมื่อใด key ที่เขียนได้อาจเจอ 429 ระหว่างที่ตัวจำกัดอัตราขัดข้องด้วย ซึ่งเป็นไปตามการออกแบบ",[748,2051,2052,2055],{},[766,2053,2054],{},"รายการว่าง",[766,2056,2057],{},"ตรวจร้าน region วันที่ สิทธิ์ และช่วงเวลาของข้อมูล ก่อนสรุปว่าไม่มีความเคลื่อนไหว",[748,2059,2060,2063],{},[766,2061,2062],{},"รหัส TikTok Shop ไม่ถูกต้อง",[766,2064,2065,2066,2068],{},"ค้นใหม่ด้วย ",[724,2067,1428],{}," และเก็บรหัสเป็น string",[748,2070,2071,2074],{},[766,2072,2073],{},"COGS หาย",[766,2075,2076],{},"แสดงต้นทุนที่ประเมินหรือระบุว่าไม่มี แทนการแสดงศูนย์",[748,2078,2079,2082],{},[766,2080,2081],{},"การเขียนสำเร็จบางส่วน",[766,2083,2084,2085,2088],{},"บางเครื่องมือคืน ",[724,2086,2087],{},"failures"," รายเป้าหมายแทนการโยน error ให้รายงานส่วนที่สำเร็จและส่วนที่ล้มเหลวแยกกัน",[697,2090,2092],{"id":2091},"การเก็บข้อมูลการใช้-prompt-และ-connector","การเก็บข้อมูลการใช้ prompt และ connector",[683,2094,2095],{},"เก็บรหัส prompt pack ที่คงที่แทนข้อความ prompt ดิบ เหตุการณ์ที่มีประโยชน์ได้แก่",[1020,2097,2098,2118,2132,2138],{},[705,2099,2100,727,2103,1582,2106,779,2109,779,2112,727,2115,1608],{},[724,2101,2102],{},"mcp_prompt_impression",[724,2104,2105],{},"mcp_prompt_selected",[724,2107,2108],{},"prompt_pack",[724,2110,2111],{},"scenario",[724,2113,2114],{},"surface",[724,2116,2117],{},"platform",[705,2119,2120,779,2123,779,2126,727,2129],{},[724,2121,2122],{},"mcp_connector_started",[724,2124,2125],{},"mcp_connector_allowed",[724,2127,2128],{},"mcp_connector_denied",[724,2130,2131],{},"mcp_connector_failed",[705,2133,2134,2137],{},[724,2135,2136],{},"mcp_answer_followup_selected"," พร้อมประเภทของคำถามต่อยอด",[705,2139,2140,2143],{},[724,2141,2142],{},"mcp_deep_link_opened"," พร้อมหมวดของ route โดยไม่เก็บเนื้อหาทางการเงินดิบ",[683,2145,2146],{},"ห้ามบันทึก OAuth code, ค่า PKCE, access token หรือ refresh token, ข้อมูลผู้ซื้อ, prompt ดิบที่มีรายละเอียดออเดอร์ หรือผลลัพธ์ของเครื่องมือ",[697,2148,2150],{"id":2149},"การเพิ่ม-prompt-เข้าคลัง","การเพิ่ม prompt เข้าคลัง",[702,2152,2153,2156,2167,2170,2173,2176,2179,2182],{},[705,2154,2155],{},"เลือกผลลัพธ์ทางธุรกิจหนึ่งอย่างและ prompt pack ที่ตรงกัน",[705,2157,2158,2159,2163,2164,2166],{},"ยืนยันว่าความสามารถที่ต้องใช้มีอยู่จริงใน ",[2017,2160,2162],{"href":2161},"\u002Fth\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Ftool-catalog","tool catalog"," และใน ",[724,2165,1282],{}," ตอน runtime",[705,2168,2169],{},"เขียนอย่างน้อยสามสถานการณ์ ได้แก่ การประเมินภาพกว้าง การเจาะประเด็น และการตัดสินใจหรือขั้นตอนต่อไป เพิ่มกรณีเปรียบเทียบหรือคุณภาพข้อมูลเมื่อแตกต่างชัดเจน",[705,2171,2172],{},"ระบุว่า prompt นั้นต้องใช้สิทธิ์ใด ถ้าตอบได้ด้วยการอ่านอย่างเดียวก็บอกให้ชัด ถ้าจบด้วยการเขียนข้อมูล ให้ระบุชื่อเครื่องมือและสิทธิ์",[705,2174,2175],{},"ตรวจว่ารหัสทุกตัวใน prompt ค้นหาได้จริง ไม่ต้องเดา",[705,2177,2178],{},"กำหนดพฤติกรรมสำหรับกรณีข้อมูลว่าง ฟิลด์ถูกบังด้วยสิทธิ์ แผนไม่รองรับ ขาดสิทธิ์ และข้อมูลยังไม่ครบ",[705,2180,2181],{},"ทดสอบทุกแพลตฟอร์มที่ prompt อ้างถึง",[705,2183,2184,2185],{},"ให้ลิงก์ของผลิตภัณฑ์ชี้ไปที่ ",[724,2186,65],{},[2188,2189,2190],"style",{},"html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":1675,"searchDepth":1706,"depth":1706,"links":2192},[2193,2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215],{"id":699,"depth":1689,"text":700},{"id":740,"depth":1689,"text":740},{"id":975,"depth":1689,"text":976},{"id":1014,"depth":1689,"text":1015},{"id":1037,"depth":1689,"text":1038},{"id":1063,"depth":1689,"text":1064},{"id":1131,"depth":1689,"text":1132},{"id":1144,"depth":1689,"text":1145},{"id":1170,"depth":1689,"text":1171},{"id":1177,"depth":1689,"text":1178},{"id":1195,"depth":1689,"text":1196},{"id":1286,"depth":1689,"text":1286},{"id":1345,"depth":1689,"text":1346},{"id":1401,"depth":1689,"text":1401},{"id":1414,"depth":1689,"text":1414},{"id":1460,"depth":1689,"text":1460},{"id":1524,"depth":1689,"text":1525},{"id":1551,"depth":1689,"text":1551},{"id":1575,"depth":1689,"text":1576},{"id":1819,"depth":1689,"text":1819},{"id":1970,"depth":1689,"text":1970},{"id":2091,"depth":1689,"text":2092},{"id":2149,"depth":1689,"text":2150},"โมเดลสิทธิ์ของ MCP connector ของ DataGlass — อ่านอย่างเดียวเป็นค่าเริ่มต้น สิทธิ์เขียนแยกตามด้าน การยืนยันก่อนใช้เครื่องมือ destructive การเขียนที่ผ่านขั้นตอนของ DataGlass และสิ่งที่ยังทำไม่ได้",null,"md",{},{"icon":602},"---\ntitle: สิทธิ์และความปลอดภัย\ndescription: โมเดลสิทธิ์ของ MCP connector ของ DataGlass — อ่านอย่างเดียวเป็นค่าเริ่มต้น สิทธิ์เขียนแยกตามด้าน การยืนยันก่อนใช้เครื่องมือ destructive การเขียนที่ผ่านขั้นตอนของ DataGlass และสิ่งที่ยังทำไม่ได้\nnavigation:\n  icon: i-material-symbols-health-and-safety-rounded\n---\n\n**MCP connector ของ DataGlass เริ่มต้นด้วยการอ่านอย่างเดียว และจะอ่านได้อย่างเดียวต่อไปจนกว่าคุณจะอนุมัติสิทธิ์เขียน โดยแต่ละสิทธิ์ปลดล็อกเพียงหนึ่งด้าน** ตั้งแต่วันที่ 3 สิงหาคม 2026 connector เขียนข้อมูลได้ ผู้ช่วยที่มีสิทธิ์ตรงกันจะนำ price tier draft ไปใช้ เปลี่ยนงบของ ads group เขียน COGS ยกเลิกออเดอร์ หรือจัดส่งพัสดุได้ ไม่มีสิทธิ์ใดถูกให้โดยอัตโนมัติ ทุกสิทธิ์ผ่านการอนุมัติของคุณบนหน้าจอ consent และเครื่องมือทุกตัวที่ไปถึง Marketplace จะประกาศตัวเองว่าเป็น destructive เพื่อให้ผู้ช่วยถามก่อนลงมือ\n\n::callout{icon=\"i-lucide-shield-check\"}\nเอกสาร DataGlass รุ่นก่อนหน้าระบุว่า connector อ่านได้อย่างเดียว ข้อความนั้นถูกต้องจนถึงวันที่ 3 สิงหาคม 2026 และไม่เป็นจริงอีกต่อไป หน้านี้คือข้อกำหนดปัจจุบัน\n::\n\n## โมเดลสิทธิ์ของ MCP DataGlass สี่ชั้น\n\n1. **ปฏิเสธเป็นค่าเริ่มต้น** connector ที่เพิ่งออกให้จะมีเพียงสิทธิ์อ่านพื้นฐาน ใช้รายงาน เปรียบเทียบ วิเคราะห์ แนะนำ และจำลองได้ แต่เปลี่ยนอะไรไม่ได้เลย\n2. **สิทธิ์เขียนแยกตามด้าน** ความสามารถในการเขียนมาจาก OAuth scope ที่คุณอนุมัติเท่านั้น และแต่ละสิทธิ์ครอบคลุมเพียงหนึ่งด้าน ผู้ขายจึงให้ agent ดูแลค่าโฆษณาได้โดยไม่ต้องให้แตะราคา\n3. **การยืนยันก่อนใช้เครื่องมือ destructive** เครื่องมือที่เขียนข้อมูลทุกตัวประกาศ `readOnlyHint=false` และ `destructiveHint=true` ซึ่งเป็นเหตุให้ Claude และ ChatGPT ถามก่อนทำงาน คำอธิบายของเครื่องมือจะบอกชัดว่าอะไรจะเปลี่ยน และถ้ามีเครื่องมือ preview หรือเครื่องมืออ่านย้อนกลับ ก็จะระบุชื่อไว้ให้เรียกก่อน\n4. **เขียนผ่านขั้นตอนของ DataGlass เท่านั้น** เครื่องมือเขียนทำงานผ่านขั้นตอนด้านราคา โฆษณา สินค้า และการจัดส่งของ DataGlass เอง ซึ่งเป็นขั้นตอนที่คำนวณ margin ที่จะได้และบันทึกสถานะสำหรับย้อนกลับ ส่วนการส่งค่าตรงเข้า Marketplace ไม่ได้เปิดเป็นเครื่องมือเลย\n\n## สิทธิ์เขียนเก้าด้าน\n\n| สิทธิ์ | ปลดล็อกอะไร | ตัวอย่างเครื่องมือ |\n| --- | --- | --- |\n| `PAT_PRICING_WRITE` | price tier draft, การนำ target margin ไปใช้, margin defense และ price buffer | `apply_price_tier_draft`, `apply_shopee_target_margin`, `apply_margin_defense_action`, `rollback_price_tier_draft` |\n| `PAT_ADS_WRITE` | ads optimization group, งบ, target ROAS และ boost | `create_ads_group`, `disable_ads_group_optimization`, `apply_shopee_target_roas`, `apply_tiktok_ad_budget` |\n| `PAT_CATALOG_WRITE` | COGS, สต็อก, ชื่อรายการสินค้า, การผูก canonical และการสร้างสินค้า | `apply_shopee_cogs`, `apply_shopee_stock`, `create_canonical_product`, `copy_product_to_shops` |\n| `PAT_RETURNS_WRITE` | การตัดสินใจเรื่องคืนสินค้าและคืนเงิน | `approve_tiktok_return`, `reject_tiktok_return`, `decide_lazada_refund`, `confirm_shopee_return` |\n| `PAT_ORDERS_WRITE` | การจัดการออเดอร์และเอกสาร | `cancel_shopee_order`, `split_shopee_order`, `set_shopee_order_note` |\n| `PAT_LOGISTICS_WRITE` | พัสดุ การจัดส่ง และ AWB | `ship_tiktok_package`, `batch_ship_tiktok_packages`, `print_shopee_airway_bills` |\n| `PAT_RECOMMENDATION_WRITE` | การจัดการ Actions ของ DataGlass | `reject_recommendation`, `stop_recommendation`, `rollback_recommendation` |\n| `PAT_INVENTORY_WRITE` | การแจ้งเตือน ใบสั่งซื้อ และการตั้งค่า stock sync | `acknowledge_inventory_alert`, `log_purchase_order`, `set_shopee_stock_sync` |\n| `PAT_REPORTS_WRITE` | การจัดทำรายงานผลการทำงานของโฆษณา | `generate_ads_performance_report`, `publish_ads_report_workspace` |\n\nการตัดสินใจเรื่องคืนสินค้าและคืนเงินอยู่ภายใต้สิทธิ์ของตัวเอง ไม่รวมอยู่กับออเดอร์หรือการจัดส่ง เพราะเป็นการเคลื่อนย้ายเงินจริงและแพลตฟอร์มจะไม่ย้อนให้\n\nการให้สิทธิ์เขียนไม่ได้ขยายสิทธิ์ของคุณใน DataGlass สิทธิ์ `PAT_*` ปลดล็อกเฉพาะประตูการเขียนของ agent เท่านั้น ส่วนสิทธิ์ระดับ organization การตรวจความเป็นเจ้าของร้าน และกฎเรื่องข้อมูลการเงินที่อ่อนไหว ยังทำงานทุกครั้งเหมือนที่ทำงานในแอป\n\n## การเขียนผ่านขั้นตอนของ DataGlass เทียบกับการส่งค่าตรงเข้า Marketplace\n\n**connector เขียนผ่าน DataGlass ไม่เคยส่งค่าตรงเข้า API ของ Marketplace** เส้นแบ่งนี้คือสิ่งที่ตัดสินว่าความสามารถใดจะมีเป็นเครื่องมือได้บ้าง\n\n**ทางที่ผ่านขั้นตอนของ DataGlass** เช่น price tier draft การนำ target margin ไปใช้ และการนำคำแนะนำไปใช้ จะคำนวณ margin ที่จะได้ก่อนลงมือ บันทึกสถานะ draft หรือสถานะสำหรับย้อนกลับ และไปในทางเดียวกับส่วนอื่นของระบบราคา ตัวเลขที่คุณเห็นใน DataGlass กับตัวเลขที่ผู้ซื้อเห็นจึงตรงกันหลังจากนั้น ทางเหล่านี้คือทางที่เปิดเป็นเครื่องมือ\n\n**การส่งค่าตรง** เช่น `updatePrice`, `addDiscount`, `updateStock` และการเรียก partner API ของ voucher, Bundle Deal, flexi combo และการส่งฟรี จะยิงค่าเข้า Marketplace แล้วจบ ทำให้ DataGlass ถือราคาหนึ่งและ Marketplace ถืออีกราคาหนึ่ง handler เหล่านั้นมีไว้ให้แอปใช้เอง และตั้งใจไม่ให้ agent เข้าถึง\n\nผลที่ตามมาซึ่งต้องบอกกันตรงๆ คือ **voucher, Bundle Deal, flexi combo และแคมเปญส่งฟรี ไม่มีทางที่ผ่านขั้นตอนของ DataGlass รองรับ ความสามารถเหล่านี้จึงไม่มีอยู่ในพื้นผิวของ agent เลย** ผู้ช่วยสร้างหรือแก้ไขให้ไม่ได้ไม่ว่าจะมีสิทธิ์ใด ต้องทำในแอปหรือใน Seller Center\n\n## เครื่องมือสองตัวที่สร้างรายการสินค้าจริงบน Marketplace\n\nเครื่องมือด้านสินค้าสองตัวเรียก API สร้างสินค้าของแพลตฟอร์มโดยตรง และทำให้เกิดรายการสินค้าที่ผู้ซื้อมองเห็นได้\n\n- `create_canonical_product` สร้างรายการสินค้าใหม่บนทุกร้าน Shopee, Lazada และ TikTok Shop ที่เลือก แล้วผูกเข้ากับสินค้า canonical เดียว\n- `copy_product_to_shops` สร้างรายการสินค้าเดิมขึ้นใหม่เป็นรายการจริงบนร้านปลายทางแต่ละร้าน รวมถึงข้ามแพลตฟอร์ม\n\nทั้งสองตัวถูกระบุว่าเป็น destructive ด้วยเหตุผลนี้ และไม่ใช่การสร้างแถว canonical เฉยๆ ควรอ่าน payload ทั้งชุด ทั้งร้าน ชื่อ ราคา และสต็อก ก่อนอนุมัติ\n\n## สองรายการวิเคราะห์กำไรที่ถอดออกจากพื้นผิวของ agent\n\n**คิวตรวจสอบราคาตาม price tier** ของ Shopee และ **รายการแคมเปญที่ขาดทุนตาม profit-adjusted ROAS** ถูกถอดออกจากพื้นผิวเครื่องมือโดยตั้งใจเมื่อวันที่ 3 สิงหาคม 2026 เพราะการอยู่ในรายการเหล่านั้น *คือ* สัญญาณทางการเงินในตัวมันเอง การอยู่ในคิวหมายถึง margin ต่ำกว่าเกณฑ์ และการอยู่ในรายการที่ขาดทุนหมายถึงกำไรจริงติดลบ ต่อให้บังค่าตัวเลขไว้ ข้อมูลนี้ก็ยังรั่วถึงสมาชิกทีมที่ไม่มีสิทธิ์ `VIEW_SENSITIVE_FINANCIAL` อยู่ดี และการเปิดเป็นเครื่องมือจะทำให้ไล่ดูได้ครบทุกร้านในการเรียกครั้งเดียว\n\nทั้งสองรายการยังใช้งานได้ตามปกติในแอป DataGlass และผ่าน REST API ภายใต้สิทธิ์ระดับหน้าเดิม มีเพียงพื้นผิวของ agent เท่านั้นที่แคบกว่า\n\n## API key จากในแอปอ่านได้อย่างเดียว ส่วน OAuth connector ได้สิทธิ์ตามที่คุณอนุมัติ\n\nการมอบข้อมูลรับรองของ DataGlass ให้ agent มีสองทาง และทั้งสองทางต่างกัน\n\n| ข้อมูลรับรอง | ออกให้อย่างไร | ความสามารถในการเขียน |\n| --- | --- | --- |\n| API key จาก **ตั้งค่า → API keys** | หน้าจอในแอป ซึ่งไม่มีตัวเลือกสิทธิ์ให้เลือก | **อ่านอย่างเดียวโดยโครงสร้าง** key ถูกสร้างด้วยสิทธิ์อ่านพื้นฐานเท่านั้น |\n| **OAuth connector** ใน ChatGPT หรือ Claude | หน้าจอ consent ที่ `\u002Fconnect` | ได้สิทธิ์ `PAT_*` ตามที่แสดงบนหน้าจอนั้นและคุณอนุมัติเท่านั้น |\n\nดังนั้น token `dg_pat_` ที่คุณวางไว้ในสคริปต์จะเขียนข้อมูลไม่ได้ แม้ connector ที่คุณอนุมัติใน Claude อาจเขียนได้ก็ตาม เวลามีคนบอกว่า \"API อ่านได้อย่างเดียว\" มักหมายถึงความต่างข้อนี้\n\n## แผนกำหนดอะไรสำหรับ MCP และ API key\n\nการเชื่อมต่อผู้ช่วย AI ผ่าน MCP ใช้ได้ในทุกแผน สิ่งที่แผนกำหนดคือเครื่องมือเข้าถึงอะไรได้บ้าง: เครื่องมือที่อ่านหรือแก้ไขฟีเจอร์ของ Pro (Actions, กลุ่มเพิ่มประสิทธิภาพโฆษณาและกฎอัตโนมัติ, จังหวะการประมูล, price elasticity) จะตอบผู้เรียกที่อยู่ต่ำกว่าระดับ Pro ด้วยผลลัพธ์แบบปฏิเสธตามแผน ไม่ใช่ผลลัพธ์ของเครื่องมือ ส่วนการสร้าง Personal Access Token (API key) ต้องใช้ **`PlanTier.PRO`** อย่าอธิบายว่า API key หรือเครื่องมือ MCP ทุกตัวรวมอยู่ในทุกแผน\n\n## rate limit และกฎ fail closed สำหรับ key ที่เขียนได้\n\nแต่ละ key ถูกจำกัดที่ **60 คำขอแบบ burst และ 1 คำขอต่อวินาทีแบบต่อเนื่อง** โดยนับแยกรายคีย์ agent ที่ทำงานผิดปกติจึงไม่ทำให้แดชบอร์ดของคุณใช้ไม่ได้ การเรียกภายในที่เครื่องมือ MCP กระจายออกไปไม่กินโควตาเพิ่ม เพราะการเรียก `\u002Fmcp` ชั้นนอกใช้ไปแล้วหนึ่งครั้ง\n\nเมื่อตัวจำกัดอัตราเองใช้งานไม่ได้ พฤติกรรมจะแยกตามความสามารถของ key **key ที่อ่านอย่างเดียวจะ fail open** เพราะ token ผ่านการตรวจแล้ว และเหตุขัดข้องไม่ควรทำให้การอ่านล่มทั้งหมด ส่วน **key ที่เขียนได้จะ fail closed** เพราะ agent ที่วนเรียกเครื่องมือเขียนโดยไม่มีตัวจำกัดจะเปลี่ยนราคาจริงและค่าโฆษณาจริง ซึ่งไม่คุ้มกับการรักษาให้การอ่านทำงานต่อไปได้\n\n## การแยกข้อมูลระหว่างผู้ใช้ในพื้นผิวของ API key\n\nการไล่ตรวจ endpoint ทุกตัวที่ API key เข้าถึงได้ทั้งหมด 625 handler ไม่พบการอ่านหรือการเขียนข้ามผู้ใช้เลย การเรียกเครื่องมือทุกครั้งถูกส่งเป็นคำขอที่ยืนยันตัวตนด้วย token ของคุณเอง การตรวจความเป็นเจ้าของจึงทำงานเหมือนคำขอที่มาจากแอปทุกประการ\n\n## การบังข้อมูลการเงินที่อ่อนไหวยังทำงานข้ามฝั่ง agent\n\nค่าที่ถูกซ่อนด้วย `VIEW_SENSITIVE_FINANCIAL` จะไปถึงผู้ช่วยในรูป string `\"***\"` หรือเป็น `null` เมื่อเป็น object หรือ list ไม่ใช่ตัวเลขจริง ให้แสดงเป็นฟิลด์ที่ถูกล็อก อย่าแปลงเป็นศูนย์ อย่าถือว่าข้อมูลหาย และอย่าเรียกซ้ำเพื่อเลี่ยงสิทธิ์ ในกรณีที่ลำดับการเรียงเองก็เปิดเผยค่าที่ถูกบัง ระบบจะตัดการเรียงนั้นออกด้วย\n\n## endpoint สำหรับ production\n\n| ใช้ทำอะไร | URL |\n| --- | --- |\n| แอป DataGlass | `https:\u002F\u002Fapp.dataglasslabs.com` |\n| หน้าจอ consent ของ connector | `https:\u002F\u002Fapp.dataglasslabs.com\u002Fconnect` |\n| แผนและการกู้คืนการเรียกเก็บเงิน | `https:\u002F\u002Fapp.dataglasslabs.com\u002Fopen\u002Fbilling` |\n| MCP endpoint | `https:\u002F\u002Fprod-api.dataglasslabs.com\u002Fmcp` |\n| OAuth metadata | `https:\u002F\u002Fprod-api.dataglasslabs.com\u002F.well-known\u002F...` |\n\nผลการค้นหาสินค้าอาจมีลิงก์แบบ relative เช่น `\u002Fproducts?canonicalId=123` ให้อ้างอิงกับ `https:\u002F\u002Fapp.dataglasslabs.com` ไม่ใช่ origin ของ API\n\n**ไม่มี OpenAPI spec ที่เปิดสาธารณะ** spec ของ agent ถูกสร้างขึ้นภายในที่ `\u002Fv3\u002Fapi-docs\u002Fagent` จากกฎการเข้าถึงจริง แต่จำกัดด้วย IP allowlist และคืน 404 ต่ออินเทอร์เน็ตสาธารณะ สำหรับผู้ช่วยที่เชื่อมต่อแล้ว `tools\u002Flist` ตอน runtime คือข้อกำหนดที่เครื่องอ่านได้\n\n## คำศัพท์ธุรกิจที่ใช้ในคำตอบ\n\n| คำศัพท์ | ความหมาย |\n| --- | --- |\n| กำไรที่เกิดขึ้นจริง | กำไรจากข้อมูลการเงินของ Marketplace ที่ settle แล้วและปรับการยกเลิกแล้ว |\n| True ROAS | ผลตอบแทนจากโฆษณาหลังหัก COGS ค่าธรรมเนียม การคืนสินค้า และการปรับจากการยกเลิก |\n| payout | เงินที่ Marketplace โอนจริง ไม่เท่ากับกำไร |\n| COGS ที่ประเมิน | ค่าที่ DataGlass อนุมานเมื่อไม่มีต้นทุนสินค้าที่กรอกจริง |\n| คำแนะนำ | ข้อเสนอที่ตรวจได้ใน DataGlass และนำไปใช้ผ่านเครื่องมือได้เมื่อได้รับสิทธิ์เขียนด้านคำแนะนำ |\n\nอย่ารับปากว่าเป็นข้อมูลสดจาก Marketplace หรือรับประกันผลลัพธ์ในอนาคต\n\n## ขั้นตอนการทำงานของผู้ช่วยกับคำถาม DataGlass\n\n1. ค้นหาร้านที่เลือกด้วยเครื่องมือ `list_*_shops` ที่ตรงกัน ห้ามสร้าง `shopId`, `sellerId` หรือ `region` ขึ้นเอง\n2. คำถามแนว \"ร้านเป็นอย่างไร\" หรือ \"อะไรเปลี่ยนไป\" ให้เริ่มที่ `diagnose_shop`\n3. อ่าน `signals[]` และตาม `suggestedTool` ของ signal เมื่อคำถามต้องใช้หลักฐานนั้นเท่านั้น\n4. เทียบช่วงเวลาที่เทียบกันได้ และระบุช่วงเวลากับสกุลเงินท้องถิ่น\n5. เริ่มจากปัจจัยทางธุรกิจที่ใหญ่ที่สุด ตามด้วยข้อเท็จจริงสนับสนุนไม่เกินสามข้อและขั้นตอนต่อไป\n6. ระบุเมื่อ COGS เป็นค่าอนุมาน settlement ล่าสุดยังไม่ครบ ฟิลด์ถูกบังด้วยสิทธิ์ หรือผลลัพธ์เป็นการจำลอง\n7. ก่อนเขียนข้อมูลทุกครั้ง ให้ระบุชื่อเครื่องมือ สิ่งที่จะถูกแตะอย่างเจาะจง และค่าปัจจุบันเทียบค่าที่เสนอ แล้วรอให้ผู้ใช้ยืนยันชัดเจน\n8. หลังเขียนแล้ว ให้บอกว่าอะไรเปลี่ยนไปจริง และระบุชื่อเครื่องมือย้อนกลับถ้ามี\n\n## การใช้ถ้อยคำระหว่างผลการอ่านกับการเขียน\n\nใช้คำว่า preview, จำลอง, แนะนำ หรือ ตรวจใน DataGlass สำหรับทุกสิ่งที่ผู้ช่วยเพียงอ่านหรือคำนวณจำลอง ใช้คำว่า นำไปใช้แล้ว อัปเดตแล้ว ยกเลิกแล้ว หรือ จัดส่งแล้ว **ต่อเมื่อเครื่องมือเขียนทำงานสำเร็จแล้วเท่านั้น** และให้ระบุชื่อเครื่องมือที่ทำ การอ้างว่าเปลี่ยนทั้งที่ไม่ได้เปลี่ยน กับการไม่รายงานว่าเปลี่ยนไปแล้ว ร้ายแรงพอกัน\n\nข้อควรรู้คือคำว่าย้อนกลับแทบไม่เคยหมายถึงการ undo การย้อนราคาคือการเขียนขึ้นแพลตฟอร์มชุดใหม่เพื่อคืนราคาก่อนนำไปใช้ที่บันทึกไว้ ผู้ซื้อจะเห็นราคาเปลี่ยนอีกครั้ง และบางอย่างย้อนไม่ได้เลย เช่น ออเดอร์ Shopee ที่ยกเลิกไปแล้ว หรือการคืนสินค้า TikTok Shop ที่อนุมัติไปแล้ว\n\n## รหัสอ้างอิง\n\n- ดูรหัสร้านและ region จาก `list_shopee_shops`, `list_lazada_shops` หรือ `list_tiktok_shops`\n- ใช้รหัสสินค้า canonical ต่อเมื่อ `search`, `list_products` หรือผลลัพธ์สินค้าอื่นคืนมาแล้วเท่านั้น\n- อย่าเดา Marketplace จากรูปแบบของรหัส\n- รหัสร้าน แคมเปญ advertiser สินค้า และ SKU ของ TikTok Shop อาจเกินช่วงจำนวนเต็มที่ JavaScript รองรับได้อย่างปลอดภัย ให้เก็บเป็น string ตลอดทางตั้งแต่ browser ถึง MCP และกลับมา\n\nขณะนี้ `diagnose_shop` สร้าง schema จากค่า `Long` ใน path ของ Kotlin ให้ส่งรหัสร้าน TikTok Shop ตรงตามที่ `list_tiktok_shops` คืนมา ถ้า host ที่เข้มงวดรักษาค่าไว้ไม่ได้โดยไม่แปลงเป็นตัวเลข ให้ใช้เครื่องมือภาพรวมการเงินเฉพาะของ TikTok Shop แทน\n\n## วันที่และการเปรียบเทียบ\n\n| ค่า | รูปแบบ |\n| --- | --- |\n| วันที่ปกติ | `YYYY-MM-DD` |\n| `datadateFrom` \u002F `datadateTo` ของ conversion | จำนวนเต็ม `YYYYMMDD` |\n| timestamp | ISO 8601 |\n| การเทียบค่าเริ่มต้น | ช่วงก่อนหน้าที่ยาวเท่ากันทันที |\n\nเครื่องมือ payout กรองตามวันที่ payout หรือ settlement ไม่ใช่วันที่สั่งซื้อ ค่าที่เกิดขึ้นจริงของวันใกล้ปัจจุบันอาจยังไม่ครบระหว่างที่ Marketplace ยัง settle ไม่เสร็จ ให้แสดงหมายเหตุเรื่อง settlement lag แทนการสรุปว่ายอดที่ลดลงล่าสุดเป็นผลจริง\n\n## เงิน VAT และ COGS\n\n- เงินใช้สกุลท้องถิ่นของร้าน อย่ารวมสกุลเงินต่างกันโดยไม่อธิบายวิธีรวม\n- `includeVat=false` คือมุมมอง forward VAT ตามปกติ เว้นแต่ผู้ใช้ขอเป็นอย่างอื่น\n- `includeInferredCogs=true` จะเติม COGS ที่ขาดด้วยค่าประเมินของ DataGlass\n- ระบุกำกับเสมอเมื่อการจัดอันดับสินค้าที่ขาดทุนหรือการจำลองอิงต้นทุนที่อนุมาน\n- การเขียน COGS เปลี่ยนทุกตัวเลขกำไรและ margin ของสินค้านั้น รวมถึงรายงานย้อนหลัง ให้ preview ก่อนเสมอ\n\n## การแบ่งหน้าและต้นทุนของการเรียก\n\n- เริ่มจากจำนวน diagnostics หรือสรุปกลุ่มบนกับกลุ่มล่าง เมื่อข้อมูลเหล่านั้นตอบคำถามได้แล้ว\n- ใช้ `search` ก่อนดึงรายการสินค้าทั้งหมด เมื่อผู้ใช้ให้ชื่อสินค้า SKU model SKU หรือรหัสรายการ\n- ผลลัพธ์แบบ cursor ให้ส่ง `nextCursor` จาก response กลับเข้าไปในการเรียกครั้งถัดไป\n- ดึงหน้าถัดไปเฉพาะเมื่อต้องการผลครบถ้วนจริง หรือเมื่อการตัดสินใจจำเป็นต้องใช้\n\n## ข้อกำหนดของ OAuth consent\n\nhost ของ MCP เริ่ม OAuth ที่โดเมนของ API หลังตรวจสอบแล้ว DataGlass จะพา browser ไปที่ `https:\u002F\u002Fapp.dataglasslabs.com\u002Fconnect` พร้อม `client_id`, `client_name` แบบ optional, `redirect_uri`, `scope`, `state` แบบ optional, `code_challenge`, `code_challenge_method=S256` และ `resource` แบบ optional\n\nหน้าจอ consent ต้องทำสิ่งต่อไปนี้\n\n1. รักษา query parameter ทุกตัวไว้ตลอดการลงชื่อเข้าใช้ และพาผู้ใช้กลับมาที่ URL ของ consent เดิมทุกตัวอักษร\n2. แสดงสิทธิ์อ่านพื้นฐานพร้อม **สิทธิ์เขียน `PAT_*` ทุกตัวที่ถูกร้องขอ โดยอธิบายเป็นภาษาที่คนทั่วไปเข้าใจ** เพื่อให้ผู้ใช้เห็นว่า client จะเปลี่ยนแปลงด้านใดได้บ้าง\n3. แสดง `client_name` ที่ผ่านการตรวจสอบเมื่อมี โดยไม่สื่อว่า DataGlass เป็นเจ้าของ client นั้น\n4. บังคับให้ผู้ใช้เลือกอนุญาตหรือปฏิเสธอย่างชัดเจน\n5. POST ฟิลด์แบบ snake case ไปที่ `https:\u002F\u002Fprod-api.dataglasslabs.com\u002Fapi\u002Foauth\u002Fconsent`\n6. ส่ง JWT ของ DataGlass ใน `Authorization: Bearer ...` โดย endpoint จะไม่สนใจ cookie ของ access token ที่ติดมา เพื่อป้องกัน consent CSRF\n7. ใช้ `approve: true` เมื่ออนุญาต และ `approve: false` เมื่อปฏิเสธ\n8. พาไปยัง `data.redirectTo` ที่ backend คืนมาเท่านั้น\n9. ล้างสถานะ consent ที่ค้างอยู่หลังพาไปหน้าถัดไปหรือหลังยกเลิก\n\n```json\n{\n  \"client_id\": \"...\",\n  \"redirect_uri\": \"...\",\n  \"scope\": \"...\",\n  \"state\": \"...\",\n  \"code_challenge\": \"...\",\n  \"code_challenge_method\": \"S256\",\n  \"resource\": \"...\",\n  \"approve\": true\n}\n```\n\nข้อความบนหน้าจอ consent ควรบอกทั้งสองด้าน คือสิ่งที่ client อ่านได้และสิ่งที่ client เปลี่ยนได้\n\n> เชื่อมต่อ DataGlass กับ `{clientName}` หรือไม่ `{clientName}` จะอ่านข้อมูลวิเคราะห์ของร้านที่บัญชี DataGlass ของคุณเข้าถึงได้ ทั้งสินค้า ออเดอร์ กำไร โฆษณา คำแนะนำ และสต็อก และถ้าคุณอนุมัติสิทธิ์เขียนที่แสดงไว้ด้านบนด้วย ก็จะเปลี่ยนแปลงสิ่งเหล่านั้นในร้านของคุณได้\n\nเมื่อไม่มีการขอสิทธิ์เขียนเลย ให้ระบุให้ชัดและใช้ปุ่ม **อนุญาตแบบอ่านอย่างเดียว** แต่เมื่อมีการขอสิทธิ์เขียนตั้งแต่หนึ่งรายการขึ้นไป ปุ่มต้องไม่อ้างว่าเป็นการอ่านอย่างเดียว\n\n## การออกแบบคำตอบ\n\nคำตอบที่ใช้งานได้จริงเรียงลำดับดังนี้\n\n1. **ขอบเขต** ร้านและแพลตฟอร์ม ช่วงวันที่ การเปรียบเทียบ และสกุลเงิน\n2. **ข้อสรุป** ข้อสรุปที่สำคัญที่สุดในหนึ่งประโยค\n3. **หลักฐาน** ตัวชี้วัดหลักหรือปัจจัยที่จัดอันดับแล้วไม่เกินสามข้อในตอนแรก\n4. **ความมั่นใจ** ความครบของ COGS, settlement lag, สิทธิ์ หรือสมมติฐานของการจำลอง\n5. **ขั้นตอนต่อไป** คำถามต่อยอด การจำลองเพิ่ม ข้อเสนอให้เขียนข้อมูล หรือลิงก์ลึกไปยัง DataGlass\n\n| ผลลัพธ์ | รูปแบบที่แนะนำ |\n| --- | --- |\n| รายการร้าน | แถวที่เลือกได้ จัดกลุ่มตาม Marketplace |\n| diagnostics | ข้อสรุปพร้อมการ์ด signal ที่ติดระดับความรุนแรง |\n| การเทียบช่วงเวลา | ค่า KPI พร้อมส่วนต่างแบบสัมบูรณ์และเปอร์เซ็นต์ |\n| การจัดอันดับสินค้าหรือแคมเปญ | ตารางที่เรียงได้ เน้นตัวที่ดีที่สุดและแย่ที่สุด |\n| รายละเอียดกำไรขาดทุน | waterfall หรือรายการต้นทุนแบบซ้อน |\n| การจำลอง | ค่าปัจจุบันวางคู่กับสถานการณ์ที่เสนอ |\n| แผนสั่งซื้อ | ตาราง SKU พร้อมความเร่งด่วนและสต็อกที่กำลังเข้า |\n| คำแนะนำ | การ์ดพร้อมเหตุผล ลิงก์สำหรับตรวจ และเครื่องมือนำไปใช้เมื่อสิทธิ์เอื้อ |\n| ข้อเสนอให้เขียนข้อมูล | ค่าปัจจุบันเทียบค่าที่เสนอ สิ่งที่จะถูกแตะอย่างเจาะจง และวิธีย้อนกลับ |\n| การเขียนที่ทำไปแล้ว | อะไรเปลี่ยนไป เครื่องมือใดเป็นคนเปลี่ยน และย้อนกลับอย่างไร |\n| `\"***\"` หรือ `null` ที่อ่อนไหว | ฟิลด์ที่ถูกล็อกพร้อมคำอธิบายเรื่องสิทธิ์ |\n| ข้อผิดพลาดของเครื่องมือ | สถานะที่บอกวิธีแก้ในหน้านั้น ไม่ใช่สถานะไม่มีข้อมูล |\n\n## การกู้คืนจากข้อผิดพลาด\n\n| เงื่อนไข | สิ่งที่ผู้ใช้ควรเห็น |\n| --- | --- |\n| 401 หรือ token ถูกเพิกถอน | \"เชื่อมต่อ DataGlass ใหม่เพื่อใช้งานต่อ\" แล้วเริ่ม OAuth ใหม่ |\n| 403 ตอนอ่าน | \"บัญชีนี้เข้าถึงร้านหรือทรัพยากรนั้นไม่ได้\" อย่าเริ่ม OAuth ใหม่อัตโนมัติ |\n| 403 ตอนใช้เครื่องมือเขียน | connector ไม่มีสิทธิ์เขียนของด้านนั้น ให้ระบุชื่อสิทธิ์ที่ขาดและเสนอให้เชื่อมต่อใหม่พร้อมสิทธิ์นั้น หรือชี้ไปที่แอป |\n| แผนไม่รองรับ | อธิบายว่าเครื่องมือนี้ต้องใช้แผน Pro และลิงก์ไปที่ [การเรียกเก็บเงิน](https:\u002F\u002Fapp.dataglasslabs.com\u002Fopen\u002Fbilling) |\n| ทดลองใช้ใกล้หมด | แสดงข้อความเตือนจากเซิร์ฟเวอร์หนึ่งครั้งแบบไม่ขวางการใช้งาน |\n| ทดลองใช้หรือการสมัครสมาชิกสิ้นสุด | แสดงข้อความจากเซิร์ฟเวอร์พร้อมลิงก์กู้คืนการเรียกเก็บเงิน |\n| 429 | ทำตาม `Retry-After` และบอกผู้ใช้ว่าเรียกใหม่ได้เมื่อใด key ที่เขียนได้อาจเจอ 429 ระหว่างที่ตัวจำกัดอัตราขัดข้องด้วย ซึ่งเป็นไปตามการออกแบบ |\n| รายการว่าง | ตรวจร้าน region วันที่ สิทธิ์ และช่วงเวลาของข้อมูล ก่อนสรุปว่าไม่มีความเคลื่อนไหว |\n| รหัส TikTok Shop ไม่ถูกต้อง | ค้นใหม่ด้วย `list_tiktok_shops` และเก็บรหัสเป็น string |\n| COGS หาย | แสดงต้นทุนที่ประเมินหรือระบุว่าไม่มี แทนการแสดงศูนย์ |\n| การเขียนสำเร็จบางส่วน | บางเครื่องมือคืน `failures` รายเป้าหมายแทนการโยน error ให้รายงานส่วนที่สำเร็จและส่วนที่ล้มเหลวแยกกัน |\n\n## การเก็บข้อมูลการใช้ prompt และ connector\n\nเก็บรหัส prompt pack ที่คงที่แทนข้อความ prompt ดิบ เหตุการณ์ที่มีประโยชน์ได้แก่\n\n- `mcp_prompt_impression` และ `mcp_prompt_selected` พร้อม `prompt_pack`, `scenario`, `surface` และ `platform` แบบ optional\n- `mcp_connector_started`, `mcp_connector_allowed`, `mcp_connector_denied` และ `mcp_connector_failed`\n- `mcp_answer_followup_selected` พร้อมประเภทของคำถามต่อยอด\n- `mcp_deep_link_opened` พร้อมหมวดของ route โดยไม่เก็บเนื้อหาทางการเงินดิบ\n\nห้ามบันทึก OAuth code, ค่า PKCE, access token หรือ refresh token, ข้อมูลผู้ซื้อ, prompt ดิบที่มีรายละเอียดออเดอร์ หรือผลลัพธ์ของเครื่องมือ\n\n## การเพิ่ม prompt เข้าคลัง\n\n1. เลือกผลลัพธ์ทางธุรกิจหนึ่งอย่างและ prompt pack ที่ตรงกัน\n2. ยืนยันว่าความสามารถที่ต้องใช้มีอยู่จริงใน [tool catalog](\u002Fth\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Ftool-catalog) และใน `tools\u002Flist` ตอน runtime\n3. เขียนอย่างน้อยสามสถานการณ์ ได้แก่ การประเมินภาพกว้าง การเจาะประเด็น และการตัดสินใจหรือขั้นตอนต่อไป เพิ่มกรณีเปรียบเทียบหรือคุณภาพข้อมูลเมื่อแตกต่างชัดเจน\n4. ระบุว่า prompt นั้นต้องใช้สิทธิ์ใด ถ้าตอบได้ด้วยการอ่านอย่างเดียวก็บอกให้ชัด ถ้าจบด้วยการเขียนข้อมูล ให้ระบุชื่อเครื่องมือและสิทธิ์\n5. ตรวจว่ารหัสทุกตัวใน prompt ค้นหาได้จริง ไม่ต้องเดา\n6. กำหนดพฤติกรรมสำหรับกรณีข้อมูลว่าง ฟิลด์ถูกบังด้วยสิทธิ์ แผนไม่รองรับ ขาดสิทธิ์ และข้อมูลยังไม่ครบ\n7. ทดสอบทุกแพลตฟอร์มที่ prompt อ้างถึง\n8. ให้ลิงก์ของผลิตภัณฑ์ชี้ไปที่ `https:\u002F\u002Fapp.dataglasslabs.com`\n",{"title":599,"description":2216},"6VNJwQZtz3cETT_z_iAERwyJwC3olczd6zl4NuLQEP0",{"data":2225,"body":2226},{},{"type":2227,"children":2228},"root",[2229],{"type":2230,"tag":683,"props":2231,"children":2232},"element",{},[2233],{"type":2234,"value":2216},"text",1792785057690]