Commit Graph

49 Commits

Author SHA1 Message Date
kjh2064 44777f4a1f Align admin list empty states and blog category guard
TaxBaik CI/CD / build-and-deploy (push) Failing after 35s
2026-07-09 15:41:43 +09:00
kjh2064 2f72834317 Fix blog category selection and empty state rendering
TaxBaik CI/CD / build-and-deploy (push) Successful in 53s
2026-07-09 15:32:13 +09:00
kjh2064 c5e6e4ba57 Stabilize admin rendering and deploy auth
TaxBaik CI/CD / build-and-deploy (push) Successful in 58s
2026-07-09 15:21:13 +09:00
kjh2064 f7813450d7 Standardize admin entry buttons
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m3s
2026-07-09 14:30:13 +09:00
kjh2064 2f4ec5efea Add inquiry action controls
TaxBaik CI/CD / build-and-deploy (push) Successful in 58s
2026-07-09 14:28:12 +09:00
kjh2064 4348de0707 Show loaded values on edit screens
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m0s
2026-07-09 14:20:07 +09:00
kjh2064 3831f52253 Fix customer admin routes
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m7s
2026-07-09 14:17:55 +09:00
kjh2064 6b6359007c Fix remaining admin page routes
TaxBaik CI/CD / build-and-deploy (push) Successful in 56s
2026-07-09 14:17:01 +09:00
kjh2064 f5249afbd0 Fix admin action routes
TaxBaik CI/CD / build-and-deploy (push) Successful in 56s
2026-07-09 14:13:26 +09:00
kjh2064 e3addc1a79 Implement admin CRUD for announcements inquiries and faqs
TaxBaik CI/CD / build-and-deploy (push) Successful in 54s
2026-07-09 14:06:14 +09:00
kjh2064 bfc4d70ebd Tighten shared admin components
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m2s
2026-07-09 13:59:17 +09:00
kjh2064 6407afece5 Normalize remaining admin page shells
TaxBaik CI/CD / build-and-deploy (push) Successful in 57s
2026-07-09 13:55:54 +09:00
kjh2064 58eb297865 Remove leftover admin topbar overrides
TaxBaik CI/CD / build-and-deploy (push) Successful in 58s
2026-07-09 13:48:18 +09:00
kjh2064 00521668be Tabler polish for client and blog editors
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m3s
2026-07-09 13:44:26 +09:00
kjh2064 8c0c30525d Align list pages with Tabler table patterns
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m0s
2026-07-09 13:42:44 +09:00
kjh2064 f4e063280e Standardize admin shared components
TaxBaik CI/CD / build-and-deploy (push) Successful in 56s
2026-07-09 13:41:13 +09:00
kjh2064 03e822f8d5 Persist auth keys across deployments 2026-07-09 13:40:18 +09:00
kjh2064 57ba5fd108 Polish admin dashboard for Tabler demo style 2026-07-09 13:38:38 +09:00
kjh2064 714d27bc01 Add admin breadcrumb and menu icons
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m5s
2026-07-09 13:35:30 +09:00
kjh2064 5ee6a9da3f Refine admin shell to Tabler style
TaxBaik CI/CD / build-and-deploy (push) Successful in 55s
2026-07-09 13:34:15 +09:00
kjh2064 a312da919c Restore admin layout and harden login
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m0s
2026-07-09 13:31:54 +09:00
kjh2064 98bb05a084 Standardize blog editor and content styles
TaxBaik CI/CD / build-and-deploy (push) Failing after 54s
2026-07-09 13:11:46 +09:00
kjh2064 66a9990d5f Standardize blog admin pages
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m58s
2026-07-09 12:41:16 +09:00
kjh2064 37e631582d Move admin page styling to shared css
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m50s
2026-07-09 12:14:55 +09:00
kjh2064 6ec4ef4c9a Standardize admin clients pages
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m23s
2026-07-09 11:41:40 +09:00
kjh2064 55933649f6 Standardize admin pages and blog editor
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m39s
2026-07-09 11:33:17 +09:00
kjh2064 9cf6675dc9 Convert remaining admin routes to Razor Pages
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m40s
2026-07-09 11:19:51 +09:00
kjh2064 cf3fea966d Add admin layout and customer pagination
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m32s
2026-07-09 11:16:50 +09:00
kjh2064 fb8a90fa6b Add Razor customer CRUD shell
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m23s
2026-07-09 11:14:12 +09:00
kjh2064 83c0c70adc Add Razor admin dashboard shell
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m18s
2026-07-09 11:10:00 +09:00
kjh2064 0545964468 Refactor admin login to cookie auth
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m23s
2026-07-09 11:07:09 +09:00
kjh2064 89fa51efe2 refactor admin UX and stabilize shell
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m20s
2026-07-09 00:03:33 +09:00
kjh2064 91014a5ae3 Razor Pages 경로 최적화: 절대 경로 → 상대 경로
## 변경사항
- Login.cshtml.cs: /taxbaik/* 절대 경로 제거
  - RedirectUrl: '/taxbaik/admin/dashboard' → '/admin/dashboard'
  - NormalizeRedirectUrl: 경로 정규화 로직 간소화
- 모든 Razor Pages (.cshtml):
  - href='/taxbaik/*' → href='/*' 변경
  - src='/taxbaik/*' → src='/*' 변경
  - Response.Redirect('/taxbaik/*') → Response.Redirect('/*') 변경
- Feed.cshtml: RSS 피드의 절대 URL 유지 (SEO용)

## 원칙
 내부 링크: 상대 경로 사용
 외부 URL (RSS, CanonicalUrl): 절대 URL 유지
 Nginx: /taxbaik 프리픽스 자동 처리

## 결과
 빌드: 0 오류, 2 경고
 전체 경로 최적화 완료

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-08 15:29:53 +09:00
kjh2064 e79b06ebcd Separate auth failures and development settings
TaxBaik CI/CD / build-and-deploy (push) Successful in 3m19s
2026-07-07 23:36:45 +09:00
kjh2064 1109dde72c Remove customer portal footer link
TaxBaik CI/CD / build-and-deploy (push) Successful in 3m39s
2026-07-07 23:29:05 +09:00
kjh2064 35842b6765 Refine admin login flow and verification harness
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m21s
2026-07-07 14:38:30 +09:00
kjh2064 333089a6ea fix: change all admin pages to prerender: true for WASM bootstrap
TaxBaik CI/CD / build-and-deploy (push) Successful in 5m13s
All Page components now use:
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: true))

Attempted solution based on observation that Login.razor (prerender: true)
works correctly while Dashboard.razor (prerender: false) fails WASM init.

Result: blazor.boot.json still not generated, WASM bootstrap still fails.

Indicates deeper SDK issue with ASP.NET Core 10 Preview Blazor WASM
initialization mechanism, not fixable by render mode configuration alone.

Changed files:
- All 30+ admin Page components: prerender: false → true
- Program.cs: MapRazorComponents added (required for WASM)

Status: WASM bootstrap blocked at fundamental SDK level.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 22:07:05 +09:00
kjh2064 3bfb1bab7e fix: add root path redirect - EMERGENCY
TaxBaik CI/CD / build-and-deploy (push) Failing after 5m30s
The request reached the end of the pipeline - critical fix.

Added root path mapping to redirect to /taxbaik/
This ensures the root endpoint is handled.

Emergency deployment to fix production 500 error.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 05:44:58 +09:00
kjh2064 5431299498 feat: add RSS/Atom feed support - fix Razor XML rendering
TaxBaik CI/CD / build-and-deploy (push) Successful in 8m35s
Changes:
- Rss.cshtml: Fixed Razor/XML syntax by using StringBuilder
- Feed.cshtml: Alias for /feed.xml
- Both pages use RssModel (BlogService)
- robots.txt: Added feed references

Fix:
- Removed @page duplicate directive
- Used StringBuilder for proper XML generation
- Avoided Razor XML tag nesting issues
- Both /rss.xml and /feed.xml now available

URLs:
✓ https://www.taxbaik.com/taxbaik/rss.xmlhttps://www.taxbaik.com/taxbaik/feed.xml

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 05:23:30 +09:00
kjh2064 3827e374ca fix: restore Sitemap as Razor Page for search engine compatibility
TaxBaik CI/CD / build-and-deploy (push) Has been cancelled
Problem:
- SitemapEndpoint (FastEndpoints) creates /api/sitemap.xml
- robots.txt references /taxbaik/sitemap.xml
- Path mismatch breaks search engine crawling

Solution:
- Restore Sitemap.cshtml (Razor Page)
- Restore Sitemap.cshtml.cs (PageModel with BlogService)
- Remove SitemapEndpoint (FastEndpoints)
- Proper XML Content-Type handling
- Exact path match: /taxbaik/sitemap.xml

Why Razor Page?
- Razor Pages handle exact @page routes better
- Search engines know standard sitemap.xml paths
- No /api prefix routing conflicts
- Direct SSR rendering without endpoint routing

Verification for Google/Naver:
✓ /taxbaik/sitemap.xml (exact match with robots.txt)
✓ Content-Type: application/xml
✓ Valid XML structure
✓ Dynamic blog posts included

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 05:20:22 +09:00
kjh2064 a554e1795a fix: correct BlogService GetPublishedPagedAsync parameter order
TaxBaik CI/CD / build-and-deploy (push) Failing after 1m25s
Use named parameters for clarity:
- categoryId: null
- ct: ct (cancellation token)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 04:48:52 +09:00
kjh2064 98ebc89505 fix: explicitly set sitemap.xml page route
TaxBaik CI/CD / build-and-deploy (push) Successful in 5m28s
- @page "/sitemap.xml" (explicitly named route)
- Accessible at /taxbaik/sitemap.xml for search engines
- Matches robots.txt sitemap reference
- Dynamic content from DB on every request

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 04:37:14 +09:00
kjh2064 54367696dc feat: standalone Blazor WebAssembly admin + SEO enhancements
Architecture:
- Admin UI: /admin (Standalone Blazor WebAssembly, 219 WASM files)
- Portal: /portal (Razor Pages, Cookie/OAuth auth)
- Homepage: / (Razor Pages, SSR)
- API: /api (FastEndpoints + JWT)

SEO:
- Sitemap: Public content only (blog, FAQ, announcements, contact)
- robots.txt: Exclude /admin and /portal, reference production domain
- Naver verification: naverb1813cd79ddc2ded5c5291fca5cb46c2.html ready

Technical:
- TaxBaik.Web.Client: StaticWebAssetBasePath=admin
- Server Program.cs: UseBlazorFrameworkFiles + MapFallback for SPA routing
- base href="/admin/" for client-side navigation
- blazor.webassembly.js (standalone, not web.js)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 04:03:18 +09:00
kjh2064 a7f9b94499 feat: add message content length validation
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m21s
- Backend: MinMessageLength=10, MaxMessageLength=5000
- Frontend: Real-time character counter
- Frontend: Client-side validation before submission
- Frontend: Error messages for length violations
- Applied to both Submit and Update operations

Prevents empty or excessively long messages while maintaining
user-friendly feedback on character count.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 02:45:00 +09:00
kjh2064 66d6ae88f1 feat: implement proper Korean phone number validation and formatting
TaxBaik CI/CD / build-and-deploy (push) Successful in 3m23s
- Add comprehensive Korean phone number regex validation
- Support all area codes: 02, 031-064, 070, 0505-0509
- Support all mobile carriers: 010-019
- Intelligent formatting based on area code (2-3 digits)
- Client-side JavaScript: real-time formatting + validation
- Backend C#: robust validation + formatting for storage

Handles all Korean phone number formats:
- Landline: 02-123-4567, 031-1234-5678
- Mobile: 010-1234-5678
- VoIP: 070-1234-5678, 0505-1234-5678

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 02:43:37 +09:00
kjh2064 caf7e5cf9f fix: correct phone number formatting to follow standard pattern
TaxBaik CI/CD / build-and-deploy (push) Successful in 3m32s
- 10-digit numbers: XXXX-XXX-XXXX (4-3-3) - landline format
- 11-digit numbers: XXX-XXXX-XXXX (3-4-4) - mobile format

Apply consistent formatting on both frontend and backend.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 02:41:55 +09:00
kjh2064 11019c7e0b improvement: add client-side phone number masking and validation
TaxBaik CI/CD / build-and-deploy (push) Successful in 3m13s
- Add real-time phone number formatting (XXX-XXXX-XXXX pattern)
- Validate phone length (10-11 digits) before form submission
- Show validation error message to user
- Only numeric input allowed with auto-formatting
- Improves UX: users see formatted result immediately

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 02:40:55 +09:00
kjh2064 e7436bb0e7 debug: add detailed logging for Telegram inquiry notifications
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m27s
- Add debug logging to Contact page form handler
- Add detailed logging to TelegramInquiryNotificationService
- Track inquiry submission and notification flow

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-04 02:30:10 +09:00
kjh2064 ea447495d3 refactor: move buildable .NET source into src/, update CI/doc paths
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m7s
Groups the repo root into src (buildable source), docs (already existed),
and everything else (db/, scripts/, tests/, deploy/ - deployment/ops/test
assets that aren't compiled, already organized as their own folders). CI
now only needs src/ to build: dotnet restore/build/test/publish all point
at src/TaxBaik.sln, src/TaxBaik.Web/, src/TaxBaik.Proxy/.

- git mv every project (Domain, Infrastructure, Application,
  Application.Tests, Web, Web.Client, Proxy) and TaxBaik.sln into src/ as a
  unit, so relative ProjectReference/.sln paths stay valid unchanged.
- .gitea/workflows/deploy.yml: 6 dotnet restore/clean/build/test/publish
  invocations now point at src/. db/migrations and scripts/ stay at root
  (deploy_gb.sh and browser-e2e.yml only touch published output and the
  deployed URL, not source paths - verified, no changes needed there).
- scripts/validate_admin_render.sh: admin render-mode file paths now
  src/TaxBaik.Web.Client/...
- scripts/validate_kst_timestamps.sh: dropped deploy.sh from its target
  list - that script was removed in the prior cleanup commit (dead, no
  CI workflow referenced it) but this validator still expected it to exist.
- CLAUDE.md, docs/ENGINEERING_HARNESS.md, docs/ADMIN_PATTERN_CRITIQUE_WBS.md:
  updated project-structure diagram, dotnet run/build commands, and grep
  targets to the new src/ paths (also fixed a pre-existing stale path in
  ADMIN_PATTERN_CRITIQUE_WBS.md that still said TaxBaik.Web/Components/Admin
  from before that ever moved to TaxBaik.Web.Client).
- Added a Repo Root harness rule + Architecture Guardrail entries: new files
  belong under src/docs/tests/scripts/db/deploy, not loose at root; temp
  work stays outside the repo (or under a gitignored .scratch/) and is
  never committed.

Verified locally: dotnet build/test src/TaxBaik.sln (26/26 tests), and all
three scripts/validate_*.sh pass against the new layout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-03 10:37:37 +09:00