๐Ÿ”ฅ Trouble Shooting - UUNO ํ”„๋กœ์ ํŠธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ธฐ๋ก ๋ฌดํ•œ ๋ Œ๋”๋ง ๋ฌธ์ œ

์Š˜ยท2025๋…„ 4์›” 30์ผ

๐Ÿ”ฅ Trouble Shooting

๋ชฉ๋ก ๋ณด๊ธฐ
22/23

uuno ๊ฐœ๋ฐœ ์ค‘ ๋งˆ์ฃผํ–ˆ๋˜ ์ฃผ์š” ์ด์Šˆ๋“ค๊ณผ ํ•ด๊ฒฐ ๊ณผ์ •์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”„ ๋ฌดํ•œ ๋ Œ๋”๋ง ๋ฌธ์ œ

๐Ÿ“‹ ๋ฌธ์ œ ์ƒํ™ฉ

  • last_activity ์—…๋ฐ์ดํŠธ๋กœ ์ธํ•œ ๋ฌดํ•œ ๋ Œ๋”๋ง ๋ฐœ์ƒ
  • ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ์‹œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์ƒ์„ฑ๋จ

๐Ÿ” ์›์ธ ๋ถ„์„

// ๋ฌธ์ œ๊ฐ€ ๋˜๋˜ ์ฝ”๋“œ
const updateActivity = () => {
  setLastActivity(Date.now());
  // ์ด ์—…๋ฐ์ดํŠธ๊ฐ€ ๋‹ค์‹œ ๋ Œ๋”๋ง์„ ํŠธ๋ฆฌ๊ฑฐ
};

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • last_activity ๊ด€๋ จ ๋กœ์ง ์™„์ „ ์ œ๊ฑฐ
  • ์„ธ์…˜ ๊ด€๋ฆฌ ๋กœ์ง ๋‹จ์ˆœํ™”
  • ๋ถˆํ•„์š”ํ•œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ ์ œ๊ฑฐ

๐Ÿ—‚๏ธ ์„ธ์…˜ ๊ด€๋ฆฌ ๋ฌธ์ œ

๐Ÿ“‹ ๋ฌธ์ œ ์ƒํ™ฉ

  • ์ƒˆ๋กœ๊ณ ์นจํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์ƒ์„ฑ๋จ
  • ์„ธ์…˜ ID๊ฐ€ ์ œ๋Œ€๋กœ ์œ ์ง€๋˜์ง€ ์•Š์Œ

๐Ÿ” ์›์ธ ๋ถ„์„

// ๋ฌธ์ œ๊ฐ€ ๋˜๋˜ ์ฝ”๋“œ
const initSession = async () => {
  // ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์„ธ์…˜ ์ƒ์„ฑ
  const newSession = await createNewSession();
};

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๊ธฐ์กด ์„ธ์…˜ ID ํ™•์ธ ๋กœ์ง ์ถ”๊ฐ€
  • ์„ธ์…˜ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์ถ”๊ฐ€
  • ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€ ๋Œ€์‹  ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ

๐Ÿ“ธ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ๋ฌธ์ œ

๐Ÿ“‹ ๋ฌธ์ œ ์ƒํ™ฉ

  • Stage๊ฐ€ ์ค€๋น„๋˜๊ธฐ ์ „์— ์ด๋ฏธ์ง€ ๋‚ด๋ณด๋‚ด๊ธฐ ์‹œ๋„
  • ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ์‹คํŒจ

๐Ÿ” ์›์ธ ๋ถ„์„

// ๋ฌธ์ œ๊ฐ€ ๋˜๋˜ ์ฝ”๋“œ
exportAsImage: async () => {
  // Stage ์ค€๋น„ ์ƒํƒœ ํ™•์ธ ์—†์ด ๋ฐ”๋กœ ์‹คํ–‰
  return stageRef.current.toDataURL();
};

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • Stage ์ค€๋น„ ์ƒํƒœ ํ™•์ธ ๋กœ์ง ์ถ”๊ฐ€
  • ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์ฆ๊ฐ€ (1์ดˆ โ†’ 2์ดˆ)
  • ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๊ฐœ์„ 

๐Ÿท๏ธ ํƒ€์ž… ์—๋Ÿฌ ๋ฌธ์ œ

๐Ÿ“‹ ๋ฌธ์ œ ์ƒํ™ฉ

  • CARD_INTERACTIONS ๊ด€๋ จ ํƒ€์ž… ์—๋Ÿฌ ๋ฐœ์ƒ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์ˆ˜์™€ ํƒ€์ž… ๋ถˆ์ผ์น˜

๐Ÿ” ์›์ธ ๋ถ„์„

// ๋ฌธ์ œ๊ฐ€ ๋˜๋˜ ์ฝ”๋“œ
interface TABLES {
  // CARD_INTERACTIONS ํƒ€์ž… ์ •์˜ ๋ˆ„๋ฝ
}

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์ˆ˜ ํŒŒ์ผ์— ํƒ€์ž… ์ •์˜ ์ถ”๊ฐ€
  • ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ
  • ํƒ€์ž… ์ผ๊ด€์„ฑ ์œ ์ง€

๐ŸŽฏ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋ฌธ์ œ

๐Ÿ“‹ ๋ฌธ์ œ ์ƒํ™ฉ

  • ๋ถˆํ•„์š”ํ•œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋“ฑ๋ก
  • ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ฐ€๋Šฅ์„ฑ

๐Ÿ” ์›์ธ ๋ถ„์„

// ๋ฌธ์ œ๊ฐ€ ๋˜๋˜ ์ฝ”๋“œ
useEffect(() => {
  window.addEventListener('mousemove', updateActivity);
  window.addEventListener('keydown', updateActivity);
  // ํด๋ฆฐ์—… ํ•จ์ˆ˜ ์—†์Œ
});

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์ตœ์ ํ™”
  • ํด๋ฆฐ์—… ํ•จ์ˆ˜ ์ถ”๊ฐ€
  • passive: true ์˜ต์…˜ ์‚ฌ์šฉ

๐ŸŽ‰ ๊ฐœ์„ ๋œ ๊ฒฐ๊ณผ

  • โœจ ์„ธ์…˜ ๊ด€๋ฆฌ ์•ˆ์ •ํ™”
  • ๐Ÿ”„ ๋ฌดํ•œ ๋ Œ๋”๋ง ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ๐Ÿ“ธ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ ์ •์ƒํ™”
  • ๐Ÿท๏ธ ํƒ€์ž… ์‹œ์Šคํ…œ ์•ˆ์ •ํ™”
  • โšก ์„ฑ๋Šฅ ์ตœ์ ํ™”

์ด๋Ÿฌํ•œ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ณผ์ •์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•ˆ์ •์„ฑ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€