
현재의 공간위 사이트의 기능을 기술한다.
바꿀 것은 바꾸고. 남길 것은 남기고.

로고, 공지사항, 소개, 공간(공간에 대한 설명), 예약, 이벤트(공지사항), 로그인 이 있다.





KAIST SSO 로그인을 활용한다.
let std_no = (p.ku_std_no === null) ? p.ku_employee_number : p.ku_std_no;
let sql = `INSERT IGNORE INTO users (student_id, name, phone, email, type) VALUES (?,?,?,?,?);`;
await conn.query(sql, [std_no, p.ku_kname, p.mobile, p.mail, 'user'])

링크들이 있다.
위 사항들이 공통적으로 있고, 앞으로는 각 페이지의 body만 기술한다.


관리자의 경우(공간위원) 합주실 및 창작공방 비번이 뜬다.
메인 화면이 있어 예약하기와 예약 현황으로 바로 갈 수 있다.
소음 양해서 양식과 물품 대여 공지는 바로 양식 다운로드가 된다.

faq를 키우면 사진도 커진다.


공지를 볼 수 있다.
의외로 조회수가 잘 오른다.
심지어 뒤로가기 누르면 조회수가 오른다.
세심하군.
내부는 그냥 위의 목차 클릭에 따라 SPA로 된다.


기본적인 소개 사항이다.




사업을 소개한다.

회칙을 pdf로 볼 수 있다.
저거 다 목차가 아니라 별개 파일인건 비밀이다.
홈이 없다. 무조건 들어가야함.
들어가면 header에 공간 이름, 그리고 body에서 한줄 소개, 사진, 소개, 사용방법, 주의사항 이 있다.
설명에 들어가는 분류는 다음과 같다.
정리할 필요 없이 그냥 새로 짜야 할 것 같다...



이후는 그냥 리스트로만 정리하자.

예약을 받는다.
공간별로 형식이 다르다.








공간별로, 시간별로 나온다.
근데 이건 한 페이지에서 나와서 진짜 불편하다 (날짜를 옮기면 장소가 초기화된다던가)
공간별로 캘린더 색상이 다르다. 근데 어차피 한번에 안보이는데?
미승인은 희미하게 보인다.



예약을 클릭하면 추가 정보가 뜬다.
예약자 및 관리자는 수정할 수 있다.
관리자의 경우 빈 시간을 수정하면 새로운 예약이 들어간다.




누르면 커진다. 추가하기는 작동하지 않는다.



사진을 누르면 인스타그램으로 이동한다.

내 예약 기록 및 팀 현황을 볼 수 있다.



예약 및 문의에 답변할 수 있다.
또한 합주실 비밀번호와 창작공방 비밀번호 변경 버튼이 있다.



Table ask {
id int [pk, increment]
writer_id char(8)
time_post datetime
time_edit datetime [null]
title varchar(255)
content text
hits int [default: 0]
state enum('wait', 'receive', 'solve')
comment text [null]
}
질문에 해당하는 부분.
근데 너네 답변은 하니?

Table easteregg {
student_id char(8) [pk]
resv_hits int [default: 0]
win_prize tinyint(1) [default: 0]
cancel_resv int [default: 0]
}
옛날 이스터에그 이벤트의 흔적.
뭔진 모르겠다 이제.

Table etc {
id int [pk, increment]
grp_password varchar(20) [null]
ws_password varchar(20) [null]
}
뭔지 모르겠음 22

Table faq {
id int [pk, increment]
question varchar(255)
answer text
}
faq를 관리하는 db.
그렇다.

Table member {
id int [pk, increment]
teamid int
name varchar(255)
student_id char(8)
}
팀 멤버를 관리하는 DB.
팀이 거의 사문화돼서 안쓴다.

Table notice {
id int [pk, increment]
time_post datetime
time_edit datetime [null]
title varchar(255)
content text
hits int [default: 0]
important tinyint(1) [default: 0]
}
공지사항

Table reservation {
id int [pk, increment]
reserver_id char(8)
reserver_name char(128)
space enum('individual-practice-room1', 'individual-practice-room2', 'individual-practice-room3', 'piano-room1', 'piano-room2', 'seminar-room1', 'seminar-room2', 'dance-studio', 'group-practice-room', 'mirae-hall', 'ullim-hall', 'open-space', 'workshop')
team_id int [null]
time_from datetime
time_to datetime
time_request datetime
time_last_modified datetime [null]
content json [null]
comment varchar(420) [null]
state enum('grant', 'wait', 'rejected') [null]
}
예약 관련.
enum이 너무 길다.
enum은 수정할 것.

Table space {
id int [pk, increment]
space_name enum('individual-practice-room', 'piano-room', 'seminar-room', 'dance-studio', 'group-practice-room', 'mirae-hall', 'ullim-hall', 'open-space', 'workshop')
menu enum('introduction', 'usage', 'caution', 'shortintro')
info json
}

Table team {
id int [pk, increment]
name char(70)
delegator_id char(8)
time_register datetime
}
team을 관리한다.
합주실 무예실엔 필수다.

Table users_f {
id int [pk, increment]
student_id char(8) [unique]
name varchar(255)
phone char(20) [null]
email varchar(255) [null]
type enum('admin', 'user')
}
생각보다 기능이 많았다.
근데 이게 안되네 싶은게 더 많다.
수정 기획 빡시게 해야 할 것 같다.