ๆญฃๅœจ้ชŒ่ฏ่บซไปฝ...
๐Ÿ” ่ฏทไฝฟ็”จๆŽˆๆƒ่ดฆๅท็™ปๅฝ•

TC Maintenance v5.0 ยท Firebase + Firestore

๐Ÿ“Š ๆ€ป่งˆ
โ— ๅŠ ่ฝฝไธญ
๐Ÿ”งTC Admin
ๅ‘˜ๅทฅ๏ผš
ๆ—ถ้—ด่Œƒๅ›ด๏ผš
โ€”
๐Ÿ”ด ้€พๆœŸ
โ€”
๐Ÿ“… ไปŠๆ—ฅ
โ€”
๐Ÿ”„ ่ฟ›่กŒไธญ
๐Ÿ””
ๅผ€ๅฏๆ้†’
โ€”
๐Ÿ“‹ ๆ€ปไปปๅŠก โ†’
โ€”
โœ… ๅทฒๅฎŒๆˆ โ†’
โ€”
โณ ๅพ…ๅค„็† โ†’
โ€”
๐Ÿ“ˆ ๅฎŒๆˆ็އ
๐Ÿ“ˆ 2026 ๆœˆๅบฆ่ถ‹ๅŠฟ๏ผˆ็œŸๅฎžๆ•ฐๆฎ๏ผ‰
๐Ÿ“Œ ไปปๅŠก็ฑปๅž‹ๅˆ†ๅธƒ
ๆš‚ๆ— ๆ•ฐๆฎ
๐Ÿ‘ฅ ๅ‘˜ๅทฅๅทฅไฝœ้‡
ๆš‚ๆ— ๆ•ฐๆฎ
โณ ๆœ€ๆ–ฐๅพ…ๅค„็†ไปปๅŠก
ๆš‚ๆ— ๅพ…ๅค„็†ไปปๅŠก โœ…
่‡ณ
ๅทฒ้€‰ 0 ๆก
ๆ—ฅๆœŸ ๆฅผๆ ‹ๅ•ๅ…ƒ ไปปๅŠก็ฑปๅž‹ ่ดŸ่ดฃไบบ ็Šถๆ€ ไผ˜ๅ…ˆ็บง ๆˆชๆญขๆ—ฅๆœŸ ๆ“ไฝœ
โณ ๅพ…ๅค„็†0
๐Ÿ”„ ่ฟ›่กŒไธญ0
โœ… ๅทฒๅฎŒๆˆ0
่ฏฆ็ป†ๆ•ฐๆฎ
ๅ‘˜ๅทฅๆ€ปไปปๅŠกๅทฒๅฎŒๆˆๅพ…ๅค„็†ๅฎŒๆˆ็އ
๐Ÿ† ๅ‘˜ๅทฅๆŽ’่กŒๆฆœ๏ผˆๆœฌๆœˆ๏ผ‰
ๆฅผๆ ‹ๆ€ปไปปๅŠกCHANGE & FIXSITE CHECKPASS KEYๅ…ถไป–ๅฎŒๆˆ็އ
ๆˆ–่‡ชๅกซ
ๆˆ–่‡ชๅกซ
๐Ÿ“ท ็‚นๅ‡ปไธŠไผ ็…ง็‰‡
โณ ๆ‰€ๆœ‰ๅพ…ๅค„็†ไปปๅŠก
ๆš‚ๆ— 
๐Ÿ“Š
ๅ…จ้ƒจ CSV
ไธ‹่ฝฝ CSV ๆ–‡ไปถ
โณ
ๅพ…ๅค„็†ไปปๅŠก
้œ€่ทŸ่ฟ›็š„่ฎฐๅฝ•
๐Ÿ“‹
ๅŒๆญฅๅˆฐ Google Sheets
ๅ…จ้‡ๅค‡ไปฝๅˆฐไบ‘็ซฏ่กจๆ ผ
๐Ÿ–จ๏ธ
ๆ‰“ๅฐไปปๅŠกๅˆ—่กจ
่ฐƒ็”จ็ณป็ปŸๆ‰“ๅฐ/ๅญ˜ PDF
๐Ÿ“Š
ๆœˆๅบฆๆŠฅๅ‘Š PDF
็”ŸๆˆๅฎŒๆ•ดๆœˆๅบฆ็ปดไฟฎๆŠฅๅ‘Š
๐Ÿ”
ๅฏผๅ‡บ็ญ›้€‰็ป“ๆžœ
ๆŒ‰ๅฝ“ๅ‰็ญ›้€‰ๆกไปถ
๐Ÿข
ๆฅผๆ ‹ๆ‰น้‡ๅฎŒๆˆ
้€‰ๆฅผๆ ‹ๅฎŒๆˆๆ‰€ๆœ‰ๅพ…ๅค„็†
่‡ชๅฎšไน‰ๅฏผๅ‡บๆกไปถ
๐Ÿ“‹
โ€”
tasks ้›†ๅˆ
๐Ÿ—‚๏ธ
โ€”
ๅญ—ๆฎตๆ•ฐ้‡
๐Ÿ—„๏ธ tasks ้›†ๅˆ็ป“ๆž„
๐Ÿ“
tasks
Firestore Collection ยท โ€” ไธชๆ–‡ๆกฃ
๐Ÿ“„ ๆœ€ๆ–ฐๆ–‡ๆกฃ๏ผˆๅ‰5ๆก๏ผ‰
๐Ÿ” ๆ–‡ๆกฃๆŸฅ็œ‹ๅ™จ
็‚นๅ‡ป"ๆŸฅ็œ‹"ๆŸฅ็œ‹ๆ–‡ๆกฃ่ฏฆๆƒ…
๐Ÿ“‹
โ€”
ๆ•ฐๆฎ่กŒๆ•ฐ
๐Ÿ“Š
โ€”
ๅˆ—ๆ•ฐ
๐Ÿ“‹ Google Sheets ้›†ๅˆ็ป“ๆž„
ๅˆ—ๅญ—ๆฎตๅ็งฐ็ฑปๅž‹็คบไพ‹
็‚นๅ‡ปใ€Œ๐Ÿ”„ ๅˆทๆ–ฐใ€ๅŠ ่ฝฝ Sheets ็ป“ๆž„
๐Ÿ“„ ๆœ€ๆ–ฐๆ•ฐๆฎ้ข„่งˆ๏ผˆๆœ€ๅŽ 5 ่กŒ๏ผ‰
็‚นๅ‡ปๅˆทๆ–ฐๅŽๆ˜พ็คบ
1
ๆ ผๅผ่ฏดๆ˜Ž
2
้€‰ๆ‹ฉๆ–‡ไปถ
3
้ข„่งˆ็กฎ่ฎค
4
ๅฏผๅ…ฅๅฎŒๆˆ
๐Ÿ“‹ CSV ๆ ผๅผ่ฆๆฑ‚
็ฌฌไธ€่กŒไธบๆ ‡้ข˜่กŒ๏ผŒๅˆ—ๅ้กบๅบไธ้™๏ผŒๆ”ฏๆŒไปฅไธ‹ๅญ—ๆฎต๏ผš
ๅฟ…ๅกซๅญ—ๆฎต
ๆ—ฅๆœŸ ๆฅผๆ ‹ ๅ•ๅ…ƒ ไปปๅŠก็ฑปๅž‹ ่ดŸ่ดฃไบบ ็Šถๆ€
้€‰ๅกซๅญ—ๆฎต
ๅค„็†ๆ—ฅๆœŸ ๅค‡ๆณจ ไผ˜ๅ…ˆ็บง ๆˆชๆญขๆ—ฅๆœŸ
๐Ÿ“…
ๆ—ฅๆœŸๆ ผๅผ๏ผšYYYY-MM-DD๏ผˆๅฆ‚ 2026-04-05๏ผ‰
๐Ÿšฆ
็Šถๆ€ๅกซๅ†™๏ผšๅทฒๅฎŒๆˆ / ๅพ…ๅค„็† / ่ฟ›่กŒไธญ๏ผˆๆˆ– done / pending / inprogress๏ผ‰
๐ŸŽฏ
ไผ˜ๅ…ˆ็บงๅกซๅ†™๏ผš้ซ˜ / ไธญ / ไฝŽ๏ผˆๆˆ– high / medium / low๏ผ‰
๐Ÿ’ก
้€‰ๅกซๅญ—ๆฎตๅฏไปฅ็•™็ฉบ๏ผŒ็ณป็ปŸ่‡ชๅŠจ่ทณ่ฟ‡
๐Ÿ“ค ไธŠไผ  CSV ๆ–‡ไปถ
โ˜๏ธ
ๆ‹–ๆ‹ฝๆ–‡ไปถๅˆฐ่ฟ™้‡Œ๏ผŒๆˆ–็‚นๅ‡ป้€‰ๆ‹ฉ
ๆ”ฏๆŒ .csv ๆ ผๅผๆ–‡ไปถ
๐Ÿ’ฐ ๆ”ถๅ…ฅๆŠฅ่กจ
โœ…
โ€”
ๅฎŒๆˆไปปๅŠกๆ•ฐ
๐Ÿ’ต
โ€”
ๆ€ปๆ”ถๅ…ฅ (RM)
๐Ÿ“‹
โ€”
ๅนณๅ‡ๆฏไปปๅŠก (RM)
๐Ÿ‘ฅ ๅ‘˜ๅทฅๆ”ถๅ…ฅๆ˜Ž็ป†
๐Ÿ”ง ไปปๅŠกๅ•ไปท่ฎพ็ฝฎ
๐Ÿ’ก ่ฎพ็ฝฎๆฏ็งไปปๅŠก็ฑปๅž‹็š„ๅ•ไปท๏ผˆRM๏ผ‰๏ผŒ็ณป็ปŸ่‡ชๅŠจ่ฎก็ฎ—ๅฎŒๆˆไปปๅŠก็š„ๆ€ปๆ”ถๅ…ฅ
๐Ÿ“‹ ๅทฒๅฎŒๆˆไปปๅŠกๆ˜Ž็ป†
๐Ÿ“ธ Google Drive ็…ง็‰‡ไธŠไผ ่ฎพ็ฝฎ

้œ€่ฆๅ…ˆ้ƒจ็ฝฒ Google Apps Script๏ผŒ่Žทๅพ— Web App URL ๅŽๅกซๅ…ฅไธ‹ๆ–นใ€‚

Apps Script ไปฃ็ ๏ผš
function doPost(e){ var d=JSON.parse(e.postData.contents); var b=Utilities.newBlob(Utilities.base64Decode(d.data),d.mime,d.name); var f=DriveApp.getFolderById(d.folder||'root').createFile(b); f.setSharing(DriveApp.Access.ANYONE_WITH_LINK,DriveApp.Permission.VIEW); return ContentService.createTextOutput( JSON.stringify({url:f.getUrl(),id:f.getId()}) ).setMimeType(ContentService.MimeType.JSON); }
๐Ÿข ๆฅผๆ ‹ / ๅ•ๅ…ƒ็ฎก็†

ๆทปๅŠ ๅŽๆ‰€ๆœ‰ไบบๅฎžๆ—ถ็œ‹ๅˆฐๆ–ฐๆฅผๆ ‹

๐Ÿ‘ท ๅ‘˜ๅทฅ็ฎก็†
๐Ÿ”ง TC
โ€”
๐Ÿ‘‹ ไฝ ๅฅฝ
โณ
โ€”
ๅพ…ๅค„็†
๐Ÿ”„
โ€”
่ฟ›่กŒไธญ
โœ…
โ€”
ๅทฒๅฎŒๆˆ
ๆœฌๆœˆๅฎŒๆˆ็އ โ€”
๐Ÿ“‹ ๆœ€่ฟ‘ไปปๅŠก

โœ๏ธ ๅฝ•ๅ…ฅ่ฎฐๅฝ•

ๅกซๅ†™็ปดไฟฎๅทฅไฝœ่ฎฐๅฝ•

ๆˆ–่‡ชๅกซ
ๆˆ–่‡ชๅกซ
๐Ÿ“ท ็‚นๅ‡ปไธŠไผ ็…ง็‰‡

๐Ÿ“‹ ไปปๅŠก 0

ๆŸฅ็œ‹ไธŽๆ›ดๆ–ฐไปปๅŠก็Šถๆ€

๐Ÿ”
๐Ÿ”ง TC
โ€”
๐Ÿ‘‹ ไฝ ๅฅฝ
โณ
โ€”
ๅพ…ๅค„็†
๐Ÿ”„
โ€”
่ฟ›่กŒไธญ
โœ…
โ€”
ๅทฒๅฎŒๆˆ
ๆœฌๆœˆๅฎŒๆˆ็އ โ€”
๐Ÿ“‹ ๆœ€่ฟ‘ไปปๅŠก

โœ๏ธ ๅฝ•ๅ…ฅ่ฎฐๅฝ•

ๅกซๅ†™็ปดไฟฎๅทฅไฝœ่ฎฐๅฝ•

ๆˆ–่‡ชๅกซ
ๆˆ–่‡ชๅกซ
๐Ÿ“ท ็‚นๅ‡ปไธŠไผ ็…ง็‰‡

๐Ÿ“‹ ไปปๅŠก 0

ๆŸฅ็œ‹ไธŽๆ›ดๆ–ฐไปปๅŠก็Šถๆ€

๐Ÿ”