member_center/docs/INSTALL.md

97 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 安裝流程Installer + 管理者帳號)
此文件定義「首次安裝」與「既有環境管理」兩種情境,並以 EF Core Code First 為主。
## 目標
- 透過 EF Core migrations 建立/更新 DB schema
- 建立或更新 superuser 帳號
- 已設定 DB 連線時,可重複執行(不重建 schema
## 安裝模式
### A. 首次安裝Init
1) 輸入 DB 連線資訊
2) 連線檢查與版本檢查
3) 建立/更新 schemaEF Core migrations
4) 建立 superuser預設帳號 admin可自訂
5) 建立必要 seedroles 等)
### B. 既有環境(管理)
- 建立額外 superuser
- 強制重設 superuser 密碼
- 只執行 migration差異安裝不重建 schema
## 建議實作方式(.NET
- 提供一個 CLI 或安裝頁面(類 nopCommerce / Wagtail
- CLI 支援互動式輸入DB 連線、admin 帳號、密碼)
- 內部流程一致:
1) 讀取/寫入連線資訊
2) 執行 migration`dbContext.Database.Migrate()`
3) 建立角色與 superuser若不存在
## CLI 指令規格(草案)
### 通用參數
- `--connection-string <string>`: DB 連線字串
- `--db-provider <string>`: 預設 `postgres`
- `--appsettings <path>`: 設定檔路徑(預設 `appsettings.json`
- `--no-prompt`: 不使用互動輸入CI/CD
- `--dry-run`: 只檢查,不寫入
- `--verbose`: 詳細輸出
### 1) `installer init`
用途:首次安裝(含 migrations + seed + superuser
參數:
- `--admin-email <email>`: 預設 `admin@example.com`
- `--admin-password <string>`: 預設需互動輸入
- `--admin-display-name <string>`: 可選
- `--force`: 若偵測已初始化,仍強制執行
流程:
1) 讀取/寫入 DB 連線資訊
2) 執行 migrations不 Drop
3) 建立 rolesadmin, support
4) 建立 admin不存在才建立
5) 寫入安裝鎖定install.lock 或 DB flag
### 2) `installer add-admin`
用途:新增 superuser
參數:
- `--admin-email <email>`
- `--admin-password <string>`
- `--admin-display-name <string>`
流程:
1) 檢查 DB 連線
2) 建立使用者並指派 admin 角色
### 3) `installer reset-admin-password`
用途:重設指定 admin 密碼
參數:
- `--admin-email <email>`
- `--admin-password <string>`
流程:
1) 檢查帳號存在
2) 更新密碼(強制)
3) 寫入 audit log
### 4) `installer migrate`
用途:只執行 migrations
參數:
- `--target <migration>`: 指定遷移(可選)
流程:
1) 連線檢查
2) 執行 migrations
3) 輸出版本
## 安全注意
- 密碼必須符合強度規則
- 初次安裝完成後,禁用安裝入口或限內網
- 安裝過程需紀錄 audit log