프로젝트

일반

사용자정보

Actions

이슈 #588

진행중
CP HP

[개선점] Point History에 Quest ID 가 그대로 노출

이슈 #588: [개선점] Point History에 Quest ID 가 그대로 노출

Chris Park이(가) 약 5시간 전에 추가함.

상태:
신규
우선순위:
보통
담당자:
시작일:
2026/07/29
완료일:
진척도:

0%

추정시간:

설명

Point History에 어떤 퀘스트로 포인트를 획득했는지 리스트가 뜨는데 여기에 퀘스트 ID가 그대로 출력됩니다.

퀘스트 ID 대신 퀘스트 이름으로 출력되어야 하지 않을까 합니다.
유저에게 Lifetime-welcome 이라고 띄워줄 필요는 없지 않을까요?


파일

20260729-111215-327.png (59 KB) 20260729-111215-327.png Chris Park, 2026/07/29 02:12
20260729-111215-327.png

HP Henry Park이(가) 3달 전에 변경 Actions #1

확인 결과와 결정이 필요한 사항을 공유합니다.

현재 퀘스트에는 사람이 읽는 이름 자체가 없습니다. 서버가 보유한 값은 quest_id, 측정 지표, 목표치, 기간, 보상이며 표시용 이름은 저장하지 않습니다.

또한 Point History 응답 규격은 번역된 표시 문자열을 담지 않고 화면 문구는 클라이언트가 구성하도록 설계되어 있습니다. 앱이 표시할 수 있는 값이 quest_id뿐이라 그대로 노출되고 있습니다.

따라서 이 건은 표시 문자열을 어디에서 관리할지 정해야 진행할 수 있습니다.

  1. 앱에 문자열 테이블을 둔다. 현재 설계와 일치하고 단순합니다. 다만 어드민에서 퀘스트를 새로 추가하면 앱 배포 전까지 해당 퀘스트는 계속 quest_id로 표시됩니다.

  2. 어드민에 문자열 테이블을 둔다. 퀘스트 생성 시 언어별 이름을 함께 입력하고 서버가 전달합니다. 신규 퀘스트도 즉시 이름으로 표시되지만, 서버가 표시 문자열을 전달하지 않는다는 기존 원칙을 변경해야 합니다.

  3. 두 가지를 병행한다. 어드민 값이 있으면 사용하고 없으면 앱의 기본 문자열로 대체합니다.

판단 기준은 앱 배포 없이 퀘스트를 추가할 계획이 있는지 여부입니다. 그렇다면 어드민 관리가 필요하고, 퀘스트 구성이 거의 변경되지 않는다면 앱 관리가 단순합니다.

의견 주시면 그에 맞춰 범위를 정하겠습니다.

HP Henry Park이(가) 3달 전에 변경 Actions #2

방향을 정했습니다. 어드민에서 언어별 문자열 테이블을 관리하는 방식으로 진행합니다.

퀘스트 생성과 수정 시 언어별 표시 이름을 함께 관리하고, 그 값이 클라이언트까지 전달되도록 계약을 확장합니다. 앱 배포 없이 추가된 퀘스트도 이름으로 표시됩니다.

서버가 표시 문자열을 전달하지 않는다는 기존 설계 결정을 변경하는 것이므로 관련 규격 주석과 설계 문서도 함께 갱신할 예정입니다.

착수 전 정리할 사항이 남아 있습니다.

  • 언어 선택을 서버가 수행할지, 언어별 값을 모두 전달하고 클라이언트가 선택할지
  • 지원 언어 범위
  • 번역이 없는 언어의 대체 규칙
  • 기존 퀘스트 이름의 초기 입력 방식

설계안이 정리되면 다시 공유하겠습니다. Point History 외에 퀘스트 목록 화면도 같은 문제가 있는지 함께 확인합니다.

HP Henry Park이(가) 3달 전에 변경 · Edited Actions #3

퀘스트 이름 입력을 개발팀에 인계합니다.

서버 작업은 끝나서 배포까지 완료했습니다. merge commit은 7342460c입니다. 이제 표시 이름이 들어 있는 퀘스트는 quest ID 대신 그 이름으로 보입니다. 남은 일은 확정된 영문 이름 30개를 실제로 입력하는 것뿐입니다.

이 입력이 수동인 이유가 있습니다. 어드민 화면 https://edge.alphea.ai/admin/connect/quests 은 Okta SAML 뒤에 있습니다. ADMIN_AUTH_REQUIRED=true, ADMIN_SAML_ENABLED=true이고 허용 도메인은 alphea.io입니다. 자동화용 비대화형 credential이 없고 loopback도 예외가 아닙니다. 스크립트로 입력하려면 session cookie와 CSRF 토큰을 위조해야 해서 시도하지 않았습니다. alphea.io Okta 계정을 가진 사람이 브라우저로 로그인해 입력하는 것이 정상 경로입니다.

입력 절차입니다.

  • alphea.io Okta 계정으로 https://edge.alphea.ai/admin/connect/quests 에 로그인합니다.
  • 각 행의 Update form에서 name (en) 필드에 아래 값을 넣습니다. 이 경로가 session cookie, CSRF, same-origin, expected-before, command audit를 모두 유지합니다.
  • 값은 적힌 그대로 넣습니다. 임의로 다듬거나 순서를 바꾸지 않습니다. 제약에 걸려 거부되는 항목이 있으면 그 행은 그대로 두고 어느 행이 어떤 제약에 걸렸는지 이 이슈에 남겨 주세요.

활성이고 카탈로그에 보이는 20개입니다.

  • lifetime-welcome → Welcome bonus
  • daily-login-1 → Daily check-in
  • daily-foreground-3600 → 1 hour contributed
  • daily-foreground-10800 → 3 hours contributed
  • daily-foreground-21600 → 6 hours contributed
  • daily-foreground-43200 → 12 hours contributed
  • referral-inviter-daily → 1 friend active today
  • referral-level-5 → 5 friends active today
  • referral-level-10 → 10 friends active today
  • referral-level-20 → 20 friends active today
  • referral-level-50 → 50 friends active today
  • referral-level-100 → 100 friends active today
  • referral-level-500 → 500 friends active today
  • referral-level-1000 → 1,000 friends active today
  • valid-invitee-1 → 1 friend joined
  • valid-invitee-5 → 5 friends joined
  • valid-invitee-10 → 10 friends joined
  • valid-invitee-25 → 25 friends joined
  • valid-invitee-50 → 50 friends joined
  • valid-invitee-100 → 100 friends joined

비활성이고 카탈로그에 숨겨진 10개입니다.

  • lifetime-foreground-86400 → Total 1 day contributed
  • lifetime-foreground-259200 → Total 3 days contributed
  • lifetime-foreground-604800 → Total 7 days contributed
  • lifetime-foreground-2592000 → Total 30 days contributed
  • lifetime-foreground-7776000 → Total 90 days contributed
  • lifetime-foreground-15552000 → Total 180 days contributed
  • lifetime-foreground-31536000 → Total 365 days contributed
  • referral-level-1 → 1 friend active today
  • referral-level-25 → 25 friends active today
  • referral-completion → Total 100 friends active

실수처럼 보이지만 아닌 것이 두 가지 있습니다.

  • referral-level-1과 referral-inviter-daily의 문구가 같습니다. 둘 다 친구 1명 활동 기준이고 앞의 것이 뒤의 것으로 대체된 것으로 보여, 사용자 입장에서는 같은 성취입니다.
  • referral-level-1000에는 쉼표가 들어갑니다. CHECK 제약이 공백 제거 기준 1~128자라 통과할 것으로 보는데, 만약 거부되면 쉼표 없이 넣고 여기에 알려 주세요.

입력이 끝나면 코어 쪽에서 30개가 모두 채워졌는지, 저장된 값이 위 목록과 정확히 일치하는지 확인합니다. 이 확인은 개인정보를 읽지 않고 credential도 필요하지 않습니다.

앱 쪽 변경은 별도 MR이고 아직 merge되지 않았습니다. 이 입력만으로는 클라이언트 화면에 반영되지 않고, 서버 쪽이 완성되는 것까지입니다.

Actions

내보내기 PDF Atom