# Use Case Analysis Tools - c-entron.NET

Comprehensive PowerShell scripts for extracting and analyzing use cases from the c-entron.NET codebase.

## Overview

These tools analyze the codebase to discover documented and undocumented use cases by examining:

1. **User Rights** - All rights defined in `UserRightsConst.cs`
2. **REST API Endpoints** - All endpoints in `ICentronRestService.cs`
3. **Wizard Pages** - All wizard implementations with `IWizardPage`
4. **Command Definitions** - Commands in ViewModels (DelegateCommand, ICommand)
5. **State/Status Enums** - State transitions in Entity enums
6. **Validation Rules** - Business logic validation patterns

## Scripts

### 1. Analyze-UseCases.ps1

**Primary analysis tool** that generates a comprehensive overview report.

#### Usage

```powershell
# Basic usage - generates UseCaseAnalysisReport.md
.\Analyze-UseCases.ps1

# Custom output file
.\Analyze-UseCases.ps1 -OutputFile "reports\use-cases-2025-01.md"

# Show progress during analysis
.\Analyze-UseCases.ps1 -ShowProgress
```

#### Output

Generates a Markdown report with:
- Executive summary table
- Rights analysis (active vs obsolete)
- REST endpoints grouped by module
- Wizard pages by wizard name
- Command definitions by ViewModel
- State enums with transition counts
- Validation rule statistics
- Gap analysis (documented vs potential use cases)

**Sample Output Structure:**
```
## Use Case Discovery Report

### Executive Summary
| Category | Count | Notes |
|----------|-------|-------|
| User Rights | 450 | 35 obsolete, 485 total |
| REST Endpoints | 387 | Across 42 modules |
| Wizard Pages | 156 | In 28 wizards |
...

### 1. Rights Analysis
Total Rights: 485
Active: 450
Documented Use Cases: 509
Undocumented Potential: 0 (rights < documented cases)

### 2. REST API Endpoints
Total: 387
- Sales: 89 endpoints
- Administration: 67 endpoints
...
```

---

### 2. Analyze-UseCases-DeepDive.ps1

**Detailed analysis tool** for specific aspects with module grouping and cross-referencing.

#### Usage

```powershell
# Analyze all aspects (generates multiple reports)
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType All

# Analyze specific aspect
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType Rights
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType Endpoints
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType Wizards
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType Commands
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType States

# Custom output directory
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType All -OutputDirectory "reports\deep-dive-2025-01"
```

#### Output Files

Creates separate reports in `UseCaseAnalysis/` directory:

1. **Rights-ByModule.md**
   - Rights grouped by module (Sales, Purchasing, Warehouse, etc.)
   - Includes descriptions from XML comments
   - Module categorization based on right names and descriptions

2. **Endpoints-ToBusinessLogic.md**
   - REST endpoints mapped to corresponding BL classes
   - Grouped by module/URI prefix
   - Shows HTTP method, URI template, method name, response type, and BL class

3. **Wizards-FlowAnalysis.md**
   - Wizard pages, commands, and validation methods
   - Flow visualization potential
   - Step-by-step wizard structure

4. **Commands-PatternAnalysis.md**
   - Commands categorized by pattern (CRUD, Navigation, Search, Export, Validation)
   - Grouped by ViewModel
   - Pattern detection for common command types

5. **States-StateMachineAnalysis.md**
   - State enums with all possible values
   - Mermaid state diagrams showing transitions
   - Sorted by complexity (state count)

---

## Analysis Details

### What Gets Analyzed

#### User Rights
```csharp
// From: src/webservice/Centron.WebServices.Core/EntitiesWrongPlace/Administration/Rights/UserRightsConst.cs
/// <summary>
/// Text of the Right: Artikelverwaltung
/// </summary>
public const int RIGHT_ARTIKELSTAMM = 10220;
```
- Counts all `public const int` declarations
- Identifies obsolete rights via `[Obsolete]` attribute
- Extracts descriptions from XML comments

#### REST API Endpoints
```csharp
// From: src/webservice/Centron.Host/Services/ICentronRestService.cs
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "sales/customers")]
[Authenticate]
Task<Response<CustomerDTO>> GetCustomers(Request<CustomerSearchDTO> request);
```
- Finds all `[OperationContract]` methods
- Extracts HTTP method, URI template, response type
- Groups by module (URI prefix)

#### Wizard Pages
```csharp
// Searches for: IWizardPage implementations
public class CustomerWizardPage1 : UserControl, IWizardPage
{
    // Page implementation
}
```
- Finds all classes implementing `IWizardPage`
- Groups pages by wizard name (from namespace or path)
- Counts pages per wizard

#### Command Definitions
```csharp
// From: ViewModels in src/centron/Centron.WPF.UI/Modules/
public DelegateCommand SaveCommand { get; }
public ICommand DeleteCommand { get; }
private DelegateCommand _searchCommand;
```
- Finds DelegateCommand, RelayCommand, ICommand declarations
- Extracts command names
- Groups by ViewModel
- Categorizes by pattern (CRUD, Navigation, etc.)

#### State Enums
```csharp
// From: src/backend/Centron.Entities/
public enum InvoiceStatus
{
    Draft = 0,
    Pending = 1,
    Approved = 2,
    Paid = 3
}
```
- Finds enums with "Status" or "State" in name
- Extracts all enum values
- Counts possible state transitions
- Creates state flow diagrams

#### Validation Rules
```csharp
// From: src/backend/Centron.BL/
if (string.IsNullOrEmpty(customer.Name))
    return Result.Error("Name required");

if (amount < 0)
    throw new ValidationException("Amount must be positive");
```
- Finds validation patterns (null checks, range checks, exceptions)
- Counts validation rules per BL class
- Identifies high-impact validation files (>10 rules)

---

## Interpreting Results

### Understanding the Gap

**Documented Use Cases:** 509 (from existing documentation)

**Potential Use Cases:** Sum of:
- Active Rights (typically 400-500)
- REST Endpoints (typically 300-400)
- Wizard Pages (typically 100-200)
- Commands (typically 500-1000)
- State Transitions (typically 50-150)
- Validation Rules (typically 1000-2000)

**Total Potential:** Usually 2000-4000

**Gap:** Total Potential - 509 = Undocumented Use Cases

### Why the Gap Exists

1. **Multiple representations of same use case**
   - One feature might have: 1 right + 2 endpoints + 5 commands + 1 wizard + 3 states
   - These represent 12 "findings" but only 1 use case

2. **Internal/Technical use cases**
   - Many commands are technical (Refresh, Close, Cancel)
   - Some validations are low-level checks, not user-facing features

3. **Composite use cases**
   - Complex features combine multiple rights, endpoints, wizards

### Recommended Interpretation

**Rights Count ≈ High-level feature count** (most reliable)
- Each right typically represents a distinct user-facing feature
- Compare this number to documented use cases first

**Endpoints Count = API surface area**
- Good for API documentation
- Not 1:1 with use cases (often multiple endpoints per feature)

**Commands Count = User actions**
- Very detailed, includes many micro-interactions
- Useful for UI/UX documentation

**Wizards Count = Complex workflows**
- Each wizard = major multi-step use case
- High value for documentation

**States Count = Business process complexity**
- Shows lifecycle/workflow complexity
- Good for state machine documentation

---

## Workflow Recommendations

### Step 1: Initial Overview
```powershell
.\Analyze-UseCases.ps1 -ShowProgress
# Review: UseCaseAnalysisReport.md
```

**Action:** Compare active rights (450) with documented use cases (509)
- If rights > documented: Missing documentation
- If documented > rights: Some features may not have rights (unusual)

### Step 2: Module Deep Dive
```powershell
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType Rights
# Review: UseCaseAnalysis/Rights-ByModule.md
```

**Action:** Identify modules with many rights but sparse documentation
- Focus on top 3-5 modules with highest right counts
- Cross-reference with existing documentation

### Step 3: API Documentation
```powershell
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType Endpoints
# Review: UseCaseAnalysis/Endpoints-ToBusinessLogic.md
```

**Action:** Verify REST API coverage
- Document undocumented endpoints
- Create API reference documentation
- Map endpoints to user features

### Step 4: Wizard Documentation
```powershell
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType Wizards
# Review: UseCaseAnalysis/Wizards-FlowAnalysis.md
```

**Action:** Document complex workflows
- Create step-by-step wizard guides
- Add screenshots for each wizard page
- Document validation rules per page

### Step 5: State Machine Documentation
```powershell
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType States
# Review: UseCaseAnalysis/States-StateMachineAnalysis.md
```

**Action:** Create state transition documentation
- Use generated Mermaid diagrams
- Document business rules for each transition
- Identify who can trigger each transition (rights)

### Step 6: Full Deep Dive
```powershell
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType All
# Review all reports in: UseCaseAnalysis/
```

**Action:** Comprehensive documentation update
- Cross-reference all findings
- Identify patterns and commonalities
- Create master documentation index

---

## Example Output Snippets

### Executive Summary (Analyze-UseCases.ps1)
```
========================================
USE CASE ANALYSIS COMPLETE
========================================
Active User Rights:      450
REST Endpoints:          387
Wizard Pages:            156
Commands:                789
State Transitions:       87
Validation Rules:        1543
----------------------------------------
TOTAL POTENTIAL:         3412
Documented Use Cases:    509
UNDOCUMENTED GAP:        2903
========================================
```

### Rights by Module (Analyze-UseCases-DeepDive.ps1)
```markdown
## Sales (89 rights)

| Constant Name | Value | Description |
|---------------|-------|-------------|
| `RIGHT_KUNDENSTAMM` | 10310 | Kunden |
| `RIGHT_ANGEBOT` | 40000 | Angebot |
| `RIGHT_RECHNUNG` | 40100 | Rechnung |
...
```

### Endpoints to BL Mapping (Analyze-UseCases-DeepDive.ps1)
```markdown
## sales (89 endpoints)

| Method | URI | Method Name | Response Type | Business Logic |
|--------|-----|-------------|---------------|----------------|
| POST | `sales/customers` | `GetCustomers` | `CustomerDTO` | `CustomerWebServiceBL` |
| POST | `sales/invoices` | `GetInvoices` | `InvoiceDTO` | `InvoiceWebServiceBL` |
...
```

---

## Tips & Tricks

### Filtering Output

**Focus on active rights only:**
```powershell
.\Analyze-UseCases.ps1
# Open report, ignore obsolete rights section
```

**Analyze specific module:**
```powershell
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType Rights
# Open Rights-ByModule.md, find your module
```

### Batch Processing

**Generate all reports at once:**
```powershell
# Create timestamped directory
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
$reportDir = "use-case-analysis-$timestamp"

# Run both scripts
.\Analyze-UseCases.ps1 -OutputFile "$reportDir\overview.md"
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType All -OutputDirectory $reportDir

# Results in: use-case-analysis-20250120-143022/
```

### Comparing Over Time

**Track changes between versions:**
```powershell
# Generate baseline
.\Analyze-UseCases.ps1 -OutputFile "baseline-v2.1.0.md"

# After development
.\Analyze-UseCases.ps1 -OutputFile "current-v2.2.0.md"

# Compare
code --diff baseline-v2.1.0.md current-v2.2.0.md
```

### Integration with Documentation

**Use as input for documentation:**
```powershell
# Generate reports
.\Analyze-UseCases-DeepDive.ps1 -AnalysisType All

# Copy relevant sections into documentation
# Example: Copy Rights-ByModule.md sections into user manual
# Example: Copy States diagrams into design documentation
```

---

## Troubleshooting

### Script Not Running

**Error: "Execution Policy"**
```powershell
# Check policy
Get-ExecutionPolicy

# Allow scripts (run as Admin)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```

### No Results Found

**Check paths:**
```powershell
# Verify you're in project root
cd C:\DEV\C-entron.net\c-entron.NET

# Check required files exist
Test-Path "src\webservice\Centron.WebServices.Core\EntitiesWrongPlace\Administration\Rights\UserRightsConst.cs"
Test-Path "src\webservice\Centron.Host\Services\ICentronRestService.cs"
```

### Incomplete Results

**Large codebase timeout:**
- Deep dive analysis can take 5-10 minutes on large codebases
- Run individual analyses instead of "All"
- Use `-AnalysisType` parameter to focus

### Encoding Issues

**Special characters in output:**
- Reports use UTF-8 encoding
- Open in VS Code or editor with UTF-8 support
- Avoid Notepad (use Notepad++ or VS Code)

---

## Advanced Usage

### Custom Analysis

**Modify patterns in scripts:**
```powershell
# Edit Analyze-UseCases-DeepDive.ps1
# Find: $modulePatterns = @{ ... }
# Add your custom module detection patterns
```

### Export to Other Formats

**Convert Markdown to HTML/PDF:**
```powershell
# Using Pandoc (if installed)
pandoc UseCaseAnalysisReport.md -o UseCaseAnalysisReport.html
pandoc UseCaseAnalysisReport.md -o UseCaseAnalysisReport.pdf
```

### Integration with CI/CD

**Azure DevOps Pipeline:**
```yaml
- task: PowerShell@2
  displayName: 'Analyze Use Cases'
  inputs:
    targetType: 'filePath'
    filePath: '$(Build.SourcesDirectory)/Analyze-UseCases.ps1'
    arguments: '-OutputFile "$(Build.ArtifactStagingDirectory)/use-cases.md"'

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: 'use-case-reports'
```

---

## Files Generated

### Analyze-UseCases.ps1
- `UseCaseAnalysisReport.md` (or custom path via `-OutputFile`)

### Analyze-UseCases-DeepDive.ps1
- `UseCaseAnalysis/Rights-ByModule.md`
- `UseCaseAnalysis/Endpoints-ToBusinessLogic.md`
- `UseCaseAnalysis/Wizards-FlowAnalysis.md`
- `UseCaseAnalysis/Commands-PatternAnalysis.md`
- `UseCaseAnalysis/States-StateMachineAnalysis.md`

---

## Version History

### v1.0.0 (2025-01-20)
- Initial release
- Support for Rights, Endpoints, Wizards, Commands, States, Validations
- Two-tier analysis (overview + deep dive)
- Markdown output with tables and diagrams

---

## Support

For issues or questions:
1. Check existing documentation in `.claude/` directory
2. Review CLAUDE.md for project conventions
3. Consult development team

---

**Note:** These scripts are read-only analysis tools. They do not modify any source code or project files.
