DedSec 2 0
게시물 메뉴

게시판 중심의 모듈 목록을 만든 후에 조금 더 확장해서 실제 시스템을 운영하는 것까지 염두에 두어 로드맵을 설계하라고 시켰습니다.

로드맵을 공유합니다. 

현재는 로드맵에 따라 끝까지 개발하는 goal을 주고 진행 중입니다. 1턴씩 개발 후 자동으로 한글커밋하는 것까지 요청했습니다. 

주간 리밋에 1번 걸렸는데, 리셋 버튼이 있어서 그것 적용해서 진행 중입니다.

어설프지만 php 기반의 CMS 흉내를 내보기 위해 연습 중입니다. 

 


커뮤니티 CMS 개발 로드맵


A. 기반 

ID

한 턴 작업

의존

스펙

T01

사이트맵 글 URL을 /{board.slug}/{uuid}/로 고친다

PR 1

T02

Board.kind + boards/kinds.py 레지스트리. 기본 list. 템플릿 폴백. 피커·새 UI 없음

PR 2, C2 C3

T03

kind_allows를 기존 create/comment POST에 연결. 테스트만 (faq 등은 아직 키만 폴백)

T02

C18

T04

BoardGroup + Board.group. 부트스트랩 시드 그룹

T02

보드 그룹

T05

BoardCategory + Post.category

T04

말머리

T06

Post.is_sticky / is_notice. 목록 정렬

T02

보드 상태

T07

Post.extras + author_ip_hash. extras는 SQL에 안 씀

T02

C1a C13

T08

Post.view_count + locmem 디바운스

T02

C11

B. 파일 

ID

한 턴 작업

의존

스펙

T09

SiteSettings R2 필드 + /back-office/site/ 저장소 카드(쓰기 전용 시크릿, 연결 시험). 업로드 경로는 아직 로컬

PR 4, C25

T10

LocalOrR2Storage + GET /files/<kind>/<uuid>/ ACL 후 302. prefix files. CSP 호스트. 가짜 storage 테스트

T09

PR 4, C25

T11

PostAttachment UUID upload_to + thumbnail SET_NULL + post_delete

T10

PR 5, C5 C19

T12

공개·빌더 글 폼 multipart, 합계 20MB, nginx 문서 25m

T11

PR 5

C. 어드민

ID

한 턴 작업

의존

스펙

T13

/back-office/boards/new/ 종류 선택. shipped만. compose_board_page(kind=) 기본 권한

T02

PR 7, C23

T14

시드 kind 일회 마이그레이션 + bootstrap은 create defaults만

T13

C16

T15

모듈 cms.board_index

T04

카탈로그 P0

T16

글·댓글 rate limit + 429

T03

PR 8

D. P0 종류

ID

한 턴 작업

의존

스펙

T17

kind notice 템플릿. 댓글 POST 403

T02 T03

notice

T18

kind webzine 카드 목록. 첫 첨부 썸네일은 T11 후

T02

webzine

T19

kind gallery + require_attachment 400

T11 T12

gallery

T20

kind blog

T02

blog

T21

kind faq 아코디언. 댓글 403

T03

faq

T22

kind file + download/files/post/

T11 T12

file

T23

kind video 링크 카드만. iframe 없음

T02 T07

video, C15

E. 참여

ID

한 턴 작업

의존

스펙

T24

UserProfile + GET /members/<nickname>/. prefix members. 밴 필드만, 밴 UI 없음

T02

PR 9, C8

T25

아바타 업로드 UUID 경로 + /files/avatar/

T10 T24

C19

T26

추천 unique + F() + can_recommend

T08

PR 10, C12

T27

스크랩 + /accounts/scraps/

T26

스크랩

T28

댓글 숨김 + 작성자/스태프 삭제

T03

PR 11

T29

kind forum + Comment.parent 1단

T02 T28

forum

T30

is_closed / is_read_only / is_hidden 쿼리셋 행렬

T02

PR 12

T31

POST /m/hide/ (can_hide)

T30

숨김

F. 운영·보안

ID

한 턴 작업

의존

스펙

T32

Report + POST /m/report/

T31

신고

T33

cms_moderator + 신고 큐 슬림 템플릿 (require_moderator)

T32

C21

T34

회원 카드 밴/경고/뮤트/세션끊기 + 큐 밴

T24 T33

회원 관리

T35

Notification + /accounts/notifications/

T26 T32

알림

T36

모듈 cms.user_welcome

T35

카탈로그 P1

T37

모듈 cms.popular_posts (index_visible_to)

T26 T30

카탈로그 P1

T38

kind guestbook

T13

guestbook

T39

kind link (link_url https)

T07 T13

link

T40

kind anonymous + post_display_name 누설 테스트

T24 T13

anonymous

T41

검색 excerpt + ?board=

T07

PR 17

T42

보드 내 태그 ?tag=

T05

태그

T43

SecurityEvent 기록 (로그인 실패, 429, 가입). 화면 없음

T16

C26

T44

/back-office/security/ 24h 카드

T43 T32

PR 18

T45

가입·글·댓글 허니팟

T43 T12

스팸

T46

신규 대기·거부 단어·링크 상한 + 사이트 보안 카드

T45

PR 19

G. P2 종류

ID

한 턴 작업

의존

스펙

T47

start_at/end_at + kind calendar 월 목록

T13 T07

calendar, PR 20

T48

모듈 cms.upcoming_events

T47

카탈로그 P2

T49

kind event + EventApplication apply/cancel

T47 T12

event, PR 21

T50

kind course + CourseEnrollment

T13 T23

course, PR 22

T51

kind shop + ShopOrder (결제 없음)

T13 T11

shop, C27, PR 23