Commit Graph

10 Commits

Author SHA1 Message Date
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