쿠폰 자동 입력 사이트 작성

## 수정 내용

- **Sign Error 근본 원인 2가지 수정**:
  1. `now()` 함수가 **초** 단위(`Date.now()/1000`)를 반환하고 있었음 → **밀리초**(`Date.now()`)로 수정 (설계서 명시 사항)
  2. 세션 쿠키 추출 시 쿠키 이름에 'session'이 없으면 빈 값으로 보내고 있었음 → **모든 쿠키를 전체 전송**으로 수정

- **쿠폰 코드 대소문자 유지**: `toUpperCase()` 제거

- **FID localStorage 저장**: 한번 입력하면 다음 방문 시 자동으로 로드되어 바로 쿠폰 지급 시작

- **쿠폰 추가 시 자동 리딤**: 새 쿠폰 등록하면 DB에 저장된 **모든 유저**에게 백그라운드로 자동 지급
This commit is contained in:
hyoseung930
2026-04-16 18:29:13 +09:00
parent d8fc77789c
commit 107f1ffe84
4 changed files with 66 additions and 13 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ const activeCoupons = computed(() => store.coupons.filter((c) => c.is_active &&
async function add() {
if (!newCode.value.trim()) return;
const code = newCode.value.trim().toUpperCase();
const code = newCode.value.trim();
await store.addCoupon(code, code);
newCode.value = '';
}
+1
View File
@@ -60,6 +60,7 @@ export const useWosStore = defineStore('wos', {
const { data } = await axios.post('/api/player', { fid });
this.player = data;
this.fid = fid;
localStorage.setItem('wos_fid', fid);
await Promise.all([this.loadHistory(), this.redeemAll()]);
this.status = 'idle';
} catch (err: any) {
+11 -2
View File
@@ -68,19 +68,28 @@ import CouponManager from '../components/CouponManager.vue';
const store = useWosStore();
const fidInput = ref('');
onMounted(() => {
onMounted(async () => {
store.loadCoupons();
store.loadSavedUsers();
const savedFid = localStorage.getItem('wos_fid');
if (savedFid) {
fidInput.value = savedFid;
await store.searchPlayer(savedFid);
store.loadSavedUsers();
}
});
async function searchPlayer() {
if (!fidInput.value.trim()) return;
await store.searchPlayer(fidInput.value.trim());
const fid = fidInput.value.trim();
localStorage.setItem('wos_fid', fid);
await store.searchPlayer(fid);
store.loadSavedUsers();
}
async function selectUser(fid: string) {
fidInput.value = fid;
localStorage.setItem('wos_fid', fid);
await store.searchPlayer(fid);
store.loadSavedUsers();
}