[조직문화 PR1] DB: WorkspaceEngagementSurvey 모델 + DiagnosisSession 확장

ID: f1692ab1-11b9-46c6-8e99-d9bdb9e39d2d

높음 리뷰

## 설명
워크스페이스별 분기 설문 관리 테이블 생성 및 DiagnosisSession에 B2B 연결 FK 추가.

### 새 모델: WorkspaceEngagementSurvey
- workspace_id: uuid, NOT NULL, FK(workspaces), index
- created_by_id: uuid, NOT NULL, FK(users)
- title: string, NOT NULL (예: "2026 Q1")
- year: integer, NOT NULL
- quarter: integer, NOT NULL (1-4)
- status: integer, NOT NULL, default: 0 (draft/active/closed)
- access_token: string, NOT NULL, unique index
- started_at, ended_at: datetime
- 복합 인덱스: [workspace_id, year, quarter] unique

### DiagnosisSession 확장
- workspace_engagement_survey_id: uuid, FK(workspace_engagement_surveys), index
- workspace_group_id: uuid, FK(workspace_groups), index
- 기존 user_id(optional) 활용: 로그인 사용자는 참고용으로 기록, 비로그인도 허용
- context_type = "b2b"로 설정

### 설계 결정
- Option A 채택: DiagnosisSession 재사용 (기존 EngagementCalculator/ResultFormatter 완전 재사용)
- 익명성: 결과 집계에서 user_id 사용하지 않음. 3명 이하 그룹 결과 비공개

## 완료 기준
- [ ] 마이그레이션 실행/롤백/재실행 성공
- [ ] WorkspaceEngagementSurvey 모델: 유효성, 연관관계, 스코프 테스트 통과
- [ ] DiagnosisSession 연관관계 추가 테스트 통과
- [ ] fixture 생성
- [ ] engagement_b2b DiagnosisType seed 확인 (없으면 생성)

## 의존성
없음

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: 팀리드
생성일: 2026년 03월 17일 07:43

활동 로그

  • 팀리드 팀 작업 완료 - [조직문화 PR1] DB 레이어

    2026년 03월 17일 08:12:43

    상세 보기

    ## 수정된 기능
    - WorkspaceEngagementSurvey 모델: 분기별 설문 관리 (draft/active/closed, access_token 자동 생성)
    - DiagnosisSession 확장: workspace_engagement_survey_id, workspace_group_id FK 추가

    ## 생성/수정 파일
    - `db/migrate/20260317080753_create_workspace_engagement_surveys.rb`
    - `db/migrate/20260317080816_add_engagement_survey_to_diagnosis_sessions.rb`
    - `app/models/workspace_engagement_survey.rb`
    - `app/models/diagnosis_session.rb` (연관관계 추가)
    - `app/models/workspace.rb` (has_many :engagement_surveys)
    - `test/fixtures/workspace_engagement_surveys.yml` (3개 fixture)
    - `test/models/workspace_engagement_survey_test.rb` (21 tests)

    ## 테스트 결과
    - 모델 테스트: 508 tests, 0 failures, 0 errors
    - 신규 테스트: 21 tests (유효성, 연관관계, enum, 스코프, access_token)

  • 팀리드 상태 변경: 진행 중 → 리뷰

    2026년 03월 17일 08:12:37

  • 팀리드 위임: developer-1에게 'WorkspaceEngagementSurvey 마이그레이션 + 모델 + DiagnosisSession 확장' 작업 배정

    2026년 03월 17일 08:06:42

  • 팀리드 작업 시작 - [조직문화 PR1] DB 레이어

    2026년 03월 17일 08:06:29

    상세 보기

    ## 작업 계획
    - 목표: WorkspaceEngagementSurvey 모델 생성 + DiagnosisSession FK 확장
    - 접근 방식: developer-1이 마이그레이션+모델+테스트, 완료 후 QA 검증

    ## 서브 태스크
    1. 마이그레이션 2개 생성 (WorkspaceEngagementSurvey + DiagnosisSession 확장)
    2. 모델 구현 (유효성, 연관관계, 스코프, enum)
    3. fixture + seed 확인
    4. 테스트 작성 및 통과

  • 팀리드 티켓 클레임 완료

    2026년 03월 17일 08:06:18

  • 팀리드 기능 계획 수립 - 조직문화 진단 (Engagement B2B)

    2026년 03월 17일 07:44:41

    상세 보기

    ## 기능 개요
    워크스페이스 대시보드에 조직문화(Engagement B2B) 진단 기능 추가. 분기별 설문 생성 → QR/링크로 익명 응답 → 결과 대시보드 집계.

    ## 분석 결과
    - 영향 범위: Workspace, DiagnosisSession, EngagementCalculator, admin/survey_questions
    - 기존 패턴: engagement B2C 플로우, QrCodeHelper, WorkspaceAuthorization
    - 재사용: EngagementCalculator(채점), EngagementResultFormatter(B2B 분기 지원), _engagement_question.html.erb(문항 뷰)

    ## 생성된 티켓 (7개)
    - [PR1] DB: WorkspaceEngagementSurvey + DiagnosisSession 확장 (high)
    - [PR2] 서비스: 생성/응답/집계 (high)
    - [PR3] 컨트롤러: 설문 관리 CRUD + 결과 (high)
    - [PR4] 공개 응답 플로우: 비인증 컨트롤러 (high)
    - [PR5] 뷰: 결과 대시보드 UI (medium)
    - [PR6] 뷰: 공개 응답 UI (medium)
    - [PR7] Admin: B2B 문항 분리 + 네비게이션 (low)

    ## 핵심 설계 결정
    - DiagnosisSession 재사용 (Option A): 기존 EngagementCalculator/ResultFormatter 완전 활용
    - 익명성: user_id는 로그인 시 참고용 기록, 결과 집계에서 미사용
    - 3명 이하 그룹 결과 비공개

    ## 리스크
    - 익명 응답 중복 방지: localStorage 기반 soft 방지
    - 기존 EngagementCalculator는 개인용 → B2B 집계 로직은 ResultAggregator에서 별도 구현

  • 팀리드 상태 변경: 할 일 → 백로그

    2026년 03월 17일 07:44:11