# 下一步開發指南

本文件說明 ISO 27001 資產盤點系統後續開發建議。

## 🎯 當前狀態

✅ **階段一已完成** (2025-10-31)
- 資產清單管理系統 100%
- 使用者認證系統 100%
- 前端介面 100%
- 測試資料 100%

## 📋 待開發功能

### 優先度：高 ⭐⭐⭐

#### 1. 權限控制完善 (預估 3-5天)
**目標**: 實現完整的角色基礎存取控制 (RBAC)

**任務清單**:
- [ ] 後端 API 權限檢查
  - [ ] 建立 permission classes
  - [ ] 資產 CRUD 權限檢查
  - [ ] 只能編輯自己的資產
- [ ] 前端權限顯示/隱藏
  - [ ] 根據角色顯示/隱藏按鈕
  - [ ] 根據角色顯示/隱藏選單
- [ ] 權限測試
  - [ ] 單元測試
  - [ ] 整合測試

**實作範例**:
```python
# backend/assets/permissions.py
from rest_framework import permissions

class IsOwnerOrReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return obj.owner == request.user or request.user.role == 'super_admin'
```

#### 2. 批次操作功能 (預估 2-3天)
**目標**: 支援多選和批次處理資產

**任務清單**:
- [ ] 前端多選功能
  - [ ] 表格多選 checkbox
  - [ ] 全選/取消全選
  - [ ] 選取數量顯示
- [ ] 批次操作 API
  - [ ] 批次刪除 API
  - [ ] 批次更新狀態 API
  - [ ] 批次匯出 API
- [ ] 前端操作介面
  - [ ] 批次操作按鈕
  - [ ] 確認對話框
  - [ ] 進度顯示

**實作範例**:
```python
# backend/assets/views.py
@action(detail=False, methods=['post'])
def bulk_delete(self, request):
    asset_ids = request.data.get('ids', [])
    Asset.objects.filter(id__in=asset_ids).update(deleted_at=timezone.now())
    return Response({'message': f'已刪除 {len(asset_ids)} 項資產'})
```

#### 3. 資產匯入功能 (預估 3-4天)
**目標**: 支援 Excel/CSV 檔案批次匯入資產

**任務清單**:
- [ ] 後端匯入 API
  - [ ] Excel 檔案解析 (openpyxl)
  - [ ] CSV 檔案解析
  - [ ] 資料驗證
  - [ ] 錯誤處理
- [ ] 前端上傳介面
  - [ ] 檔案上傳元件
  - [ ] 資料預覽
  - [ ] 驗證結果顯示
  - [ ] 匯入確認
- [ ] 匯入範本
  - [ ] 提供 Excel 範本下載
  - [ ] 範本說明文件

**實作範例**:
```python
# backend/assets/views.py
@action(detail=False, methods=['post'])
def import_excel(self, request):
    file = request.FILES['file']
    df = pd.read_excel(file)
    
    results = {'success': 0, 'failed': 0, 'errors': []}
    
    for index, row in df.iterrows():
        try:
            Asset.objects.create(
                asset_number=row['asset_number'],
                name=row['name'],
                # ... 其他欄位
            )
            results['success'] += 1
        except Exception as e:
            results['failed'] += 1
            results['errors'].append(f"Row {index}: {str(e)}")
    
    return Response(results)
```

---

### 優先度：中 ⭐⭐

#### 4. 資產關係視覺化 (預估 3-5天)
**目標**: 以圖形化方式展示資產之間的關係

**技術選擇**:
- React Flow (推薦)
- D3.js
- vis.js

**任務清單**:
- [ ] 選擇圖表庫
- [ ] 建立關係圖元件
- [ ] 資料轉換邏輯
- [ ] 互動功能 (縮放、拖曳)
- [ ] 影響分析功能

#### 5. 風險評估模組 (預估 1-2週)
**目標**: 實現完整的資產風險評估流程

**任務清單**:
- [ ] 建立風險模型
  - [ ] RiskAssessment 模型
  - [ ] Threat 威脅模型
  - [ ] Vulnerability 脆弱性模型
- [ ] 風險評估 API
- [ ] 風險評估介面
  - [ ] 風險識別表單
  - [ ] 風險矩陣顯示
  - [ ] 風險處理計畫
- [ ] 風險報告
  - [ ] 風險清單報告
  - [ ] 風險趨勢圖表

#### 6. 文件管理模組 (預估 1-2週)
**目標**: 管理 ISO 27001 相關政策文件

**任務清單**:
- [ ] 建立文件模型
  - [ ] Document 模型
  - [ ] DocumentVersion 版本模型
  - [ ] DocumentApproval 審核模型
- [ ] 文件 CRUD API
- [ ] 文件管理介面
  - [ ] 文件清單
  - [ ] 文件編輯器 (Markdown 或富文本)
  - [ ] 版本比較
  - [ ] 審核流程
- [ ] 文件範本
  - [ ] 資訊安全政策範本
  - [ ] 風險評估範本
  - [ ] 其他政策範本

---

### 優先度：低 ⭐

#### 7. 控制措施管理 (預估 2週)
**目標**: 管理 ISO 27001 Annex A 93項控制措施

**任務清單**:
- [ ] 建立控制措施模型
- [ ] 匯入 Annex A 93項措施
- [ ] 實作狀態追蹤
- [ ] 適用性聲明 (SOA)
- [ ] 控制措施與資產關聯

#### 8. 稽核管理模組 (預估 2-3週)
**目標**: 支援內部稽核流程

**任務清單**:
- [ ] 稽核計畫排程
- [ ] 稽核執行記錄
- [ ] 不符合項追蹤 (NCR)
- [ ] 矯正措施 (CAPA)
- [ ] 稽核報告生成

#### 9. 事件管理模組 (預估 2週)
**目標**: 管理資安事件

**任務清單**:
- [ ] 事件通報表單
- [ ] 事件分類與分級
- [ ] 事件處理流程
- [ ] 事件統計報表

#### 10. 報表產生器 (預估 2週)
**目標**: 自動產生各類報表

**任務清單**:
- [ ] 報表範本設計
- [ ] PDF 產生功能
- [ ] 報表排程功能
- [ ] 郵件寄送功能

---

## 🛠️ 技術改進

### 程式碼品質
- [ ] 新增單元測試 (目標: 60% 覆蓋率)
- [ ] 新增整合測試
- [ ] 設定 ESLint 規則
- [ ] 設定 Python Black/Flake8
- [ ] 新增 pre-commit hooks

### 效能優化
- [ ] 資料庫查詢優化 (N+1 問題)
- [ ] 新增 Redis 快取
- [ ] 前端程式碼分割
- [ ] 圖片延遲載入
- [ ] API 回應壓縮

### 安全強化
- [ ] HTTPS 設定
- [ ] CSRF 保護強化
- [ ] XSS 防護
- [ ] SQL Injection 防護
- [ ] 定期安全掃描

### DevOps
- [ ] CI/CD Pipeline (GitHub Actions)
- [ ] 自動化測試
- [ ] 自動化部署
- [ ] 錯誤監控 (Sentry)
- [ ] 效能監控

---

## 📚 學習資源

### ISO 27001
- [ISO 27001:2022 標準文件](https://www.iso.org/standard/27001)
- [Annex A 控制措施清單](https://www.isms.online/iso-27001/annex-a/)

### Django
- [Django REST Framework 教學](https://www.django-rest-framework.org/tutorial/quickstart/)
- [Django Security Best Practices](https://docs.djangoproject.com/en/4.2/topics/security/)

### React
- [React 官方教學](https://react.dev/learn)
- [Ant Design 元件文件](https://ant.design/components/overview/)
- [TypeScript 手冊](https://www.typescriptlang.org/docs/handbook/)

---

## 🤝 貢獻指南

### 開發流程
1. 從 main 分支建立 feature 分支
2. 開發新功能
3. 撰寫測試
4. 提交 Pull Request
5. Code Review
6. 合併至 main

### Commit 訊息格式
```
<type>: <subject>

<body>

<footer>
```

類型:
- feat: 新功能
- fix: 修復 bug
- docs: 文件更新
- style: 程式碼格式
- refactor: 重構
- test: 測試
- chore: 雜項

範例:
```
feat: 新增資產批次刪除功能

- 新增批次刪除 API
- 新增前端多選介面
- 新增確認對話框

Closes #123
```

---

## 📞 需要協助？

如有任何問題或建議，請:
1. 查看現有文件
2. 搜尋相關 Issue
3. 建立新的 Issue
4. 聯絡專案維護者

---

**文件更新**: 2025-10-31  
**版本**: 1.0
