fix: 운영 설정 배포와 탐색 UX 개선
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m9s
TaxBaik Browser E2E / browser-e2e (push) Failing after 1m27s

This commit is contained in:
2026-06-27 21:41:53 +09:00
parent d58e524dfc
commit 0c49e12fa0
8 changed files with 21 additions and 27 deletions
+2 -16
View File
@@ -40,22 +40,8 @@ jobs:
echo "Missing TAXBAIK_JWT_SECRET_KEY secret" >&2 echo "Missing TAXBAIK_JWT_SECRET_KEY secret" >&2
exit 1 exit 1
fi fi
JWT_SECRET_KEY="$JWT_SECRET_KEY" python3 - <<'PY' JWT_SECRET_KEY="$JWT_SECRET_KEY" python3 -c 'import json, os, pathlib; pathlib.Path("./publish/appsettings.Production.json").write_text(json.dumps({"Jwt":{"SecretKey":os.environ["JWT_SECRET_KEY"]}}, ensure_ascii=False, indent=2), encoding="utf-8")'
import json test -s ./publish/appsettings.Production.json
import os
from pathlib import Path
config = {
"Jwt": {
"SecretKey": os.environ["JWT_SECRET_KEY"]
}
}
Path("./publish/appsettings.Production.json").write_text(
json.dumps(config, ensure_ascii=False, indent=2),
encoding="utf-8",
)
PY
- name: Copy migrations to publish - name: Copy migrations to publish
run: | run: |
@@ -28,8 +28,8 @@
<td>@GetPreview(inquiry.Message)</td> <td>@GetPreview(inquiry.Message)</td>
<td>@inquiry.CreatedAt.ToString("yyyy-MM-dd")</td> <td>@inquiry.CreatedAt.ToString("yyyy-MM-dd")</td>
<td> <td>
<MudButton Size="Size.Small" Variant="Variant.Text" <MudButton Size="Size.Small" Variant="Variant.Outlined" Color="Color.Primary"
Href="@($"/taxbaik/admin/inquiries/{inquiry.Id}")">상세</MudButton> Href="@($"/taxbaik/admin/inquiries/{inquiry.Id}")">문의 내용 확인</MudButton>
</td> </td>
</tr> </tr>
} }
@@ -9,8 +9,11 @@
@if (inquiry != null) @if (inquiry != null)
{ {
<MudButton Variant="Variant.Text" @onclick="@(() => Navigation.NavigateTo("/taxbaik/admin/inquiries"))"> <MudButton Variant="Variant.Outlined"
← 돌아가기 Color="Color.Primary"
StartIcon="@Icons.Material.Filled.ArrowBack"
@onclick="@(() => Navigation.NavigateTo("/taxbaik/admin/inquiries"))">
문의 목록으로 돌아가기
</MudButton> </MudButton>
<MudPaper Class="pa-4 mt-4" Elevation="1"> <MudPaper Class="pa-4 mt-4" Elevation="1">
@@ -18,9 +21,9 @@
<MudText Typo="Typo.h5">문의 상세</MudText> <MudText Typo="Typo.h5">문의 상세</MudText>
<MudButton Variant="Variant.Filled" <MudButton Variant="Variant.Filled"
Color="Color.Primary" Color="Color.Primary"
Href="/taxbaik/admin/inquiries" StartIcon="@Icons.Material.Filled.List"
Target="_blank"> Href="/taxbaik/admin/inquiries">
문의 목록 열 다른 문의도 보
</MudButton> </MudButton>
</MudStack> </MudStack>
+1 -1
View File
@@ -26,7 +26,7 @@
<small class="badge bg-primary">@post.CategoryName</small> <small class="badge bg-primary">@post.CategoryName</small>
<h5 class="card-title mt-2">@post.Title</h5> <h5 class="card-title mt-2">@post.Title</h5>
<p class="card-text small">@post.CreatedAt.ToString("yyyy-MM-dd")</p> <p class="card-text small">@post.CreatedAt.ToString("yyyy-MM-dd")</p>
<a href="/taxbaik/blog/@post.Slug" class="btn btn-sm btn-primary">기</a> <a href="/taxbaik/blog/@post.Slug" class="btn btn-sm btn-primary">글 내용 보기</a>
</div> </div>
</div> </div>
</div> </div>
+4
View File
@@ -20,6 +20,10 @@
</ol> </ol>
</nav> </nav>
<div class="mb-4">
<a href="/taxbaik/blog" class="btn btn-outline-primary btn-sm">← 블로그 목록으로 돌아가기</a>
</div>
@if (!string.IsNullOrEmpty(Model.Post.ThumbnailUrl)) @if (!string.IsNullOrEmpty(Model.Post.ThumbnailUrl))
{ {
<img src="@Model.Post.ThumbnailUrl" alt="@Model.Post.Title" <img src="@Model.Post.ThumbnailUrl" alt="@Model.Post.Title"
+1 -1
View File
@@ -201,7 +201,7 @@
<small class="badge bg-primary-badge">@post.CategoryName</small> <small class="badge bg-primary-badge">@post.CategoryName</small>
<h4 class="card-title mt-3">@post.Title</h4> <h4 class="card-title mt-3">@post.Title</h4>
<p class="text-muted small">@post.CreatedAt.ToString("yyyy년 MM월 dd일")</p> <p class="text-muted small">@post.CreatedAt.ToString("yyyy년 MM월 dd일")</p>
<a href="/taxbaik/blog/@post.Slug" class="btn btn-sm btn-primary">기</a> <a href="/taxbaik/blog/@post.Slug" class="btn btn-sm btn-primary">글 내용 보기</a>
</div> </div>
</div> </div>
</div> </div>
+1 -1
View File
@@ -5,7 +5,7 @@ const baseUrl = (process.env.E2E_BASE_URL ?? 'http://178.104.200.7/taxbaik').rep
test.describe('blog seo', () => { test.describe('blog seo', () => {
test('exposes title description and canonical on blog detail pages', async ({ page }) => { test('exposes title description and canonical on blog detail pages', async ({ page }) => {
await page.goto(`${baseUrl}/blog`); await page.goto(`${baseUrl}/blog`);
const firstPost = page.locator('a[href^="/taxbaik/blog/"]').filter({ hasText: '기' }).first(); const firstPost = page.locator('a[href^="/taxbaik/blog/"]').filter({ hasText: '글 내용 보기' }).first();
await expect(firstPost).toBeVisible(); await expect(firstPost).toBeVisible();
const detailHref = await firstPost.getAttribute('href'); const detailHref = await firstPost.getAttribute('href');
expect(detailHref).toMatch(/^\/taxbaik\/blog\/[a-z0-9-]+$/); expect(detailHref).toMatch(/^\/taxbaik\/blog\/[a-z0-9-]+$/);
+2 -1
View File
@@ -41,6 +41,7 @@ test.describe('inquiry detail', () => {
await expect(page.getByRole('button', { name: '신규' })).toBeVisible(); await expect(page.getByRole('button', { name: '신규' })).toBeVisible();
await expect(page.getByRole('button', { name: '연락함' })).toBeVisible(); await expect(page.getByRole('button', { name: '연락함' })).toBeVisible();
await expect(page.getByRole('button', { name: '완료' })).toBeVisible(); await expect(page.getByRole('button', { name: '완료' })).toBeVisible();
await expect(page.getByRole('button', { name: '문의 목록기' })).toBeVisible(); await expect(page.getByRole('button', { name: '문의 목록으로 돌아가기' })).toBeVisible();
await expect(page.getByRole('link', { name: '다른 문의도 보기' })).toBeVisible();
}); });
}); });