BAIS 업무 규칙과 전환 불변식 추출 #2

Open
forge-bot wants to merge 4 commits from forge/BAIS-SPRING-ANA-001-attempt-1 into main
4 changed files with 72 additions and 0 deletions

View file

@ -0,0 +1,3 @@
# BAIS-SPRING-ANA-001-attempt-1
Forge 이슈 작업 브랜치 `forge/BAIS-SPRING-ANA-001-attempt-1`.

21
docs/business_rules.md Normal file
View file

@ -0,0 +1,21 @@
# BAIS 업무 규칙
## 계정 관련 규칙
1. 모든 계정은 고유한 ID를 가져야 한다.
2. 계정 생성 시 이메일 주소는 유효해야 한다.
## 인증 관련 규칙
1. 사용자 인증은 두 단계로 진행되어야 한다.
2. 비밀번호는 최소 8자 이상이어야 하며, 대문자, 소문자, 숫자, 특수문자를 포함해야 한다.
## 권한 부여 관련 규칙
1. 사용자 역할에 따라 접근 권한이 달라져야 한다.
2. 관리자 권한은 특정 사용자에게만 부여되어야 한다.
## 카드 관련 규칙
1. 모든 카드 정보는 암호화되어 저장되어야 한다.
2. 카드 유효기간은 현재 날짜 이후여야 한다.
## 배치 관련 규칙
1. 배치 작업은 주기적으로 실행되어야 하며, 실패 시 알림을 보내야 한다.
2. 배치 작업의 로그는 최소 30일간 보관해야 한다.

View file

@ -0,0 +1,12 @@
package com.example.bais;
public class InvariantRules {
public static final String ACCOUNT_UNIQUE_ID = "모든 계정은 고유한 ID를 가져야 한다.";
public static final String ACCOUNT_EMAIL_VALID = "계정 생성 시 이메일 주소는 유효해야 한다.";
public static final String AUTHENTICATION_TWO_STEP = "사용자 인증은 두 단계로 진행되어야 한다.";
public static final String AUTHORIZATION_ROLE_BASED = "사용자 역할에 따라 접근 권한이 달라져야 한다.";
public static final String CARD_ENCRYPTION = "모든 카드 정보는 암호화되어 저장되어야 한다.";
public static final String BATCH_LOG_RETENTION = "배치 작업의 로그는 최소 30일간 보관해야 한다.";
// 추가적인 불변식 메서드 로직을 여기에 추가할 있습니다.
}

View file

@ -0,0 +1,36 @@
package com.example.bais;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
public class InvariantRulesTest {
@Test
public void testAccountUniqueId() {
assertEquals("모든 계정은 고유한 ID를 가져야 한다.", InvariantRules.ACCOUNT_UNIQUE_ID);
}
@Test
public void testAccountEmailValid() {
assertEquals("계정 생성 시 이메일 주소는 유효해야 한다.", InvariantRules.ACCOUNT_EMAIL_VALID);
}
@Test
public void testAuthenticationTwoStep() {
assertEquals("사용자 인증은 두 단계로 진행되어야 한다.", InvariantRules.AUTHENTICATION_TWO_STEP);
}
@Test
public void testAuthorizationRoleBased() {
assertEquals("사용자 역할에 따라 접근 권한이 달라져야 한다.", InvariantRules.AUTHORIZATION_ROLE_BASED);
}
@Test
public void testCardEncryption() {
assertEquals("모든 카드 정보는 암호화되어 저장되어야 한다.", InvariantRules.CARD_ENCRYPTION);
}
@Test
public void testBatchLogRetention() {
assertEquals("배치 작업의 로그는 최소 30일간 보관해야 한다.", InvariantRules.BATCH_LOG_RETENTION);
}
}