Harden common code and render harness policies
This commit is contained in:
@@ -45,7 +45,7 @@ public class CommonCodeService(ICommonCodeRepository commonCodeRepository)
|
||||
|
||||
private static void Normalize(CommonCode code)
|
||||
{
|
||||
code.CodeGroup = NormalizeToken(code.CodeGroup, nameof(code.CodeGroup), MaxCodeGroupLength);
|
||||
code.CodeGroup = NormalizeToken(code.CodeGroup, nameof(code.CodeGroup), MaxCodeGroupLength, disallowWhitespace: true);
|
||||
code.CodeValue = NormalizeToken(code.CodeValue, nameof(code.CodeValue), MaxCodeValueLength, disallowWhitespace: true);
|
||||
code.CodeName = NormalizeToken(code.CodeName, nameof(code.CodeName), MaxCodeNameLength);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
- `code_value`는 저장 키다.
|
||||
- `code_name`은 화면 표시값이다.
|
||||
- `code_value`는 공백을 넣지 않는다.
|
||||
- `code_group`도 공백 없이 대문자/숫자/언더스코어 중심의 안정된 키를 쓴다.
|
||||
- 새 콤보를 추가할 때는 먼저 `common_codes`에 그룹을 추가한다.
|
||||
- 화면 하드코딩 배열은 금지한다. 불가피하면 임시 폴백으로만 두고 제거 계획을 함께 적는다.
|
||||
- 같은 의미의 값이 테이블마다 다르면 저장값을 먼저 통일하고 마이그레이션으로 이관한다.
|
||||
@@ -39,6 +40,7 @@
|
||||
|
||||
- DB seed와 운영 데이터의 저장값이 다르면 UI를 먼저 맞추지 말고 저장값을 먼저 정규화한다.
|
||||
- 한글 코드값을 사용하더라도 컬럼 길이를 먼저 검토하고, 업무 테이블과 마스터 테이블을 함께 조정한다.
|
||||
- 한글 `code_value`가 필요하면 DB 컬럼 길이와 인덱스 길이를 먼저 확인하고, 초과 가능성이 있으면 표시값과 저장값을 분리한다.
|
||||
- 표시용 문구가 길면 `code_name`에 둔다.
|
||||
|
||||
## UI Rules
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
files=(
|
||||
"TaxBaik.Web/Components/Admin/App.razor"
|
||||
"TaxBaik.Web/Components/Admin/Layout/MainLayout.razor"
|
||||
"TaxBaik.Web/Components/Admin/Pages/Login.razor"
|
||||
)
|
||||
app_file="TaxBaik.Web/Components/Admin/App.razor"
|
||||
login_file="TaxBaik.Web/Components/Admin/Pages/Login.razor"
|
||||
|
||||
for file in "${files[@]}"; do
|
||||
for file in "$app_file" "$login_file"; do
|
||||
if [ ! -f "$file" ]; then
|
||||
echo "Missing admin render file: $file" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if grep -nE "InteractiveServerRenderMode|prerender: true" "${files[@]}"; then
|
||||
echo "Admin render mode violation detected." >&2
|
||||
if ! grep -nE "InteractiveWebAssemblyRenderMode\\(prerender: true\\)" "$app_file" >/dev/null; then
|
||||
echo "Admin shell must use InteractiveWebAssemblyRenderMode(prerender: true)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -nE "InteractiveWebAssemblyRenderMode\\(prerender: false\\)" "${files[@]}" >/dev/null; then
|
||||
echo "Admin render mode must use InteractiveWebAssemblyRenderMode(prerender: false)." >&2
|
||||
if grep -nE "InteractiveServerRenderMode|prerender: true" "$app_file" | grep -v "InteractiveWebAssemblyRenderMode(prerender: true)" >/dev/null; then
|
||||
echo "Admin shell render mode violation detected." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -nE "InteractiveServerRenderMode\\(prerender: true\\)" "$login_file" >/dev/null; then
|
||||
echo "Login page must allow server prerender." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user