Add ops log diagnostics roadmap
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m57s

This commit is contained in:
2026-07-08 02:08:01 +09:00
parent 86643281e2
commit afbbf5e837
4 changed files with 67 additions and 0 deletions
+1
View File
@@ -9,6 +9,7 @@
| [ENGINEERING_HARNESS.md](./ENGINEERING_HARNESS.md) | 아키텍처, 코드 품질, 배포, 데이터 정합성 하네스 | 방향성 변경 또는 반복 위반 발견 |
| [STACK_TEMPLATE_WBS.md](./STACK_TEMPLATE_WBS.md) | MudBlazor + ASP.NET Core 10 + Dapper + PostgreSQL 18.4 + API-first + SSR/Interactive render mode 기준 템플릿, 로드맵, WBS | 새 스택 채택 또는 렌더/인증 기준 변경 |
| [DOUZONE_UX_GUIDE.md](./DOUZONE_UX_GUIDE.md) | 더존식 어드민 UX 원칙, 템플릿, 컴포넌트, 서빙 규칙 | 화면 패턴 변경 또는 신규 템플릿 추가 |
| [OPS_LOG_DIAGNOSTICS_ROADMAP.md](./OPS_LOG_DIAGNOSTICS_ROADMAP.md) | 관리자 대시보드/클라이언트 로그 진단 로드맵 | 로그 진단 흐름 또는 관측성 작업 변경 |
| [COMMON_CODE_POLICY.md](./COMMON_CODE_POLICY.md) | 공통코드, 저장값, 컬럼 길이, 하드코딩 금지 규칙 | 공통코드 또는 콤보 추가/수정 |
| [COMBO_POLICY.md](./COMBO_POLICY.md) | 콤보/선택/검색 입력 정책과 저장값 규칙 | 상태/유형/선택 입력 정책 변경 |
| [ADMIN_PATTERN_CRITIQUE_WBS.md](./ADMIN_PATTERN_CRITIQUE_WBS.md) | 어드민 Blog/문의 등록 패턴 비판, 개선 로드맵, 정량 WBS | WBS 상태 또는 성공 지표 변경 |
+39
View File
@@ -0,0 +1,39 @@
# Ops Log Diagnostics Roadmap
현재 목표는 관리자 대시보드와 클라이언트 로그 진단 흐름을 안정화하고, 다음 문제를 더 빨리 규명할 수 있게 만드는 것이다.
## Current State
- 관리자 대시보드 렌더 크래시는 해결됨.
- 브라우저 오류는 `client-logs`로 서버에 전송됨.
- 관리자에서 최근 로그, 그룹 요약, 날짜 범위, source/route/message 필터를 볼 수 있음.
- 반복 오류 그룹을 클릭하면 해당 로그로 필터링됨.
- 대시보드에서 로그 진단 화면으로 바로 이동할 수 있음.
## Next Priorities
| 순위 | 작업 | 이유 |
| --- | --- | --- |
| 1 | `client-logs` 요약에 top sources / top routes 카드 고정 노출 | 재발 원인을 가장 빠르게 좁힐 수 있음 |
| 2 | 그룹 상세의 선택 상태 표시 | 어떤 그룹을 눌렀는지 사용자 혼동을 줄임 |
| 3 | 날짜 입력을 ISO 문자열/현지 시간으로 명확히 변환 | 필터 입력의 오해를 줄임 |
| 4 | 로그를 파일 파싱에서 구조화 저장으로 전환 검토 | 검색/통계 정확도를 높임 |
| 5 | 운영 대시보드에 최신 오류 개수와 최근 source 카드 고정 | 로그인 직후 문제 감지가 쉬워짐 |
## Guardrails
- 관리자 진단은 `AdminOnly`만 노출한다.
- 브라우저 오류 수집은 사용자 흐름을 막지 않는다.
- 중복 로그는 억제하고, 재시도 루프를 만들지 않는다.
- 하위 경로 `/taxbaik/admin` 기준을 유지한다.
- `App.razor`에 HTML 호스트와 `blazor.webassembly.js`를 다시 넣지 않는다.
## Verification
다음 작업은 항상 이 순서로 검증한다.
1. `dotnet build src/TaxBaik.Web/TaxBaik.Web.csproj -c Debug`
2. `node scripts/route_lint.mjs`
3. 로컬 브라우저에서 `/taxbaik/admin/login` -> `/taxbaik/admin/dashboard`
4. `/taxbaik/admin/client-logs`에서 요약, 그룹, 필터가 보이는지 확인
@@ -23,6 +23,26 @@
<div><strong>Warning</strong> @_summary.WarningCount</div>
<div><strong>Info</strong> @_summary.InfoCount</div>
</div>
<div class="admin-log-summary-breakdown">
<section>
<strong>Top Sources</strong>
<ul>
@foreach (var item in _summary.TopSources)
{
<li>@item.Key (@item.Value)</li>
}
</ul>
</section>
<section>
<strong>Top Routes</strong>
<ul>
@foreach (var item in _summary.TopRoutes)
{
<li>@item.Key (@item.Value)</li>
}
</ul>
</section>
</div>
}
<div class="admin-log-filter-row">
<input class="mud-input-slot" placeholder="검색어" @bind="_query" @bind:event="oninput" />
@@ -167,6 +187,8 @@
public int ErrorCount { get; set; }
public int WarningCount { get; set; }
public int InfoCount { get; set; }
public List<KeyValuePair<string, int>> TopSources { get; set; } = [];
public List<KeyValuePair<string, int>> TopRoutes { get; set; } = [];
}
private sealed class ClientLogGroupDto
@@ -28,5 +28,10 @@
<div>중복되는 오류는 최근 로그 요약에서 source와 route 기준으로 묶어 봅니다.</div>
<a href="/taxbaik/admin/client-logs?q=invoke">오류 검색</a>
</article>
<article class="admin-simple-card">
<strong>관측성</strong>
<div>Top sources / routes를 확인해서 어떤 모듈이 재발하는지 빠르게 좁힙니다.</div>
<a href="/taxbaik/admin/client-logs">요약 리포트 보기</a>
</article>
</div>
</section>