Files
usher-manage-stack/docs/FEATURE_MATRIX.md
2025-11-20 23:21:05 +08:00

24 KiB

Feature Matrix

Taiwan NPO Membership Management System

Last Updated: 2025-11-20

This document provides a comprehensive feature-by-feature breakdown of the system, implementation status, and related files.


Feature Status Legend

  • Complete - Fully implemented and tested
  • 🟡 Partial - Partially implemented
  • Not Started - Planned but not yet implemented
  • 🔄 In Progress - Currently being developed

1. Member Management

1.1 Public Member Registration

Status: Complete

Description: Allow public users to self-register as members through a public form.

Features:

  • Full registration form with personal details
  • Address information
  • Emergency contact
  • Terms acceptance
  • Auto-login after registration
  • Welcome email

Related Files:

  • Controller: app/Http/Controllers/PublicMemberRegistrationController.php
  • View: resources/views/register/member.blade.php
  • Model: app/Models/Member.php, app/Models/User.php
  • Route: GET/POST /register/member
  • Email: app/Mail/MemberRegistrationWelcomeMail.php

Validation Rules:

  • full_name: required, string, max 255
  • email: required, unique in users AND members
  • password: required, confirmed, strong
  • phone, national_id, address: optional
  • terms_accepted: required, accepted

1.2 Admin Member Creation

Status: Complete

Description: Admins can manually create member records.

Features:

  • Create member with or without user account
  • Import members via CSV
  • Export members to CSV/Excel
  • Bulk member operations

Related Files:

  • Controller: app/Http/Controllers/AdminMemberController.php
  • Views: resources/views/admin/members/{create,edit,index,show}.blade.php
  • Route: POST /admin/members

1.3 Member Profile Management

Status: Complete

Description: View and edit member information.

Features:

  • View member details
  • Edit personal information
  • Update membership type
  • View payment history
  • View membership status

Related Files:

  • Controller: app/Http/Controllers/AdminMemberController.php
  • Views: resources/views/admin/members/{show,edit}.blade.php
  • Route: GET/PATCH /admin/members/{id}

1.4 Member Search & Filtering

Status: Complete

Description: Search and filter members by various criteria.

Features:

  • Search by name, email, phone
  • Search by national ID (via hash)
  • Filter by membership status
  • Filter by payment status
  • Filter by date range
  • Paginated results

Related Files:

  • Controller: app/Http/Controllers/AdminMemberController.php (index method)
  • View: resources/views/admin/members/index.blade.php

1.5 National ID Encryption

Status: Complete

Description: Securely store and search national IDs.

Features:

  • AES-256 encryption for storage
  • SHA256 hash for searching
  • Automatic encryption/decryption via accessors/mutators
  • Never expose plain text in logs or responses

Related Files:

  • Model: app/Models/Member.php (getNationalIdAttribute, setNationalIdAttribute)
  • Migration: database/migrations/*_create_members_table.php

2. Payment Verification System

2.1 Member Payment Submission

Status: Complete

Description: Members can submit payment proof for verification.

Features:

  • Upload receipt (JPG, PNG, PDF, max 10MB)
  • Specify payment method (bank transfer, convenience store, cash, credit card)
  • Specify amount, date, reference
  • Add optional notes
  • Receipt stored in private storage
  • Submission confirmation email

Related Files:

  • Controller: app/Http/Controllers/MemberPaymentController.php
  • View: resources/views/member/submit-payment.blade.php
  • Model: app/Models/MembershipPayment.php
  • Route: GET/POST /member/submit-payment
  • Email: app/Mail/PaymentSubmittedMail.php

2.2 Three-Tier Payment Verification

Status: Complete

Description: 3-tier approval workflow for payment verification.

Workflow:

  1. Tier 1 (Cashier): Verify receipt legitimacy
  2. Tier 2 (Accountant): Verify financial details
  3. Tier 3 (Chair): Final approval

Features:

  • Sequential approval (must go Tier 1 → 2 → 3)
  • Permission-based access control
  • Can reject at any tier with reason
  • Email notifications at each stage
  • Automatic membership activation on Tier 3 approval
  • Audit logging for each action

Related Files:

  • Controller: app/Http/Controllers/PaymentVerificationController.php
  • Views: resources/views/admin/payment-verifications/{index,show}.blade.php
  • Model: app/Models/MembershipPayment.php
  • Routes:
    • POST /admin/payment-verifications/{payment}/approve-cashier
    • POST /admin/payment-verifications/{payment}/approve-accountant
    • POST /admin/payment-verifications/{payment}/approve-chair
    • POST /admin/payment-verifications/{payment}/reject
  • Emails:
    • app/Mail/PaymentApprovedByCashierMail.php
    • app/Mail/PaymentApprovedByAccountantMail.php
    • app/Mail/PaymentFullyApprovedMail.php
    • app/Mail/PaymentRejectedMail.php

2.3 Payment Verification Dashboard

Status: Complete

Description: Centralized dashboard for payment verification queue.

Features:

  • Tabbed interface (All, Cashier Queue, Accountant Queue, Chair Queue, Approved, Rejected)
  • Queue counts with badges
  • Search by member name, email, reference
  • Permission-based tab visibility
  • Pagination
  • Status badges with color coding

Related Files:

  • Controller: app/Http/Controllers/PaymentVerificationController.php (index method)
  • View: resources/views/admin/payment-verifications/index.blade.php
  • Route: GET /admin/payment-verifications

2.4 Automatic Membership Activation

Status: Complete

Description: Automatically activate membership when payment fully approved.

Features:

  • Triggered on Tier 3 (Chair) approval
  • Sets member.membership_status = 'active'
  • Sets membership_started_at = today
  • Sets membership_expires_at = today + 1 year (or lifetime)
  • Sends activation email to member
  • Notifies membership managers
  • Audits activation event

Related Files:

  • Controller: app/Http/Controllers/PaymentVerificationController.php (approveByChair method)
  • Email: app/Mail/MembershipActivatedMail.php

2.5 Payment Rejection Handling

Status: Complete

Description: Reject payments with reason at any approval tier.

Features:

  • Rejection reason required
  • Rejection email with reason sent to member
  • Member can resubmit
  • Audit logging

Related Files:

  • Controller: app/Http/Controllers/PaymentVerificationController.php (reject method)
  • Email: app/Mail/PaymentRejectedMail.php

2.6 Receipt Download

Status: Complete

Description: Download payment receipt files securely.

Features:

  • Authentication required
  • Permission checking
  • Serves from private storage
  • Original filename preserved

Related Files:

  • Controller: app/Http/Controllers/PaymentVerificationController.php (downloadReceipt method)
  • Route: GET /admin/payment-verifications/{payment}/receipt

3. Issue Tracking System

3.1 Issue Creation & Management

Status: Complete

Description: Create and manage work items, tasks, and support requests.

Features:

  • Auto-generated issue number (ISS-YYYY-NNN)
  • Issue types: work_item, project_task, maintenance, member_request
  • Priority levels: low, medium, high, urgent
  • Status workflow: new → assigned → in_progress → review → closed
  • Due date tracking
  • Estimated vs actual hours
  • Sub-task support (parent_issue_id)

Related Files:

  • Controller: app/Http/Controllers/IssueController.php
  • Model: app/Models/Issue.php
  • Views: resources/views/admin/issues/{index,create,edit,show}.blade.php
  • Routes: Standard CRUD routes under /admin/issues

3.2 Issue Assignment & Workflow

Status: Complete

Description: Assign issues to users and manage status transitions.

Features:

  • Assign to user
  • Update status with validation (can't skip statuses)
  • Reviewer assignment
  • Reopen closed issues
  • Assignment notification email

Related Files:

  • Controller: app/Http/Controllers/IssueController.php (assign, updateStatus methods)
  • Email: app/Mail/IssueAssignedMail.php
  • Route: POST /admin/issues/{issue}/assign, PATCH /admin/issues/{issue}/status

3.3 Issue Comments

Status: Complete

Description: Add comments to issues for collaboration.

Features:

  • Add comments
  • Internal vs external comments (is_internal flag hides from members)
  • Comment notifications to watchers
  • Timestamps

Related Files:

  • Controller: app/Http/Controllers/IssueController.php (addComment method)
  • Model: app/Models/IssueComment.php
  • Email: app/Mail/IssueCommentedMail.php
  • Route: POST /admin/issues/{issue}/comments

3.4 Issue Attachments

Status: Complete

Description: Upload and manage file attachments on issues.

Features:

  • Upload files to issues
  • Download attachments
  • Delete attachments
  • File metadata tracking (size, mime type)

Related Files:

  • Controller: app/Http/Controllers/IssueController.php (uploadAttachment, downloadAttachment, deleteAttachment methods)
  • Model: app/Models/IssueAttachment.php
  • Routes:
    • POST /admin/issues/{issue}/attachments
    • GET /admin/issues/attachments/{attachment}/download
    • DELETE /admin/issues/attachments/{attachment}

3.5 Time Logging

Status: Complete

Description: Log time spent on issues.

Features:

  • Log hours worked
  • Specify work date
  • Optional description
  • Automatic summation of total hours
  • Compare to estimated hours

Related Files:

  • Controller: app/Http/Controllers/IssueController.php (logTime method)
  • Model: app/Models/IssueTimeLog.php, app/Models/Issue.php (getTotalTimeLoggedAttribute)
  • Route: POST /admin/issues/{issue}/time-logs

3.6 Issue Watchers

Status: Complete

Description: Users can watch issues for notifications.

Features:

  • Add watchers to issue
  • Remove watchers
  • Watchers receive email on status changes and comments

Related Files:

  • Controller: app/Http/Controllers/IssueController.php (addWatcher, removeWatcher methods)
  • Model: app/Models/Issue.php (watchers relationship)
  • Routes:
    • POST /admin/issues/{issue}/watchers
    • DELETE /admin/issues/{issue}/watchers

3.7 Issue Labels

Status: Complete

Description: Categorize issues with color-coded labels.

Features:

  • Create/edit/delete labels
  • Assign multiple labels to issues
  • Filter issues by label
  • Color customization

Related Files:

  • Controller: app/Http/Controllers/IssueLabelController.php
  • Model: app/Models/IssueLabel.php
  • Views: resources/views/admin/issue-labels/{index,create,edit}.blade.php
  • Routes: Standard CRUD routes under /admin/issue-labels
  • Seeder: database/seeders/IssueLabelSeeder.php

3.8 Issue Relationships

Status: Complete

Description: Link related issues.

Features:

  • Relationship types: blocks, is_blocked_by, relates_to, duplicates, is_duplicated_by
  • Bidirectional linking
  • View related issues

Related Files:

  • Model: app/Models/IssueRelationship.php, app/Models/Issue.php (relationships)
  • Migration: database/migrations/*_create_issues_table.php

3.9 Issue Reports & Analytics

Status: Complete

Description: Generate reports and analytics on issue data.

Features:

  • Status distribution
  • Priority distribution
  • Workload analysis
  • Overdue issues report

Related Files:

  • Controller: app/Http/Controllers/IssueReportsController.php
  • Route: GET /admin/issue-reports

3.10 Overdue Detection

Status: Complete

Description: Automatically detect and flag overdue issues.

Features:

  • Overdue calculation (due_date < today AND status != closed)
  • Days until due calculation
  • Overdue scope for filtering
  • Email reminders (scheduled)

Related Files:

  • Model: app/Models/Issue.php (getIsOverdueAttribute, getDaysUntilDueAttribute, overdue scope)
  • Email: app/Mail/IssueOverdueMail.php, app/Mail/IssueDueSoonMail.php

4. Budget Management

4.1 Budget Creation & Management

Status: Complete

Description: Create and manage annual/quarterly/monthly budgets.

Features:

  • Fiscal year selection
  • Period type (annual, quarterly, monthly)
  • Period date range
  • Budget workflow: draft → submitted → approved → active → closed
  • Notes support

Related Files:

  • Controller: app/Http/Controllers/BudgetController.php
  • Model: app/Models/Budget.php
  • Views: resources/views/admin/budgets/{index,create,edit,show}.blade.php
  • Routes: Standard CRUD routes under /admin/budgets

4.2 Budget Items

Status: Complete

Description: Line items within budgets linked to chart of accounts.

Features:

  • Link to chart of account
  • Set budgeted amount
  • Track actual amount (auto-updated from transactions)
  • Calculate variance (actual - budgeted)
  • Calculate utilization percentage
  • Over-budget detection

Related Files:

  • Model: app/Models/BudgetItem.php
  • Migration: database/migrations/*_create_budgets_table.php

4.3 Budget Workflow

Status: Complete

Description: Manage budget lifecycle states.

Features:

  • Submit for approval (draft → submitted)
  • Approve budget (submitted → approved)
  • Activate budget (approved → active)
  • Close budget (active → closed)
  • Permission-based actions

Related Files:

  • Controller: app/Http/Controllers/BudgetController.php (submit, approve, activate, close methods)
  • Routes:
    • POST /admin/budgets/{budget}/submit
    • POST /admin/budgets/{budget}/approve
    • POST /admin/budgets/{budget}/activate
    • POST /admin/budgets/{budget}/close

4.4 Budget Variance Analysis

Status: Complete

Description: Calculate and display budget vs actual variances.

Features:

  • Total budgeted income/expense
  • Total actual income/expense
  • Variance calculation
  • Variance percentage
  • Remaining budget
  • Over-budget alerts

Related Files:

  • Model: app/Models/BudgetItem.php (variance methods), app/Models/Budget.php (total methods)

5. Financial Management

5.1 Chart of Accounts

Status: Complete

Description: Hierarchical chart of accounts for financial tracking.

Features:

  • Account types: income, expense, asset, liability, net_asset
  • Hierarchical parent-child structure
  • Account code system
  • Chinese and English names
  • Category grouping
  • Active/inactive status
  • Display order

Related Files:

  • Model: app/Models/ChartOfAccount.php
  • Migration: database/migrations/*_create_chart_of_accounts_table.php
  • Seeder: database/seeders/ChartOfAccountSeeder.php

5.2 Transaction Management

Status: Complete

Description: Record and track financial transactions.

Features:

  • Transaction types: income, expense
  • Link to chart of account (required)
  • Link to budget item (optional)
  • Link to finance document or membership payment (optional)
  • Transaction date
  • Amount
  • Description and reference number
  • Notes
  • Search and filter

Related Files:

  • Controller: app/Http/Controllers/TransactionController.php
  • Model: app/Models/Transaction.php
  • Views: resources/views/admin/transactions/{index,create,edit,show}.blade.php
  • Routes: Standard CRUD routes under /admin/transactions

5.3 Finance Document Approval

Status: Complete

Description: 3-tier approval workflow for finance documents.

Features:

  • Submit documents with attachments
  • 3-tier approval (cashier → accountant → chair)
  • Rejection with reason
  • Email notifications
  • File attachment support
  • Same workflow as payment verification

Related Files:

  • Controller: app/Http/Controllers/FinanceDocumentController.php
  • Model: app/Models/FinanceDocument.php
  • Views: resources/views/admin/finance-documents/{index,create,show}.blade.php
  • Routes:
    • POST /admin/finance-documents
    • POST /admin/finance-documents/{document}/approve
    • POST /admin/finance-documents/{document}/reject
  • Emails: app/Mail/FinanceDocument*.php (5 mailables)

5.4 Financial Reports

Status: Complete

Description: Generate and store financial reports.

Features:

  • Report generation
  • Report data stored as JSON
  • Historical snapshots
  • Multiple report types

Related Files:

  • Model: app/Models/FinancialReport.php
  • Migration: database/migrations/*_create_budgets_table.php

6. Security & Authorization

6.1 Role-Based Access Control

Status: Complete

Description: Spatie Permission-based authorization.

Features:

  • Multiple roles: admin, staff, cashier, accountant, chair
  • Granular permissions
  • Role assignment via UI
  • Permission inheritance

Related Files:

  • Seeders: database/seeders/RoleSeeder.php, database/seeders/PaymentVerificationRolesSeeder.php
  • Controller: app/Http/Controllers/AdminRoleController.php
  • Views: resources/views/admin/roles/{index,create,edit,show}.blade.php
  • Package: Spatie Laravel Permission

6.2 Admin Middleware

Status: Complete

Description: Protect admin routes.

Features:

  • Check is_admin flag OR admin role
  • Return 403 if unauthorized
  • Applied to /admin route group

Related Files:

  • Middleware: app/Http/Middleware/EnsureUserIsAdmin.php
  • Route: Applied to /admin group in routes/web.php

6.3 Paid Membership Middleware

Status: Complete

Description: Verify active paid membership for member-only resources.

Features:

  • Check authentication
  • Check member record exists
  • Check hasPaidMembership() (active status + future expiry)
  • Redirect with error if not eligible

Related Files:

  • Middleware: app/Http/Middleware/CheckPaidMembership.php

6.4 Audit Logging

Status: Complete

Description: Complete audit trail for all significant actions.

Features:

  • Log all CRUD operations
  • Log workflow transitions
  • Store user, action, object type/id, metadata
  • Queryable and exportable
  • CSV export

Related Files:

  • Model: app/Models/AuditLog.php
  • Support: app/Support/AuditLogger.php
  • Controller: app/Http/Controllers/AdminAuditLogController.php
  • Views: resources/views/admin/audit-logs/index.blade.php
  • Routes: GET /admin/audit-logs, GET /admin/audit-logs/export

7. Email Notifications

7.1 Membership Emails

Status: Complete

Email Count: 8 mailables

Email Trigger
MemberRegistrationWelcomeMail Self-registration
PaymentSubmittedMail Payment submission (2 variants: member + cashier)
PaymentApprovedByCashierMail Tier 1 approval
PaymentApprovedByAccountantMail Tier 2 approval
PaymentFullyApprovedMail Tier 3 approval
PaymentRejectedMail Payment rejection
MembershipActivatedMail Membership activation
MembershipExpiryReminderMail Expiry reminder

Related Files:

  • Mailables: app/Mail/Member*.php, app/Mail/Payment*.php, app/Mail/Membership*.php
  • Templates: resources/views/emails/members/*, resources/views/emails/payments/*

7.2 Finance Emails

Status: Complete

Email Count: 5 mailables

Email Trigger
FinanceDocumentSubmitted Document submitted
FinanceDocumentApprovedByCashier Tier 1 approval
FinanceDocumentApprovedByAccountant Tier 2 approval
FinanceDocumentFullyApproved Tier 3 approval
FinanceDocumentRejected Document rejection

Related Files:

  • Mailables: app/Mail/FinanceDocument*.php
  • Templates: resources/views/emails/finance-documents/*

7.3 Issue Emails

Status: Complete

Email Count: 6 mailables

Email Trigger
IssueAssignedMail Issue assignment
IssueStatusChangedMail Status change
IssueCommentedMail New comment
IssueDueSoonMail Due date approaching
IssueOverdueMail Past due date
IssueClosedMail Issue closed

Related Files:

  • Mailables: app/Mail/Issue*.php
  • Templates: resources/views/emails/issues/*

7.4 Queue Integration

Status: Complete

Features:

  • All emails implement ShouldQueue
  • Async delivery via queue workers
  • Failed jobs table for retry
  • Database/Redis queue driver support

Configuration:

  • Queue connection in .env (QUEUE_CONNECTION)

8. User Interface

8.1 Member Dashboard

Status: Complete

Description: Member-facing dashboard for viewing membership status and submitting payments.

Features:

  • Membership status display with badges
  • Membership type and expiry date
  • Payment history with verification status
  • Submit payment button (if eligible)
  • Pending payment alert
  • Dark mode support

Related Files:

  • Controller: app/Http/Controllers/MemberDashboardController.php
  • View: resources/views/member/dashboard.blade.php
  • Route: GET /my-membership

8.2 Admin Dashboard

Status: Complete

Description: Admin dashboard with overview statistics.

Features:

  • Key metrics
  • Recent activity
  • Quick links

Related Files:

  • Controller: app/Http/Controllers/AdminDashboardController.php
  • Route: GET /admin/dashboard

8.3 Responsive Design

Status: Complete

Description: Mobile-friendly responsive design.

Features:

  • Tailwind CSS utility classes
  • Responsive grid layouts
  • Mobile-friendly tables
  • Dark mode support

Related Files:

  • All Blade templates in resources/views/
  • Tailwind config: tailwind.config.js

8.4 Dark Mode

Status: Complete

Description: Dark mode support across all views.

Features:

  • Dark mode toggle
  • Consistent dark color scheme
  • All views support dark mode

Related Files:

  • All Blade templates use dark:* utility classes

9. Data Import/Export

9.1 Member Import (CSV)

Status: Complete

Description: Bulk import members from CSV.

Related Files:

  • Controller: app/Http/Controllers/AdminMemberController.php (import, importForm methods)
  • Routes: GET/POST /admin/members/import

9.2 Member Export (CSV)

Status: Complete

Description: Export member list to CSV/Excel.

Related Files:

  • Controller: app/Http/Controllers/AdminMemberController.php (export method)
  • Route: GET /admin/members/export

9.3 Audit Log Export

Status: Complete

Description: Export audit logs to CSV.

Related Files:

  • Controller: app/Http/Controllers/AdminAuditLogController.php (export method)
  • Route: GET /admin/audit-logs/export

10. Custom Fields & Extensions

10.1 Custom Fields (Polymorphic)

Status: Complete

Description: Attach custom fields to any model.

Features:

  • Field types: text, select, checkbox, date
  • JSON storage for values
  • Required/optional fields
  • Currently used for Issues

Related Files:

  • Model: app/Models/CustomField.php, app/Models/CustomFieldValue.php
  • Migration: database/migrations/*_create_issues_table.php

Summary Statistics

Implementation Status

Status Count Percentage
Complete 52 100%
🟡 Partial 0 0%
🔄 In Progress 0 0%
Not Started 0 0%

Feature Categories

Category Features Status
Member Management 5 Complete
Payment Verification 6 Complete
Issue Tracking 10 Complete
Budget Management 4 Complete
Financial Management 4 Complete
Security & Authorization 4 Complete
Email Notifications 4 Complete
User Interface 4 Complete
Data Import/Export 3 Complete
Custom Fields 1 Complete

Code Metrics

Metric Count
Controllers 14
Models 20+
Mailables 19
Migrations 25+
Seeders 4
Middleware 2
Views (Blade) 50+
Routes 100+

End of Feature Matrix