227 Commits

Author SHA1 Message Date
doyeon
c6de9bd1d0 로깅 설정 추가 및 실행 프로파일 수정
- application.yml에 로그 파일 Rolling 설정 추가
- .run 폴더를 Git 추적에 포함하도록 .gitignore 수정
- logs 디렉토리는 Git에서 제외
- IntelliJ 실행 프로파일 구조 개선

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 13:22:39 +09:00
merrycoral
c63cf950eb Event Service 엔티티와 DDL 형상 일치화 작업
Critical 및 High 우선순위 이슈 수정:

1. Event 엔티티 nullable 필드 변경
   - eventName: nullable로 변경 (AI 추천 후 설정)
   - startDate, endDate: nullable로 변경 (AI 추천 후 설정)

2. Event.publish() 검증 로직 강화
   - eventName 필수 검증 추가
   - startDate, endDate 필수 검증 추가
   - 기간 유효성 검증 추가 (시작일 <= 종료일)

3. DDL 스키마 수정
   - event_name NOT NULL 제거
   - start_date, end_date NOT NULL 제거
   - chk_event_period 제약조건 수정 (NULL 허용)

4. jobs 테이블 외래키 추가
   - event_id에 대한 외래키 제약조건 추가
   - ON DELETE CASCADE 설정으로 데이터 무결성 보장

영향:
- 이벤트 생성 시 eventName, startDate, endDate를 NULL로 허용
- 배포(publish) 시점에 필수 필드 검증으로 데이터 무결성 보장
- 이벤트 삭제 시 관련 Job 자동 삭제로 고아 레코드 방지

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 13:22:14 +09:00
Hyowon Yang
fb60c6f8a6 외부 API 호출 임시 비활성화 - 샘플 데이터 사용 2025-10-24 12:41:50 +09:00
Hyowon Yang
db761cd7be Analytics API 엔드포인트 인증 제거 (테스트용) 2025-10-24 11:30:09 +09:00
merrycoral
7b76e573ed Event Service 데이터베이스 테이블 생성 SQL 추가
- events 테이블: 이벤트 마스터
- event_channels 테이블: 배포 채널
- generated_images 테이블: 생성된 이미지
- ai_recommendations 테이블: AI 추천 기획안
- jobs 테이블: 비동기 작업 관리
- updated_at 자동 업데이트 트리거 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 11:23:55 +09:00
doyeon
e10814f83a .gitignore 업데이트 - 민감 정보 및 로컬 설정 제외
- .gradle/ 추가 (Gradle 캐시)
- .run/ 추가 (IntelliJ 실행 프로파일, DB 비밀번호 포함)
- backing-service/docker-compose.yml 추가 (로컬 개발용 Docker 설정)
2025-10-24 11:18:21 +09:00
Hyowon Yang
ab99a26211 런타임에러해결 2025-10-24 11:00:02 +09:00
cherry2250
ff83dca1a1 Phase 3: content-service JPA 완전 제거 및 Redis 전용 전환
주요 변경사항:
- JPA Entity 3개 삭제 (JobEntity, GeneratedImageEntity, ContentEntity)
- JPA Repository 3개 삭제 (JobJpaRepository, GeneratedImageJpaRepository, ContentJpaRepository)
- JPA Gateway 2개 삭제 (JobGateway, ContentGateway)
- Port 인터페이스 정리: backward compatibility 메서드 제거
- Service 레이어 Redis DTO 전환 (JobManagementService, MockGenerateImagesService, MockRegenerateImageService)
- MockRedisGateway에 ContentReader/ContentWriter 구현 추가 및 Immutable 패턴 처리
- application.yml에서 JPA/H2 설정 제거
- build.gradle에서 JPA 의존성 exclude 처리
- ContentApplication에서 JPA 어노테이션 제거

서비스는 이제 순수 Redis 기반 스토리지로 동작합니다.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 10:46:33 +09:00
Hyowon Yang
9b10f915e3 Analytics 대시보드 샘플 데이터 자동 적재 기능 추가 2025-10-24 10:35:30 +09:00
Hyowon Yang
43e23eb7aa Kafka 조건부 활성화 설정 2025-10-24 10:31:58 +09:00
merrycoral
379ab0f1f9 Merge branch 'feature/event' of https://github.com/ktds-dg0501/kt-event-marketing into feature/event 2025-10-24 10:27:36 +09:00
Hayoung Song
f3be6917b5
Merge pull request #1 from ktds-dg0501/main
되돌리기
2025-10-24 10:23:06 +09:00
merrycoral
5476fe9388 event-service 초기 구현 및 JWT 토큰 매장 ID 추가
- JWT 토큰에 매장 ID(storeId) 필드 추가
- event-service 구현 (이벤트 생성/조회 API)
- hibernate-types 의존성 추가 (UUID 지원)
- API 매핑 문서 추가
- IntelliJ 실행 프로파일 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 10:17:45 +09:00
cherry2250
5e9e1759ce Content Service Phase 2: Port 인터페이스 구현 및 Gateway 통합
Phase 2 작업으로 Clean Architecture의 의존성 역전 원칙을 적용하여
Service 계층이 Port 인터페이스에만 의존하도록 구조를 개선했습니다.

주요 변경사항:
1. Redis DTO 생성 (Phase 1)
   - RedisAIEventData: AI 이벤트 데이터 DTO
   - RedisImageData: 이미지 데이터 DTO
   - RedisJobData: Job 데이터 DTO

2. Port 인터페이스 생성
   - ImageWriter: 이미지 저장 Port
   - ImageReader: 이미지 조회 Port
   - JobWriter: Job 저장 Port
   - JobReader: Job 조회 Port

3. Gateway 구현
   - RedisGateway: 4개 Port 인터페이스 구현 (Production용)
   - MockRedisGateway: 4개 Port 인터페이스 구현 (Local/Test용)
   - JobGateway: 2개 Port 인터페이스 구현 + @Primary 추가 (Phase 3 삭제 예정)

4. 하위 호환성 유지
   - Port 인터페이스에 레거시 메서드 추가 (save, findById)
   - Service 계층 코드 변경 없이 점진적 마이그레이션
   - "Phase 3에서 삭제 예정" 주석 표시

검증 완료:
- 컴파일 성공
- 서비스 정상 시작 (포트 8084)
- API 정상 작동 확인

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 10:14:54 +09:00
Hyowon Yang
887b46ab46 실행프로파일, 로그설정 2025-10-24 10:04:28 +09:00
doyeon
ade2719dc7 Revert "Participation Service 백엔드 개발 완료"
This reverts commit e0c1066316dddddbe052bf6e639dc0d7d49b0b0d.
2025-10-24 10:00:48 +09:00
Hyowon Yang
46fc1663a5 analytics 서비스개발
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 09:44:02 +09:00
doyeon
e0c1066316 Participation Service 백엔드 개발 완료
주요 구현 사항:
- 이벤트 참여 등록 및 중복 검증 (Redis Cache + DB)
- 참여자 목록 조회 (필터링, 검색, 페이징)
- 당첨자 추첨 (Fisher-Yates Shuffle 알고리즘)
- Kafka 이벤트 발행 (ParticipantRegistered)
- Redis 캐싱으로 성능 최적화
- 전화번호 마스킹 (개인정보 보호)
- 전역 예외 처리 및 검증

기술 스택:
- Spring Boot 3.x + JPA
- MySQL (참여자, 추첨 로그)
- Redis (캐싱, 중복 검증)
- Kafka (이벤트 발행)

API 엔드포인트:
- POST /events/{eventId}/participate
- GET /events/{eventId}/participants
- GET /events/{eventId}/participants/search
- POST /events/{eventId}/draw-winners
- GET /events/{eventId}/winners

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 09:29:03 +09:00
doyeon
50cf1dbcf1 Revert "Participation Service 백엔드 개발 완료"
This reverts commit 5c8aced0431d2f0757b7d93112faaf1a9375a868.
2025-10-24 09:25:23 +09:00
doyeon
5c8aced043 Participation Service 백엔드 개발 완료
주요 구현 사항:
- 이벤트 참여 등록 및 중복 검증 (Redis Cache + DB)
- 참여자 목록 조회 (필터링, 검색, 페이징)
- 당첨자 추첨 (Fisher-Yates Shuffle 알고리즘)
- Kafka 이벤트 발행 (ParticipantRegistered)
- Redis 캐싱으로 성능 최적화
- 전화번호 마스킹 (개인정보 보호)
- 전역 예외 처리 및 검증

기술 스택:
- Spring Boot 3.x + JPA
- MySQL (참여자, 추첨 로그)
- Redis (캐싱, 중복 검증)
- Kafka (이벤트 발행)

API 엔드포인트:
- POST /events/{eventId}/participate
- GET /events/{eventId}/participants
- GET /events/{eventId}/participants/search
- POST /events/{eventId}/draw-winners
- GET /events/{eventId}/winners

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 09:21:39 +09:00
cherry2250
6dc6334c75 Content Service Redis 연동 및 테스트 완료
- RedisConfig.java: Production용 Redis 설정 추가
- RedisGateway.java: Redis 읽기/쓰기 Gateway 구현
- application-local.yml: Redis/Kafka auto-configuration 제외 설정
- test-backend.md: 7개 API 테스트 결과서 작성 (100% 성공)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 22:08:17 +09:00
cherry2250
06995864b9 Content Service API 테스트 구현 추가
- REST API Controller 구현 (이미지 생성, Job 조회, 콘텐츠 조회 등)
- Gateway 어댑터 구현 (ContentGateway, JobGateway)
- Mock Gateway 구현 (Redis, CDN, AI 이미지 생성기)
- Mock UseCase 구현 (실제 이미지 생성 시뮬레이션)
- Security 및 Swagger 설정 추가
- 로컬 테스트를 위한 H2 데이터베이스 설정 (application-local.yml)
- 비동기 처리를 위한 @EnableAsync 설정

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 21:30:21 +09:00
cherry2250
3d1dbda74b content-service 핵심 비즈니스 로직 및 영속성 계층 구현 완료
- Domain 모델 구현 (ImageStyle, Platform, GeneratedImage, Content, Job)
- JPA Entity 및 Repository 구현 (3개 엔티티, 3개 리포지토리)
- UseCase 인터페이스 정의 (Inbound 6개, Outbound 8개)
- Service 구현 (JobManagement, GetEventContent, GetImageList, GetImageDetail)
- DTO 구현 (ContentCommand, ContentInfo, ImageInfo, JobInfo)
- Application 설정 (ContentApplication, application.yml)
- 컴파일 오류 수정 및 검증 완료

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 20:48:56 +09:00
Hyowon Yang
25b1ec8b81 링고비즈api추가 2025-10-23 17:58:54 +09:00
cherry2250
ea82ff4748 add common module 2025-10-23 17:54:36 +09:00
wonho
8029d8f9ce 매장정보 조회 API에서 사업자등록번호 제거
- StoreDetailResponse 스키마에서 businessNumber 필드 제거
- 매장정보 조회 응답 예시에서 businessNumber 제거
- User Service의 모든 API에서 사업자등록번호 사용 중단

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 17:27:28 +09:00
wonho
e536e3dfc8 CLAUDE.md에 Lessons Learned 섹션 추가
- Spring Boot 설정 관리 가이드 추가
- 개발 워크플로우 핵심 원칙 추가
- 설정 파일 구조 및 환경 변수 관리 방법 명시
- 컴파일 및 서버 시작 프로세스 정리

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 17:22:43 +09:00
sunmingLee
dea202a3fd 불필요한 폴더 정리 2025-10-23 17:20:31 +09:00
Hyowon Yang
90645a6a42 Merge branch 'main' of https://github.com/ktds-dg0501/kt-event-marketing 2025-10-23 17:19:33 +09:00
Hyowon Yang
546593b9a1 analytics 링고비즈추가 2025-10-23 17:19:02 +09:00
wonho
74d03fd4bf User Service API에서 사업자등록번호 파라미터 제거
- 회원가입 API에서 businessNumber 필드 제거
- API 설명에서 사업자번호 검증 관련 내용 제거
- RegisterRequest 스키마에서 businessNumber required 및 property 제거
- 회원가입 예시에서 businessNumber 제거
- 사업자번호 검증 실패 에러 케이스 제거
- USER_002 에러 코드 제거

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 17:18:44 +09:00
cherry2250
29baa2dee9 edit folder 2025-10-23 17:17:09 +09:00
cherry2250
6b1c4224f7 7개 마이크로서비스 API 명세서 컨벤션 통일
- 공통 OpenAPI 3.0.3 컨벤션 문서 작성 (design/backend/api/API_CONVENTION.md)
- 7개 서비스 API 명세서 표준화 완료:
  * User Service (8081)
  * Event Service (8080)
  * Content Service (8082)
  * AI Service (8083)
  * Participation Service (8084)
  * Distribution Service (8085)
  * Analytics Service (8086)

주요 변경사항:
- API 경로에서 /api prefix 제거 (/api/users → /users)
- 서버 URL 패턴 통일 (Local → Dev → Prod)
- 연락처 정보 표준화 (Digital Garage Team)
- ErrorResponse 스키마 통일 (error → message, details 추가)
- securitySchemes 이름 통일 (BearerAuth)
- 포트 번호 명확히 할당

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 17:12:28 +09:00
cherry2250
b9745f24e5 7개 마이크로서비스 API 설계 완료
- User Service API (7 APIs, 31KB)
- Event Service API (14 APIs, 41KB)
- AI Service API (3 APIs, 26KB)
- Content Service API (6 APIs, 37KB)
- Distribution Service API (2 APIs, 21KB)
- Participation Service API (5 APIs, 25KB)
- Analytics Service API (4 APIs, 28KB)

총 41개 API 엔드포인트, 6,912줄, OpenAPI 3.0 표준 준수
유저스토리 기반 설계, JWT 인증, Kafka/Redis 통합 문서화
API 설계서 작성 완료 (종합 가이드 포함)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:56:54 +09:00
wonho
781c3944ed MQ 설치 결과서 작성 (개발 환경)
- Kafka 브로커 정보 추가 (4.230.50.63:9092)
- Consumer Group ID 설정 (ai, analytic)
- Spring Boot 연결 설정 예시 포함
- 토픽 설정 및 연결 테스트 방법 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:50:09 +09:00
cherry2250
b571f52abd 파일명 변경: event-이미지* → content-이미지*
변경 이유:
- outer sequence 기준으로 이미지 생성은 Content Service 담당
- 파일명을 서비스 소유권에 맞게 변경

변경 파일:
- event-이미지생성요청.puml → content-이미지생성요청.puml
- event-이미지결과조회.puml → content-이미지결과조회.puml

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:37:54 +09:00
cherry2250
3fdde64dd6 Merge branch 'main' of https://github.com/ktds-dg0501/kt-event-marketing 2025-10-23 16:33:24 +09:00
cherry2250
e15b7b42e5 이미지 생성 및 AI 추천 inner sequence 수정
주요 변경사항:
- event-이미지생성요청.puml: Kafka 제거, ContentService 내부 Job 관리로 변경
- event-이미지결과조회.puml: ContentService 패턴으로 업데이트
- event-AI추천요청.puml: Gateway 패턴 추가, 한글화

아키텍처 구분:
- AI 추천: Kafka 사용 (ai-job-topic)
- 이미지 생성: 내부 Job 관리 (Kafka 사용 안 함)

모든 파일:
- Gateway 패턴 적용
- 레이어 아키텍처 (<<API Layer>>, <<Business Layer>>)
- 한글 요청/응답
- Redis 키 패턴 표준화

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:31:36 +09:00
cherry2250
d7d4b0a2da inner sequence 동기화 완료 - Gateway 패턴 및 한글화
- event-추천결과조회.puml: Gateway 패턴 추가, 레이어 아키텍처 적용, 한글화
- event-추천안선택.puml: Gateway 패턴 추가, 5단계 구조화, 한글화
- event-콘텐츠선택.puml: ContentService로 변경, Gateway 패턴, 한글화
- event-최종승인및배포.puml: Gateway 패턴 추가, 7단계 구조화, 한글화

모든 파일 공통 변경사항:
- Client actor 및 API Gateway 추가
- <<API Layer>>, <<Business Layer>>, <<Data Layer>> 레이어 구분
- 모든 요청/응답 한글 표시
- Repository CRUD 한글 설명 (SQL 제거)
- Redis 캐시 키 패턴 표준화

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:31:16 +09:00
박세원
56f05ba25b CDN에서 Azure Blob Storage로 이미지 저장소 변경
- CDNUploader를 BlobStorageUploader로 교체
- SAS Token 기반 접근 제어 추가 (유효기간 7일)
- Blob Storage Retry 로직 추가 (최대 3회, Exponential Backoff)
- 보안 강화: Public Access 비활성화, 읽기 전용 SAS Token
- Redis 캐싱에 Blob SAS URL 저장 (TTL 7일)
- 성능 영향 최소화 (+0.05-0.1초, 전체의 1-2%)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:30:47 +09:00
Hyowon Yang
447d6b8e5d analytics-링고비즈추가
대시보드 조회 내부 시퀀스에 링고비즈 API 호출 추가
- 병렬 API 호출에 링고비즈 추가 (CompletableFuture 4개로 확장)
- Circuit Breaker 및 Fallback 전략 적용
- 데이터 통합 섹션에 링고비즈 통화 완료 수 포함
2025-10-23 16:06:01 +09:00
sunmingLee
146063b22b edit distribution-다중채널배포.puml 2025-10-23 15:43:55 +09:00
cherry2250
edb7045008 outer 및 inner sequence 동기화 및 한글화
변경 사항:
- 이벤트생성플로우 outer: FE → Gateway → User Service 호출 패턴 추가
- user-로그인 inner: 전화번호 → 이메일 기반 인증으로 변경
- user-회원가입 inner: 국세청 API 제거, 이메일 중복검사 추가
- event-목적선택 inner: Gateway 경유, 요청/응답 한글화
- ai-트렌드분석및추천 inner: 과거 이벤트 데이터 제거, Timeout 5분으로 변경
- analytics-대시보드조회 inner: Redis TTL 5분 → 1시간으로 변경

모든 파일에 Repository CRUD 작업 한글 설명 적용 (SQL 제거)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 15:36:45 +09:00
cherry2250
eea1fff98c Outer sequence 다이어그램 수정
1. 고객참여플로우
   - 재추첨 버튼 UI 요소 제거

2. 사용자인증플로우
   - 로그인 input 전화번호 → 이메일/비밀번호로 변경
   - 회원가입 시 이메일 중복검사 로직 추가
   - 전화번호 중복검사도 유지 (이메일 검사 후 수행)

3. 성과분석플로우
   - Redis Cache TTL 5분 → 1시간으로 변경
   - 배치 수집 주기 10분 → 5분으로 변경

4. 이벤트생성플로우
   - 회원/매장정보 조회를 FE에서 직접 수행 후 전달
   - 이벤트 초안 데이터 Redis 저장 (draft:event 키)
   - 최종 승인 시에만 Event DB에 영구 저장
   - AI Service 과거 이벤트 데이터 조회 로직 삭제
   - 이미지 생성 요청 FE → Content Service 다이렉트 호출
   - Job 상태 확인도 Content Service로 직접 조회

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 15:10:37 +09:00
wonho
12baa4bc77 Kafka 백킹서비스 설치 디렉토리 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 15:10:20 +09:00
cherry2250
16f82d3553 이벤트생성플로우 outer sequence 수정
- User Service 회원정보 조회 로직 추가
- AI Service Redis 저장 및 5분 타임아웃 적용
- Content Service Redis 읽기/쓰기 방식으로 변경
- 이미지 생성 5분 타임아웃 적용
- Redis → Event DB 영구 저장 로직 추가
- Kafka 이미지 생성 topic 구독 제거

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 14:36:30 +09:00
cherry2250
fb55fd85a0 논리 아키텍처 수정
주요 변경사항:
- User Service 사업자번호 검증 로직 삭제 (국세청 API 제거)
- User Service → Event Service 회원정보 제공 API 추가
- Redis 기반 서비스 간 데이터 공유 구조로 변경
  - AI Service → Redis 저장 → Content Service 읽기
- Participation Service 참여자 목록 조회 기능 추가
- WinnerSelected 이벤트 토픽 제거 (3개 토픽으로 축소)
- Redis → Event DB 저장 로직 추가 (이벤트 publish 시)
- AI/Content Service Timeout 5분으로 변경 (30초/20초 → 300초)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 14:23:07 +09:00
Hyowon Yang
36e7e60ae3 추천안선택생성
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 13:50:58 +09:00
Hyowon Yang
ae6e593a7a outer inner 검증
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 13:42:56 +09:00
Hyowon Yang
9e9c129c3c redis outer수정
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 13:28:28 +09:00