Skip to content

Commit c0af80f

Browse files
Merge pull request #62 from pirogramming/feat-chan
Feat chan
2 parents d791f0f + 69888b8 commit c0af80f

19 files changed

Lines changed: 418 additions & 15 deletions

File tree

backend-core/config/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
SECRET_KEY = env('SECRET_KEY')
4444

4545
# SECURITY WARNING: don't run with debug turned on in production!
46-
DEBUG = True
46+
DEBUG = env('DEBUG')
4747

4848
env_allowed_hosts = os.environ.get("ALLOWED_HOSTS","")
4949

backend-core/missions/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,7 @@ def chat_room(request: HttpRequest, mission_id: int, room_id: int) -> HttpRespon
492492
can_confirm_performer = is_author and mission.status == "PENDING_APPROVAL"
493493
show_complete_btn = is_author and mission.status == "MATCHED"
494494
blockable_user = {"id": other_user.id, "username": other_user.username} if other_user else None
495+
mission_end = mission.status == "COMPLETED"
495496

496497
return render(
497498
request,
@@ -507,6 +508,7 @@ def chat_room(request: HttpRequest, mission_id: int, room_id: int) -> HttpRespon
507508
"show_complete_btn": show_complete_btn,
508509
"blockable_user": blockable_user,
509510
"other_user": other_user,
511+
"mission_end" : mission_end
510512
},
511513
)
512514

backend-core/static/chat/js/room.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ class ChatClient {
9999
acceptBtn.addEventListener('click', () => this.acceptMission());
100100
}
101101

102+
const reviewBtn = document.getElementById('reviewPageBtn');
103+
if(reviewBtn) {
104+
reviewBtn.addEventListener('click',() => window.location.href = `/api/users/review_page/${this.missionId}/`)
105+
}
106+
102107
// 메시지 전송
103108
if (this.sendBtn) {
104109
this.sendBtn.addEventListener('click', () => this.sendMessage());
@@ -237,6 +242,7 @@ class ChatClient {
237242
if (res.ok && data.success) {
238243
alert(data.message || '미션이 완료되었습니다.');
239244
if (btn) btn.remove();
245+
window.location.href = `/api/users/review_page/${this.missionId}/`
240246
} else {
241247
alert(data.error || '미션 완료에 실패했습니다.');
242248
btn.disabled = false;
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
/* 가로 393px 고정 및 모바일 인터페이스 최적화 */
2+
body {
3+
margin: 0;
4+
padding: 0;
5+
background-color: #f8f9fa; /* 외부 배경은 차분하게 */
6+
display: flex;
7+
justify-content: center;
8+
font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
9+
-webkit-font-smoothing: antialiased;
10+
}
11+
12+
.container {
13+
width: 393px; /* 팀장님의 물리적 규격 준수 */
14+
min-height: 100vh;
15+
background-color: #ffffff;
16+
box-sizing: border-box;
17+
display: flex;
18+
flex-direction: column;
19+
box-shadow: 0 0 20px rgba(0, 0, 0, 0.05);
20+
}
21+
22+
/* 상단 내비게이션 바: 수평 정렬 및 고정 */
23+
.nav-header {
24+
display: flex;
25+
align-items: center; /* 수직 중앙 정렬 */
26+
padding: 16px 20px;
27+
background-color: #ffffff;
28+
position: sticky;
29+
top: 0;
30+
z-index: 100;
31+
border-bottom: 1px solid #f1f3f5;
32+
}
33+
34+
#back-arrow {
35+
text-decoration: none;
36+
color: #333333;
37+
font-size: 24px;
38+
font-weight: 300;
39+
margin-right: 12px; /* 타이틀과의 간격 확보 */
40+
display: flex;
41+
align-items: center;
42+
justify-content: center;
43+
width: 32px;
44+
height: 32px;
45+
}
46+
47+
.header-title {
48+
font-size: 18px;
49+
font-weight: 700;
50+
color: #212529;
51+
margin: 0;
52+
letter-spacing: -0.5px;
53+
}
54+
55+
/* 본문 콘텐츠 영역 */
56+
.content {
57+
padding: 24px 20px;
58+
flex: 1;
59+
}
60+
61+
.intro-text {
62+
font-size: 15px;
63+
color: #495057;
64+
line-height: 1.6;
65+
margin-bottom: 24px;
66+
}
67+
68+
/* 요약 박스: 강조 포인트 */
69+
.summary-box {
70+
background-color: #f1f7ff; /* 연세 블루 톤 가미 */
71+
border-radius: 12px;
72+
padding: 18px;
73+
margin-bottom: 32px;
74+
}
75+
76+
.summary-title {
77+
font-weight: 700;
78+
font-size: 15px;
79+
color: #004b95; /* 포인트 컬러 */
80+
margin-bottom: 12px;
81+
display: flex;
82+
align-items: center;
83+
}
84+
85+
.summary-box ul {
86+
margin: 0;
87+
padding-left: 18px;
88+
}
89+
90+
.summary-box li {
91+
font-size: 14px;
92+
color: #343a40;
93+
margin-bottom: 8px;
94+
}
95+
96+
/* 상세 섹션 */
97+
.detail-section h2 {
98+
font-size: 16px;
99+
font-weight: 700;
100+
color: #212529;
101+
margin: 28px 0 12px 0;
102+
border-left: 4px solid #004b95; /* 섹션 구분선 */
103+
padding-left: 10px;
104+
}
105+
106+
.detail-section p,
107+
.detail-section li {
108+
font-size: 14px;
109+
color: #6c757d;
110+
line-height: 1.7;
111+
margin: 8px 0;
112+
}
113+
114+
.detail-section ul {
115+
padding-left: 18px;
116+
}
117+
118+
/* 푸터 영역 */
119+
footer {
120+
padding: 40px 20px 30px;
121+
text-align: center;
122+
background-color: #f8f9fa;
123+
border-top: 1px solid #f1f3f5;
124+
}
125+
126+
footer p {
127+
font-size: 12px;
128+
color: #adb5bd;
129+
margin: 4px 0;
130+
}

backend-core/static/users/css/signup.css

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,14 @@ input {
100100
box-sizing: border-box;
101101
}
102102

103+
#password_condition {
104+
font-size: 12px;
105+
color: #667085;
106+
margin-top: 8px;
107+
margin-bottom: 0;
108+
line-height: 1.5;
109+
}
110+
103111
/* 1. 프로필 이미지 업로드 섹션 (새로 추가) */
104112
.profile-upload-group {
105113
display: flex;
@@ -314,8 +322,7 @@ input {
314322
}
315323

316324
/* 8. 이용약관: 하단으로 충분히 공간 띄움 */
317-
.signup-container::after {
318-
content: "회원가입 시 Uniquest의 이용약관 및 개인정보처리방침에 동의하는 것으로 간주됩니다.";
325+
#announcement {
319326
display: block;
320327
margin-top: 30px;
321328
padding: 16px;
@@ -325,4 +332,8 @@ input {
325332
color: #667085;
326333
line-height: 1.6;
327334
text-align: left;
335+
}
336+
337+
#announcement a{
338+
text-decoration: underline;
328339
}

backend-core/static/users/js/review_page.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ async function send_info(){
141141

142142
if (response.ok){
143143
const data = await response.json()
144-
console.log(data)
144+
window.location.href = `/api/users/homepage/`
145145
} else {
146146
console.log('실패')
147147
}

backend-core/staticfiles/chat/js/room.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ class ChatClient {
9999
acceptBtn.addEventListener('click', () => this.acceptMission());
100100
}
101101

102+
const reviewBtn = document.getElementById('reviewPageBtn');
103+
if(reviewBtn) {
104+
reviewBtn.addEventListener('click',() => window.location.href = `/api/users/review_page/${this.missionId}/`)
105+
}
106+
102107
// 메시지 전송
103108
if (this.sendBtn) {
104109
this.sendBtn.addEventListener('click', () => this.sendMessage());
@@ -237,6 +242,7 @@ class ChatClient {
237242
if (res.ok && data.success) {
238243
alert(data.message || '미션이 완료되었습니다.');
239244
if (btn) btn.remove();
245+
window.location.href = `/api/users/review_page/${this.missionId}/`
240246
} else {
241247
alert(data.error || '미션 완료에 실패했습니다.');
242248
btn.disabled = false;
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
/* 가로 393px 고정 및 모바일 인터페이스 최적화 */
2+
body {
3+
margin: 0;
4+
padding: 0;
5+
background-color: #f8f9fa; /* 외부 배경은 차분하게 */
6+
display: flex;
7+
justify-content: center;
8+
font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
9+
-webkit-font-smoothing: antialiased;
10+
}
11+
12+
.container {
13+
width: 393px; /* 팀장님의 물리적 규격 준수 */
14+
min-height: 100vh;
15+
background-color: #ffffff;
16+
box-sizing: border-box;
17+
display: flex;
18+
flex-direction: column;
19+
box-shadow: 0 0 20px rgba(0, 0, 0, 0.05);
20+
}
21+
22+
/* 상단 내비게이션 바: 수평 정렬 및 고정 */
23+
.nav-header {
24+
display: flex;
25+
align-items: center; /* 수직 중앙 정렬 */
26+
padding: 16px 20px;
27+
background-color: #ffffff;
28+
position: sticky;
29+
top: 0;
30+
z-index: 100;
31+
border-bottom: 1px solid #f1f3f5;
32+
}
33+
34+
#back-arrow {
35+
text-decoration: none;
36+
color: #333333;
37+
font-size: 24px;
38+
font-weight: 300;
39+
margin-right: 12px; /* 타이틀과의 간격 확보 */
40+
display: flex;
41+
align-items: center;
42+
justify-content: center;
43+
width: 32px;
44+
height: 32px;
45+
}
46+
47+
.header-title {
48+
font-size: 18px;
49+
font-weight: 700;
50+
color: #212529;
51+
margin: 0;
52+
letter-spacing: -0.5px;
53+
}
54+
55+
/* 본문 콘텐츠 영역 */
56+
.content {
57+
padding: 24px 20px;
58+
flex: 1;
59+
}
60+
61+
.intro-text {
62+
font-size: 15px;
63+
color: #495057;
64+
line-height: 1.6;
65+
margin-bottom: 24px;
66+
}
67+
68+
/* 요약 박스: 강조 포인트 */
69+
.summary-box {
70+
background-color: #f1f7ff; /* 연세 블루 톤 가미 */
71+
border-radius: 12px;
72+
padding: 18px;
73+
margin-bottom: 32px;
74+
}
75+
76+
.summary-title {
77+
font-weight: 700;
78+
font-size: 15px;
79+
color: #004b95; /* 포인트 컬러 */
80+
margin-bottom: 12px;
81+
display: flex;
82+
align-items: center;
83+
}
84+
85+
.summary-box ul {
86+
margin: 0;
87+
padding-left: 18px;
88+
}
89+
90+
.summary-box li {
91+
font-size: 14px;
92+
color: #343a40;
93+
margin-bottom: 8px;
94+
}
95+
96+
/* 상세 섹션 */
97+
.detail-section h2 {
98+
font-size: 16px;
99+
font-weight: 700;
100+
color: #212529;
101+
margin: 28px 0 12px 0;
102+
border-left: 4px solid #004b95; /* 섹션 구분선 */
103+
padding-left: 10px;
104+
}
105+
106+
.detail-section p,
107+
.detail-section li {
108+
font-size: 14px;
109+
color: #6c757d;
110+
line-height: 1.7;
111+
margin: 8px 0;
112+
}
113+
114+
.detail-section ul {
115+
padding-left: 18px;
116+
}
117+
118+
/* 푸터 영역 */
119+
footer {
120+
padding: 40px 20px 30px;
121+
text-align: center;
122+
background-color: #f8f9fa;
123+
border-top: 1px solid #f1f3f5;
124+
}
125+
126+
footer p {
127+
font-size: 12px;
128+
color: #adb5bd;
129+
margin: 4px 0;
130+
}

0 commit comments

Comments
 (0)