diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..709f9c03
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/../../../../../../../:\Users\multicampus\Desktop\SSAFY_third\s03p31a303\.idea/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 00000000..721d6e9b
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 00000000..6010c780
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000..03d9549e
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 00000000..fdc392fe
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..a909147f
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..ccab8741
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/s03p31a303.iml b/.idea/s03p31a303.iml
new file mode 100644
index 00000000..d6ebd480
--- /dev/null
+++ b/.idea/s03p31a303.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/controller/RunningController.java b/backend/RunWithMe/src/main/java/kr/co/rwm/controller/RunningController.java
index deaf339f..5f206a95 100644
--- a/backend/RunWithMe/src/main/java/kr/co/rwm/controller/RunningController.java
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/controller/RunningController.java
@@ -63,8 +63,8 @@ public ResponseEntity getTempRecord(@PathVariable int userId) {
System.out.println("running/controller/temp/getRecord");
User loginUser = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- List records = recordTempRepository.findRecordByUserId(userId); // 토큰X
-// List records = recordTempRepository.findRecordByUserId(loginUser.getUserId()); // 토큰O 추후에 이렇게 바꿀것
+// List records = recordTempRepository.findRecordByUserId(userId); // 토큰X
+ List records = recordTempRepository.findRecordByUserId(loginUser.getUserId()); // 토큰O 추후에 이렇게 바꿀것
return new ResponseEntity(new
Response(StatusCode.OK, ResponseMessage.RUNNING_GPS_SUCCESS, records), HttpStatus.OK);
}
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/controller/UserController.java b/backend/RunWithMe/src/main/java/kr/co/rwm/controller/UserController.java
index 81d4cc54..0c1a238a 100644
--- a/backend/RunWithMe/src/main/java/kr/co/rwm/controller/UserController.java
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/controller/UserController.java
@@ -32,6 +32,7 @@
import kr.co.rwm.model.StatusCode;
import kr.co.rwm.service.AreaService;
import kr.co.rwm.service.JwtTokenProvider;
+import kr.co.rwm.service.RanksService;
import kr.co.rwm.service.S3Service;
import kr.co.rwm.service.UserService;
import lombok.RequiredArgsConstructor;
@@ -61,9 +62,8 @@ public class UserController {
private final RedisTemplate logoutRedis;
private final S3Service s3Service;
private final AreaService areaService;
-
- @Autowired
- private UserService userService;
+ private final UserService userService;
+ private final RanksService rankService;
/**
* 회원가입 - 이메일 중복 여부 True/False를 판단하고, True일 경우 JSON 객체 기반으로 회원가입을 진행한다.
@@ -85,7 +85,8 @@ public ResponseEntity> signup(@RequestBody User user, MultipartFile profile){
}else {
Gugun gugun = areaService.findGugunByGugunId(user.getGugunId().getGugunId());
user.setGugunId(gugun);
- userService.join(user, passwordEncoder.encode(user.getPassword()));
+ User result = userService.join(user, passwordEncoder.encode(user.getPassword()));
+ rankService.join(result);
return new ResponseEntity(new Response(StatusCode.CREATED,ResponseMessage.SIGNUP_SUCCESS),HttpStatus.CREATED);
}
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Gugun.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Gugun.java
index fb4b0f1b..4c36622d 100644
--- a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Gugun.java
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Gugun.java
@@ -1,5 +1,7 @@
package kr.co.rwm.entity;
+import java.io.Serializable;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@@ -18,18 +20,22 @@
@Getter
@Setter
@Builder
-public class Gugun {
+public class Gugun implements Serializable {
- @Id
- @Column(name = "gugun_id")
- private Integer gugunId;
-
- @Column(name = "gugun_name")
- private String gugunName;
-
- @ManyToOne
- @JoinColumn(name = "sido_id", nullable = false)
- private Sido sidoId;
-
-}
+ /**
+ *
+ */
+ private static final long serialVersionUID = 11L;
+ @Id
+ @Column(name = "gugun_id")
+ private Integer gugunId;
+
+ @Column(name = "gugun_name")
+ private String gugunName;
+
+ @ManyToOne
+ @JoinColumn(name = "sido_id", nullable = false)
+ private Sido sidoId;
+
+}
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Ranks.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Ranks.java
new file mode 100644
index 00000000..1ed90828
--- /dev/null
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Ranks.java
@@ -0,0 +1,56 @@
+package kr.co.rwm.entity;
+
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+
+import com.fasterxml.jackson.annotation.JsonIdentityInfo;
+import com.fasterxml.jackson.annotation.ObjectIdGenerators;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@NoArgsConstructor
+@AllArgsConstructor
+@Getter
+@Setter
+@Builder
+public class Ranks {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name="rank_id")
+ private Integer rankId;
+
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name="user_id",referencedColumnName = "user_id")
+ private User userId;
+
+ @ManyToOne
+ @JoinColumn(name="gugun_id", nullable = false)
+ private Gugun gugunId;
+
+ @Column(name = "race_exp", nullable = false)
+ private double raceExp;
+
+ @Column(name = "donate_exp", nullable = false)
+ private double donateExp;
+
+
+ @Column(name = "total_exp", nullable = false)
+ private double totalExp;
+
+
+
+}
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Record.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Record.java
index 893b47d0..671d141a 100644
--- a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Record.java
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Record.java
@@ -26,34 +26,34 @@
@Setter
@Builder
public class Record implements Serializable {
-
- /**
- * Redis에 올리려면 Serializable 필요
- */
- private static final long serialVersionUID = 1L;
+
+ /**
+ * Redis에 올리려면 Serializable 필요
+ */
+ private static final long serialVersionUID = 1L;
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "record_id")
- private Integer recordId;
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "record_id")
+ private Integer recordId;
- @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
- @JoinColumn(name = "running_id")
- private Running runningId;
+ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+ @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+ @JoinColumn(name = "running_id")
+ private Running runningId;
- @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
- @JoinColumn(name = "user_id", nullable = false)
- private User userId;
-
- @Column(name = "accumulated_distance", nullable = false)
- private double accDistance;
-
- @Column(name = "accumulated_time", nullable = false)
- private double accTime;
-
- @Column(name = "speed")
- private double speed;
-
+ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+ @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+ @JoinColumn(name = "user_id", nullable = false)
+ private User userId;
+
+ @Column(name = "accumulated_distance", nullable = false)
+ private double accDistance;
+
+ @Column(name = "accumulated_time", nullable = false)
+ private double accTime;
+
+ @Column(name = "speed")
+ private double speed;
+
}
\ No newline at end of file
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Sido.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Sido.java
index d248c407..bc5f5200 100644
--- a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Sido.java
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Sido.java
@@ -1,5 +1,7 @@
package kr.co.rwm.entity;
+import java.io.Serializable;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@@ -16,13 +18,18 @@
@Getter
@Setter
@Builder
-public class Sido {
+public class Sido implements Serializable {
+
+ /**
+ * Redis에 올리려면 Serializable 필요
+ */
+ private static final long serialVersionUID = 13L;
- @Id
- @Column(name = "sido_id")
- private Integer sidoId;
-
- @Column(name = "sido_name")
- private String sidoName;
-
-}
+ @Id
+ @Column(name = "sido_id")
+ private Integer sidoId;
+
+ @Column(name = "sido_name")
+ private String sidoName;
+
+}
\ No newline at end of file
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/User.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/User.java
index a0d3cf36..6b514f4f 100644
--- a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/User.java
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/User.java
@@ -23,41 +23,45 @@
@Getter
@Setter
@Builder
-public class User implements UserDetails{
-
+public class User implements UserDetails {
+
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
-
+
@OneToOne
@JoinColumn(name = "gugunId")
private Gugun gugunId;
-
+
@Column(name = "user_email", nullable = false)
private String userEmail;
-
+
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Column(name = "user_pw", nullable = false)
private String userPw;
-
+
@Column(name = "user_name", nullable = false)
private String userName;
-
+
@Column(name = "profile")
private String profile;
-
+
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Column(name = "auth", columnDefinition = "boolean default false")
private boolean emailAuth;
-
+
+// @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+// @OneToOne(fetch = FetchType.LAZY, mappedBy="userId", cascade = CascadeType.ALL)
+// private Ranks rank;
+
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String changePw;
-
+
public String getChangePw() {
return this.changePw;
}
-
+
public void setUserPw(String userPw) {
this.userPw = userPw;
}
@@ -67,53 +71,48 @@ public void setUserPw(String userPw) {
private List roles = new ArrayList<>();
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- @Override
- public Collection extends GrantedAuthority> getAuthorities() {
- return this.roles.stream()
- .map(SimpleGrantedAuthority::new)
- .collect(Collectors.toList());
- }
-
- @Override
- public String getUsername() {
- return this.userName;
- }
-
+ @Override
+ public Collection extends GrantedAuthority> getAuthorities() {
+ return this.roles.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList());
+ }
+
+ @Override
+ public String getUsername() {
+ return this.userName;
+ }
+
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- @Override
- public String getPassword() {
- return this.userPw;
- }
-
- public boolean getAuth() {
- return this.emailAuth;
- }
-
- @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- @Override
- public boolean isAccountNonExpired() {
- return true;
- }
-
- @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- @Override
- public boolean isAccountNonLocked() {
- return true;
- }
-
- @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- @Override
- public boolean isCredentialsNonExpired() {
- return true;
- }
-
- @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- @Override
- public boolean isEnabled() {
- return true;
- }
-
-
-
-
+ @Override
+ public String getPassword() {
+ return this.userPw;
+ }
+
+ public boolean getAuth() {
+ return this.emailAuth;
+ }
+
+ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+ @Override
+ public boolean isAccountNonExpired() {
+ return true;
+ }
+
+ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+ @Override
+ public boolean isAccountNonLocked() {
+ return true;
+ }
+
+ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+ @Override
+ public boolean isCredentialsNonExpired() {
+ return true;
+ }
+
+ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
+
}
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/repo/RanksRepository.java b/backend/RunWithMe/src/main/java/kr/co/rwm/repo/RanksRepository.java
new file mode 100644
index 00000000..3c922972
--- /dev/null
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/repo/RanksRepository.java
@@ -0,0 +1,19 @@
+package kr.co.rwm.repo;
+
+import java.util.List;
+import java.util.Optional;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import kr.co.rwm.entity.Ranks;
+import kr.co.rwm.entity.User;
+
+public interface RanksRepository extends JpaRepository{
+ Optional findByRankId(int rankId);
+ Optional findByUserId(int userId);
+ List findTop10ByOrderByRaceExpDesc();
+ List findTop10ByOrderByDonateExpDesc();
+ List findTop10ByOrderByTotalExpDesc();
+ List findAllByOrderByTotalExpDesc();
+
+}
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksService.java b/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksService.java
new file mode 100644
index 00000000..d90c4e52
--- /dev/null
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksService.java
@@ -0,0 +1,39 @@
+package kr.co.rwm.service;
+
+import java.util.List;
+import java.util.Optional;
+
+import kr.co.rwm.entity.Ranks;
+import kr.co.rwm.entity.User;
+
+public interface RanksService {
+ // 회원가입 동시에 rank 테이블에 생성
+ void join(User user);
+
+ // 경험치 쌓기(기록) - 기록id로 분석해서 점수 책정
+ void getRaceExp(int userId,int recordId);
+
+ // 경험치 쌓기(기부) - 챌린지 달성하면 무조건 쌓임
+ void getDonateExp(int userId);
+
+ // 경험치 top 10 (기록) - 사용자 이름, 점수,
+ List raceTop();
+
+ // 경험치 top 10 (기부)
+ List donateTop();
+
+ // 경험치 top 10 (total)
+ List totalTop();
+
+ // 경험치 top 10 (total) - 지역별
+ List totalTopByRegion(int gugunId);
+
+ // 경험치 전체 목록
+ List totalRank();
+
+ // userName으로 다른 사용자 랭킹 조회
+ Optional findByUserName(String userName);
+
+ // 사용자 랭킹관련 정보 조회
+ Optional findByUserId(int userId);
+}
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksServiceImpl.java b/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksServiceImpl.java
new file mode 100644
index 00000000..130ff6e2
--- /dev/null
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksServiceImpl.java
@@ -0,0 +1,78 @@
+package kr.co.rwm.service;
+
+import java.util.List;
+import java.util.Optional;
+
+import org.springframework.stereotype.Service;
+
+import kr.co.rwm.entity.Ranks;
+import kr.co.rwm.entity.User;
+import kr.co.rwm.repo.RanksRepository;
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+@Service
+public class RanksServiceImpl implements RanksService{
+ private final RanksRepository rankRepository;
+ private final int DEFAULT_EXP = 0;
+
+ // 회원가입시 활용 및 매달 스코어 초기화시 사용
+ @Override
+ public void join(User user) {
+ rankRepository.save(Ranks.builder().gugunId(user.getGugunId()).userId(user).raceExp(DEFAULT_EXP).donateExp(DEFAULT_EXP).totalExp(DEFAULT_EXP).build());
+ }
+
+ @Override
+ public void getRaceExp(int userId, int recordId) {
+
+ }
+
+ @Override
+ public void getDonateExp(int userId) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public List raceTop() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List donateTop() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List totalTop() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List totalTopByRegion(int regionId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List totalRank() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Optional findByUserName(String userName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Optional findByUserId(int userId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/service/UserService.java b/backend/RunWithMe/src/main/java/kr/co/rwm/service/UserService.java
index ae6a310a..10ad3ab9 100644
--- a/backend/RunWithMe/src/main/java/kr/co/rwm/service/UserService.java
+++ b/backend/RunWithMe/src/main/java/kr/co/rwm/service/UserService.java
@@ -32,8 +32,8 @@ public Optional findByUserEmail(String userEmail) {
return userRepository.findByUserEmail(userEmail);
}
- public void join(User user, String password) {
- userRepository.save(User.builder().gugunId(user.getGugunId()).userEmail(user.getUserEmail())
+ public User join(User user, String password) {
+ return userRepository.save(User.builder().gugunId(user.getGugunId()).userEmail(user.getUserEmail())
.userName(user.getUsername()).userPw(password).roles(Collections.singletonList("USER")).build());
}
diff --git "a/doc/WireFrame/\352\267\270\353\243\271 \354\261\204\355\214\205 \353\252\251\353\241\235 (o).png" "b/doc/WireFrame/\352\267\270\353\243\271 \354\261\204\355\214\205 \353\252\251\353\241\235 (o).png"
new file mode 100644
index 00000000..9b82779f
Binary files /dev/null and "b/doc/WireFrame/\352\267\270\353\243\271 \354\261\204\355\214\205 \353\252\251\353\241\235 (o).png" differ
diff --git "a/doc/WireFrame/\352\267\270\353\243\271\354\261\204\355\214\205 (o).png" "b/doc/WireFrame/\352\267\270\353\243\271\354\261\204\355\214\205 (o).png"
new file mode 100644
index 00000000..6f079fe7
Binary files /dev/null and "b/doc/WireFrame/\352\267\270\353\243\271\354\261\204\355\214\205 (o).png" differ
diff --git "a/doc/WireFrame/\352\270\260\353\266\200 \354\261\214\353\246\260\354\247\200 - \352\262\260\354\240\234(o).png" "b/doc/WireFrame/\352\270\260\353\266\200 \354\261\214\353\246\260\354\247\200 - \352\262\260\354\240\234(o).png"
new file mode 100644
index 00000000..848f8126
Binary files /dev/null and "b/doc/WireFrame/\352\270\260\353\266\200 \354\261\214\353\246\260\354\247\200 - \352\262\260\354\240\234(o).png" differ
diff --git "a/doc/WireFrame/\352\270\260\353\266\200 \355\230\204\355\231\251 View (o).png" "b/doc/WireFrame/\352\270\260\353\266\200 \355\230\204\355\231\251 View (o).png"
new file mode 100644
index 00000000..cec6d44c
Binary files /dev/null and "b/doc/WireFrame/\352\270\260\353\266\200 \355\230\204\355\231\251 View (o).png" differ
diff --git "a/doc/WireFrame/\353\236\255\355\202\271\354\213\234\354\212\244\355\205\234(o).png" "b/doc/WireFrame/\353\236\255\355\202\271\354\213\234\354\212\244\355\205\234(o).png"
new file mode 100644
index 00000000..7f1bd52a
Binary files /dev/null and "b/doc/WireFrame/\353\236\255\355\202\271\354\213\234\354\212\244\355\205\234(o).png" differ
diff --git "a/doc/WireFrame/\353\237\260\353\213\235 \352\270\260\353\241\235 \355\224\274\353\223\234 (o).png" "b/doc/WireFrame/\353\237\260\353\213\235 \352\270\260\353\241\235 \355\224\274\353\223\234 (o).png"
new file mode 100644
index 00000000..0c9fad14
Binary files /dev/null and "b/doc/WireFrame/\353\237\260\353\213\235 \352\270\260\353\241\235 \355\224\274\353\223\234 (o).png" differ
diff --git "a/doc/WireFrame/\353\237\260\353\213\235 \353\266\204\354\204\235(o).png" "b/doc/WireFrame/\353\237\260\353\213\235 \353\266\204\354\204\235(o).png"
new file mode 100644
index 00000000..05034dc1
Binary files /dev/null and "b/doc/WireFrame/\353\237\260\353\213\235 \353\266\204\354\204\235(o).png" differ
diff --git "a/doc/WireFrame/\353\237\260\353\213\235(Finish).png" "b/doc/WireFrame/\353\237\260\353\213\235(Finish).png"
new file mode 100644
index 00000000..a927e56b
Binary files /dev/null and "b/doc/WireFrame/\353\237\260\353\213\235(Finish).png" differ
diff --git "a/doc/WireFrame/\353\237\260\353\213\235(ing) (o).png" "b/doc/WireFrame/\353\237\260\353\213\235(ing) (o).png"
new file mode 100644
index 00000000..09a9f802
Binary files /dev/null and "b/doc/WireFrame/\353\237\260\353\213\235(ing) (o).png" differ
diff --git "a/doc/WireFrame/\353\241\234\352\267\270\354\235\270(o).png" "b/doc/WireFrame/\353\241\234\352\267\270\354\235\270(o).png"
new file mode 100644
index 00000000..ad73c7c7
Binary files /dev/null and "b/doc/WireFrame/\353\241\234\352\267\270\354\235\270(o).png" differ
diff --git "a/doc/WireFrame/\353\247\210\354\235\264\355\216\230\354\235\264\354\247\200 (\355\232\214\354\233\220\354\240\225\353\263\264\352\264\200\353\240\250) (o).png" "b/doc/WireFrame/\353\247\210\354\235\264\355\216\230\354\235\264\354\247\200 (\355\232\214\354\233\220\354\240\225\353\263\264\352\264\200\353\240\250) (o).png"
new file mode 100644
index 00000000..86957098
Binary files /dev/null and "b/doc/WireFrame/\353\247\210\354\235\264\355\216\230\354\235\264\354\247\200 (\355\232\214\354\233\220\354\240\225\353\263\264\352\264\200\353\240\250) (o).png" differ
diff --git "a/doc/WireFrame/\353\247\244\354\271\255 _ \354\261\204\355\214\205(o).png" "b/doc/WireFrame/\353\247\244\354\271\255 _ \354\261\204\355\214\205(o).png"
new file mode 100644
index 00000000..1600296c
Binary files /dev/null and "b/doc/WireFrame/\353\247\244\354\271\255 _ \354\261\204\355\214\205(o).png" differ
diff --git "a/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" "b/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264(o).png"
new file mode 100644
index 00000000..d5899c7e
Binary files /dev/null and "b/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" differ
diff --git "a/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264_\355\226\204\353\262\204\352\261\260\353\260\224(o) .png" "b/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264_\355\226\204\353\262\204\352\261\260\353\260\224(o) .png"
new file mode 100644
index 00000000..aa51d4db
Binary files /dev/null and "b/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264_\355\226\204\353\262\204\352\261\260\353\260\224(o) .png" differ
diff --git "a/doc/WireFrame/\354\225\214\353\246\274_\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" "b/doc/WireFrame/\354\225\214\353\246\274_\353\251\224\354\235\270 \355\231\224\353\251\264(o).png"
new file mode 100644
index 00000000..e38e90de
Binary files /dev/null and "b/doc/WireFrame/\354\225\214\353\246\274_\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" differ
diff --git "a/doc/WireFrame/\354\261\214\353\246\260\354\247\200View(\354\271\264\355\205\214\352\263\240\353\246\254\353\263\204)(o).png" "b/doc/WireFrame/\354\261\214\353\246\260\354\247\200View(\354\271\264\355\205\214\352\263\240\353\246\254\353\263\204)(o).png"
new file mode 100644
index 00000000..cd627e94
Binary files /dev/null and "b/doc/WireFrame/\354\261\214\353\246\260\354\247\200View(\354\271\264\355\205\214\352\263\240\353\246\254\353\263\204)(o).png" differ
diff --git "a/doc/WireFrame/\354\261\214\353\246\260\354\247\200detail View(o).png" "b/doc/WireFrame/\354\261\214\353\246\260\354\247\200detail View(o).png"
new file mode 100644
index 00000000..7be35844
Binary files /dev/null and "b/doc/WireFrame/\354\261\214\353\246\260\354\247\200detail View(o).png" differ
diff --git "a/doc/WireFrame/\354\271\234\352\265\254\353\252\251\353\241\235(o).png" "b/doc/WireFrame/\354\271\234\352\265\254\353\252\251\353\241\235(o).png"
new file mode 100644
index 00000000..f2b4cde3
Binary files /dev/null and "b/doc/WireFrame/\354\271\234\352\265\254\353\252\251\353\241\235(o).png" differ
diff --git "a/doc/WireFrame/\354\273\244\353\256\244\353\213\210\355\213\260 (o).png" "b/doc/WireFrame/\354\273\244\353\256\244\353\213\210\355\213\260 (o).png"
new file mode 100644
index 00000000..882f47a7
Binary files /dev/null and "b/doc/WireFrame/\354\273\244\353\256\244\353\213\210\355\213\260 (o).png" differ
diff --git "a/doc/\355\224\204\353\241\234\354\240\235\355\212\270 \352\263\204\355\232\215\354\204\234/\353\236\255\355\202\271 \354\213\234\354\212\244\355\205\234 \354\204\244\352\263\204_\352\271\200\355\230\225\355\203\235.txt" "b/doc/\355\224\204\353\241\234\354\240\235\355\212\270 \352\263\204\355\232\215\354\204\234/\353\236\255\355\202\271 \354\213\234\354\212\244\355\205\234 \354\204\244\352\263\204_\352\271\200\355\230\225\355\203\235.txt"
new file mode 100644
index 00000000..52e61470
--- /dev/null
+++ "b/doc/\355\224\204\353\241\234\354\240\235\355\212\270 \352\263\204\355\232\215\354\204\234/\353\236\255\355\202\271 \354\213\234\354\212\244\355\205\234 \354\204\244\352\263\204_\352\271\200\355\230\225\355\203\235.txt"
@@ -0,0 +1,21 @@
+��ŷ
+# ��ο�
+- �� ��� ���� �� �ִ� score - 10 ��
+��O ���� ȹ��
+��X ���� ��ȹ��
+
+# ��Ͽ�
+- �Ϸ��� ���̽� ����
+�Ÿ� ��� �ӷ�
+1. �� �� �Ÿ��� ����� �ӷ¿� ������ �ο�
+km�� �ӷ� - 1km �������� ��ռӷ��� ���� ex) 1km - 6km/h - 6�� | 2km = 6 + 6km/h/*1.2 | => m�� / record ���̺�
+1km *1
+2km *1.2
+....
+��ռӵ��� 20km/h �̻��̸鼭 3�� �̻� ����? üũ x => �ڰ� �ƴ϶� Ż���� �̿����� ���ɼ��� ����
+
+# Total (1�� ����) - reset / ���� or ������ /
+��� + ��� = ��
+
+rank table
+rankID, ����ID, ���� ����, ��� ����ġ, ��� ����ġ, ��Ż ����ġ