feat(project): 홈 카드도 완료 체크 시 반투명 + 대시보드 끝으로(세션과 동일 원칙)

기존엔 완료 프로젝트가 "완료된 프로젝트" 별도 섹션(숨기기 토글 포함)으로
빠졌는데, 요청에 따라 세션 완료 처리와 같은 방식으로 바꿈 — 같은 그리드
안에서 완료 여부 → sort_order → id 순으로 안정 정렬해 완료면 맨 끝으로,
해제하면 sort_order 기준 원래 자리로 자동 복귀(resortProjectGrid, 서버
쪽도 index() 에서 같은 기준으로 미리 정렬해 내려줌: _group 아님, 별도
정렬 한 줄 sorted(tree, key=...)). 완료 섹션/숨기기 토글 관련 죽은
코드(JS·CSS·템플릿) 정리.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-17 14:48:19 +09:00
parent 8d765ec60d
commit 4a2e20520e
6 changed files with 41 additions and 57 deletions
+6 -5
View File
@@ -389,9 +389,11 @@ async def index(request: Request) -> HTMLResponse:
member_email=None if admin else user["email"],
)
tree = _build_tree(projects)
# 진행중/완료 프로젝트를 구분해 별도 섹션으로 표시.
active_projects = [p for p in tree if p.get("status") != "completed"]
done_projects = [p for p in tree if p.get("status") == "completed"]
# 완료 프로젝트 별도 섹션 대신, 같은 대시보드 안에서 반투명 + 맨
# 끝으로만 보낸다(세션 완료 처리와 같은 원칙). sorted() 는 안정 정렬이라
# tree 가 이미 sort_order 순이면 완료 여부로만 다시 나눠도 각 그룹
# 내부 순서는 그대로 유지된다 — 완료 해제 시 원래 자리로 자동 복귀.
home_projects = sorted(tree, key=lambda p: p.get("status") == "completed")
# 아바타 맵: 이메일(소문자) → 구글 프로필 이미지 URL (홈 카드 업무 담당자 표시용)
from app.main import user_store # noqa: WPS433
@@ -473,8 +475,7 @@ async def index(request: Request) -> HTMLResponse:
"page_title": "프로젝트 관리",
"page_subtitle": "달력·타임라인·보드로 프로젝트를 관리하세요.",
"force_sidebar_collapsed": True,
"active_projects": active_projects,
"done_projects": done_projects,
"home_projects": home_projects,
"my_projects": my_projects,
"avatars": avatars,
"home_tasks": home_tasks,