Quotation SaaS — Code Graph
quotation-saas-worker.js 結構
var blogArticles = [...] → 27 篇文章資料
├── slug, title, desc, lang, date
├── bullets[] → 文章要點
├── steps[] → HowTo Schema 步驟
var blogCategories = {...} → 6 類別: how-to/cost-guide/markup/comparison/career/contract
var blogCatMap = {...} → slug → category mapping
var blogFAQ = {...} → 每篇 3 Q&A
var articleLinks = {...} → 內部連結 map
var cityData = [...] → 25 城市資料
var gEntitySchema / gReviewSchema → 全域 Schema
函數:
├── injectSEOTags(html, pageType) → 注入 SEO meta + Schema
├── renderLandingPage() → 首頁 Landing
├── renderBlogListing(cat) → Blog 列表(支援類別過濾)
├── renderBlogPost(slug) → 單篇文章
├── renderBlogSitemap() → Blog sitemap
├── renderMainSitemap() → 主 sitemap(含城市)
├── renderLlmTxt() → LLMs.txt
├── renderMarkupCalculator() → 加價率計算機
├── renderCityPage(slug) → 城市 Landing
├── renderContentHub() → Guide 頁
├── getPricingPage() → Pricing 頁
├── handleRequest(request) → 主路由
│ ├── /auth/* → 認證
│ ├── /api/* → API
│ ├── /dashboard → 報價工具
│ ├── /blog/* → Blog
│ ├── /interior-designer/* → 城市頁
│ └── /* → 靜態 + injectSEOTags
├── getRelatedArticles(slug) → 相關文章
├── getArticleLinks(slug) → 內部連結
├── getFAQ(slug) → FAQ 資料
├── getCat(slug) / getCatName() → 類別 helpers
└── draftForceSave → 前端 Draft 自動保存