Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
25 lines (23 loc) · 17.1 KB
/
Copy pathindex.html
File metadata and controls
25 lines (23 loc) · 17.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html lang="zh-Hant" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>StrawMoneyBook | Developer Guide</title>
<meta name="description" content="StrawMoneyBook 官方開發者技術文件:架構、模組協作與功能域指南">
<meta name="generator" content="VitePress v1.6.4">
<link rel="preload stylesheet" href="/assets/style.7UNe3_zg.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.CO7IZeOb.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.BccmmSJ_.js">
<link rel="modulepreload" href="/assets/chunks/framework.mRCPFc5l.js">
<link rel="modulepreload" href="/assets/index.md.C8FStsUX.lean.js">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>StrawMoneyBook</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/architecture/overview.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Architecture</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/domains/bookkeeping.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Domains</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/operations/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Operations</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/StrawCoding/StrawMoneyBook" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>GitHub</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-6aa21345 data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/StrawCoding/StrawMoneyBookWiki" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><!----><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><div class="group" data-v-bb2aa2f0><div class="item social-links" data-v-bb2aa2f0><div class="VPSocialLinks social-links-list" data-v-bb2aa2f0 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/StrawCoding/StrawMoneyBookWiki" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><!----><!----><div class="VPContent is-home" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPHome" data-v-1428d186 data-v-8b561e3d><!--[--><!--]--><div class="VPHero VPHomeHero" data-v-8b561e3d data-v-4f9c455b><div class="container" data-v-4f9c455b><div class="main" data-v-4f9c455b><!--[--><!--]--><!--[--><h1 class="heading" data-v-4f9c455b><span class="name clip" data-v-4f9c455b>StrawMoneyBook</span><span class="text" data-v-4f9c455b>Developer Guide</span></h1><p class="tagline" data-v-4f9c455b>專案架構、模組協作與功能域技術文件</p><!--]--><!--[--><!--]--><div class="actions" data-v-4f9c455b><!--[--><div class="action" data-v-4f9c455b><a class="VPButton medium brand" href="/guide/" data-v-4f9c455b data-v-fa7799d5>文件中心</a></div><div class="action" data-v-4f9c455b><a class="VPButton medium alt" href="/quick-start.html" data-v-4f9c455b data-v-fa7799d5>Quick Start</a></div><div class="action" data-v-4f9c455b><a class="VPButton medium alt" href="/architecture/overview.html" data-v-4f9c455b data-v-fa7799d5>Architecture</a></div><div class="action" data-v-4f9c455b><a class="VPButton medium alt" href="/operations/" data-v-4f9c455b data-v-fa7799d5>Operations</a></div><!--]--></div><!--[--><!--]--></div><!----></div></div><!--[--><!--]--><!--[--><!--]--><div class="VPFeatures VPHomeFeatures" data-v-8b561e3d data-v-a6181336><div class="container" data-v-a6181336><div class="items" data-v-a6181336><!--[--><div class="grid-3 item" data-v-a6181336><div class="VPLink no-icon VPFeature" data-v-a6181336 data-v-a3976bdc><!--[--><article class="box" data-v-a3976bdc><!----><h2 class="title" data-v-a3976bdc>架構優先</h2><p class="details" data-v-a3976bdc>從 monorepo 邊界、分層依賴到啟動鏈,理解 frontend / backend 如何分工與協作。</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-a6181336><div class="VPLink no-icon VPFeature" data-v-a6181336 data-v-a3976bdc><!--[--><article class="box" data-v-a3976bdc><!----><h2 class="title" data-v-a3976bdc>功能域導覽</h2><p class="details" data-v-a3976bdc>記帳、預算、資產、借貸報銷、同步備份等 9 大域,每章說明資料流與關鍵 Service / Store。</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-a6181336><div class="VPLink no-icon VPFeature" data-v-a6181336 data-v-a3976bdc><!--[--><article class="box" data-v-a3976bdc><!----><h2 class="title" data-v-a3976bdc>對標 Vue 3 文件</h2><p class="details" data-v-a3976bdc>概念 → 協作 → 程式入口,搭配 mermaid 圖與 GitHub 原始碼連結,而非維運 runbook。</p><!----></article><!--]--></div></div><!--]--></div></div></div><!--[--><!--]--><div class="vp-doc container" style="" data-v-8b561e3d data-v-8e2d4988><!--[--><div style="position:relative;" data-v-8b561e3d><div><h2 id="建議閱讀路徑" tabindex="-1">建議閱讀路徑 <a class="header-anchor" href="#建議閱讀路徑" aria-label="Permalink to "建議閱讀路徑""></a></h2><ol><li><a href="/guide/">文件中心</a> — 模組索引(入門/功能域/發版/架構)</li><li><a href="/quick-start.html">Quick Start</a> — 本機開發環境與 repo 結構</li><li><a href="/architecture/overview.html">Architecture Overview</a> — 系統邊界與技術棧</li><li><a href="/architecture/application-layers.html">Application Layers</a> — 分層與依賴方向</li><li><a href="/domains/bookkeeping.html">Feature Domains</a> — 依業務域深入</li><li><a href="/operations/">Operations</a> — closeout、Playwright、APK、發薪週期、銀行真機閘</li></ol><div class="tip custom-block"><p class="custom-block-title">與產品文件的差異</p><p>本 wiki 分兩層:<strong>Guide / Architecture / Domains</strong> 講程式架構與模組協作;<strong>Operations</strong> 講發版、測試、部署與同步 runbook。產品能力詳述見主 repo 的 <a href="https://github.com/StrawCoding/StrawMoneyBook/blob/main/StrawMoneyBook_App_Features_Detailed.md" target="_blank" rel="noreferrer"><code>StrawMoneyBook_App_Features_Detailed.md</code></a>;檔案對照表見 <a href="https://github.com/StrawCoding/StrawMoneyBook/blob/main/frontend/StrawMoneyBook_Features_Map.md" target="_blank" rel="noreferrer"><code>StrawMoneyBook_Features_Map.md</code></a>。</p></div></div></div><!--]--></div></div></div><footer class="VPFooter" data-v-5d98c3a5 data-v-e315a0ad><div class="container" data-v-e315a0ad><p class="message" data-v-e315a0ad>StrawMoneyBook Developer Guide</p><p class="copyright" data-v-e315a0ad>Copyright © StrawCoding</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"architecture_application-layers.md\":\"CgR9XOHm\",\"architecture_ledger-lifecycle.md\":\"CcxXX2H7\",\"architecture_overview.md\":\"SAWkUI6W\",\"architecture_startup-and-runtime.md\":\"BP5clRCr\",\"domains_analysis-reports.md\":\"CBRDQ9qw\",\"domains_android-capacitor.md\":\"BtueDs6D\",\"domains_assets.md\":\"BHI_y_uT\",\"domains_bank-sync-einvoice.md\":\"DCM56cVG\",\"domains_bookkeeping.md\":\"Dcz1EQE6\",\"domains_budget.md\":\"B6BwF5sI\",\"domains_loans-reimbursements-claims.md\":\"CGlYGXaD\",\"domains_membership.md\":\"hRWI73Mi\",\"domains_sync-backup-shared-ledger.md\":\"BUR5g-Ks\",\"guide_authentication.md\":\"DO88H_Ar\",\"guide_backend-api.md\":\"0L67ETXg\",\"guide_data-model-and-storage.md\":\"CI5IWLP_\",\"guide_frontend-stack.md\":\"CzT-2QQa\",\"guide_index.md\":\"DpjXW36b\",\"index.md\":\"C8FStsUX\",\"operations_android-native-bank-apk.md\":\"DrWW5ClT\",\"operations_android-release-and-play-upload.md\":\"Btu0fZq-\",\"operations_auth-and-security-operations.md\":\"BHg2xi2-\",\"operations_backend-deployment-and-health.md\":\"C0ERdtKo\",\"operations_backups-and-restore.md\":\"BrLc53Sf\",\"operations_ci-cd-and-gates.md\":\"B750kS12\",\"operations_closeout-and-versioning.md\":\"BSt107ZE\",\"operations_environment-variables.md\":\"B9ovsejy\",\"operations_index.md\":\"D39Mkmqo\",\"operations_local-dev-quickstart.md\":\"CsEDR39_\",\"operations_long-task-worker.md\":\"BNfha-Vv\",\"operations_open-source-and-license.md\":\"U2XWYzu0\",\"operations_optimization-plan.md\":\"CT7Gn7DO\",\"operations_payroll-cycle-budget.md\":\"Dc826Ik7\",\"operations_playwright-app-shell.md\":\"CVjT92yw\",\"operations_release-process.md\":\"CmcTiGZr\",\"operations_sync-architecture-b.md\":\"MEm_kSO6\",\"operations_sync-operations-runbooks.md\":\"BSuYnVLl\",\"operations_technical-optimization.md\":\"CeeDfOcY\",\"operations_testing-and-verification.md\":\"CNgVwRe2\",\"operations_troubleshooting.md\":\"CcMQ51U_\",\"operations_wear-companion.md\":\"DXXXiXzc\",\"quick-start.md\":\"CH2Xo4Oj\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-Hant\",\"dir\":\"ltr\",\"title\":\"StrawMoneyBook\",\"titleTemplate\":\":title | Developer Guide\",\"description\":\"StrawMoneyBook 官方開發者技術文件:架構、模組協作與功能域指南\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\"},{\"text\":\"Architecture\",\"link\":\"/architecture/overview\"},{\"text\":\"Domains\",\"link\":\"/domains/bookkeeping\"},{\"text\":\"Operations\",\"link\":\"/operations/\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/StrawCoding/StrawMoneyBook\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"What is StrawMoneyBook?\",\"link\":\"/\"},{\"text\":\"Documentation Hub\",\"link\":\"/guide/\"},{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Open Source & License\",\"link\":\"/operations/open-source-and-license\"}]},{\"text\":\"Architecture\",\"items\":[{\"text\":\"Overview\",\"link\":\"/architecture/overview\"},{\"text\":\"Application Layers\",\"link\":\"/architecture/application-layers\"},{\"text\":\"Startup & Runtime\",\"link\":\"/architecture/startup-and-runtime\"},{\"text\":\"Ledger Lifecycle\",\"link\":\"/architecture/ledger-lifecycle\"}]},{\"text\":\"Core Guide\",\"items\":[{\"text\":\"Data Model & Storage\",\"link\":\"/guide/data-model-and-storage\"},{\"text\":\"Frontend Stack\",\"link\":\"/guide/frontend-stack\"},{\"text\":\"Backend API\",\"link\":\"/guide/backend-api\"},{\"text\":\"Authentication\",\"link\":\"/guide/authentication\"}]},{\"text\":\"Feature Domains\",\"items\":[{\"text\":\"Bookkeeping\",\"link\":\"/domains/bookkeeping\"},{\"text\":\"Budget\",\"link\":\"/domains/budget\"},{\"text\":\"Assets\",\"link\":\"/domains/assets\"},{\"text\":\"Loans, Reimbursements & Claims\",\"link\":\"/domains/loans-reimbursements-claims\"},{\"text\":\"Analysis & Reports\",\"link\":\"/domains/analysis-reports\"},{\"text\":\"Sync, Backup & Shared Ledger\",\"link\":\"/domains/sync-backup-shared-ledger\"},{\"text\":\"Membership\",\"link\":\"/domains/membership\"},{\"text\":\"Bank Sync & E-Invoice\",\"link\":\"/domains/bank-sync-einvoice\"},{\"text\":\"Android & Capacitor\",\"link\":\"/domains/android-capacitor\"}]},{\"text\":\"Operations\",\"items\":[{\"text\":\"Home\",\"link\":\"/operations/\"},{\"text\":\"Open Source & License\",\"link\":\"/operations/open-source-and-license\"},{\"text\":\"Optimization Plan\",\"link\":\"/operations/optimization-plan\"},{\"text\":\"Local Dev\",\"link\":\"/operations/local-dev-quickstart\"},{\"text\":\"Environment Variables\",\"link\":\"/operations/environment-variables\"},{\"text\":\"Closeout & Versioning\",\"link\":\"/operations/closeout-and-versioning\"},{\"text\":\"Long-Task Worker\",\"link\":\"/operations/long-task-worker\"},{\"text\":\"Playwright App Shell\",\"link\":\"/operations/playwright-app-shell\"},{\"text\":\"Testing\",\"link\":\"/operations/testing-and-verification\"},{\"text\":\"CI / CD Gates\",\"link\":\"/operations/ci-cd-and-gates\"},{\"text\":\"Release Process\",\"link\":\"/operations/release-process\"},{\"text\":\"Android Play Upload\",\"link\":\"/operations/android-release-and-play-upload\"},{\"text\":\"Native Bank APK\",\"link\":\"/operations/android-native-bank-apk\"},{\"text\":\"Payroll Cycle Budget\",\"link\":\"/operations/payroll-cycle-budget\"},{\"text\":\"Wear Companion\",\"link\":\"/operations/wear-companion\"},{\"text\":\"Sync Architecture B\",\"link\":\"/operations/sync-architecture-b\"},{\"text\":\"Sync Runbooks\",\"link\":\"/operations/sync-operations-runbooks\"},{\"text\":\"Backend Deploy\",\"link\":\"/operations/backend-deployment-and-health\"},{\"text\":\"Backups & Restore\",\"link\":\"/operations/backups-and-restore\"},{\"text\":\"Auth & Security\",\"link\":\"/operations/auth-and-security-operations\"},{\"text\":\"Troubleshooting\",\"link\":\"/operations/troubleshooting\"},{\"text\":\"Technical Optimization\",\"link\":\"/operations/technical-optimization\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/StrawCoding/StrawMoneyBookWiki\"}],\"footer\":{\"message\":\"StrawMoneyBook Developer Guide\",\"copyright\":\"Copyright © StrawCoding\"},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
</body>
</html>