fix: 운영 설정 배포와 탐색 UX 개선
This commit is contained in:
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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-]+$/);
|
||||||
|
|||||||
@@ -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();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user