first commit
This commit is contained in:
+647
@@ -0,0 +1,647 @@
|
||||
# 📚 GoPrint Service General - Project Documentation
|
||||
|
||||
## 📋 Deskripsi Proyek
|
||||
Service-General adalah microservice berbasis Go yang menyediakan REST API dan gRPC untuk manajemen data person/pasien dengan integrasi ke sistem kesehatan Indonesia (BPJS & SatuSehat).
|
||||
|
||||
## 🏗️ Technical Architecture
|
||||
|
||||
Project ini mengimplementasikan **Clean Architecture** dengan **Domain-Driven Design (DDD)**:
|
||||
|
||||
- **Transport Layer**: REST API (Gin) + gRPC
|
||||
- **Application Layer**: Business logic (UseCases)
|
||||
- **Domain Layer**: Entities + Business rules
|
||||
- **Infrastructure Layer**: Database, Cache, External services
|
||||
|
||||
### Multi-Database Support
|
||||
Mendukung 5 jenis database sekaligus dengan connection pooling dan read replicas:
|
||||
- PostgreSQL (Primary)
|
||||
- MySQL
|
||||
- SQL Server
|
||||
- MongoDB
|
||||
- SQLite
|
||||
|
||||
## 📁 Project Structure
|
||||
```text
|
||||
service-general/
|
||||
├── cmd/api/main.go # Entry point aplikasi
|
||||
├── internal/ # Business logic (Clean Architecture)
|
||||
│ ├── person/ # Person/patient domain
|
||||
│ │ ├── dto.go # Data Transfer Objects
|
||||
│ │ ├── entity.go # Domain entities
|
||||
│ │ ├── mapper.go # Object mappers
|
||||
│ │ ├── repository.go # Repository interface & implementation
|
||||
│ │ └── service.go # Business service
|
||||
│ ├── auth/ # Authentication domain
|
||||
│ ├── master/ # Master data domain
|
||||
│ └── infrastructure/ # Infrastructure layer
|
||||
│ ├── cache/ # Cache management
|
||||
│ ├── config/ # Configuration
|
||||
│ ├── database/ # Database connections
|
||||
│ └── transport/ # HTTP & gRPC transport
|
||||
├── pkg/ # Shared packages
|
||||
│ ├── errors/ # Error handling system
|
||||
│ ├── logger/ # Logging system
|
||||
│ └── utils/query/ # Powerful query builder
|
||||
├── scripts/ # Utility scripts
|
||||
├── docs/ # Documentation
|
||||
└── tools/ # Code generation tools
|
||||
```
|
||||
|
||||
## 📦 Dependencies
|
||||
|
||||
### Core Dependencies
|
||||
```
|
||||
github.com/gin-gonic/gin v1.10.1 # REST API Framework
|
||||
github.com/google/uuid v1.6.0 # UUID Generator
|
||||
golang.org/x/crypto v0.44.0 # Cryptography
|
||||
golang.org/x/sync v0.18.0 # Sync utilities
|
||||
gorm.io/driver/postgres v1.5.11 # PostgreSQL Driver
|
||||
```
|
||||
|
||||
### Database Drivers
|
||||
```
|
||||
gorm.io/driver/mysql v1.6.0 # MySQL Driver
|
||||
gorm.io/driver/sqlite v1.6.0 # SQLite Driver
|
||||
gorm.io/driver/sqlserver v1.6.3 # SQL Server Driver
|
||||
go.mongodb.org/mongo-driver v1.17.6 # MongoDB Driver
|
||||
github.com/jmoiron/sqlx v1.4.0 # SQL Extensions
|
||||
```
|
||||
|
||||
### Utilities
|
||||
```
|
||||
github.com/go-playground/validator/v10 v10.27.0 # Input Validation
|
||||
github.com/golang/protobuf v1.5.4 # Protocol Buffers
|
||||
github.com/rs/zerolog v1.34.0 # Structured Logging
|
||||
github.com/swaggo/gin-swagger v1.6.1 # Swagger Integration
|
||||
google.golang.org/grpc v1.78.0 # gRPC Framework
|
||||
```
|
||||
|
||||
## 🔗 API Endpoints
|
||||
|
||||
### REST API Base
|
||||
- **Base URL**: `http://localhost:8080/api/v1`
|
||||
- **Swagger UI**: `http://localhost:8080/swagger/index.html`
|
||||
|
||||
### Person Endpoints
|
||||
- `GET /persons` - List persons with pagination
|
||||
- `GET /persons/:id` - Get person detail
|
||||
- `POST /persons` - Create new person
|
||||
- `PUT /persons/:id` - Update person
|
||||
- `DELETE /persons/:id` - Soft delete person
|
||||
- `GET /persons/search` - Search with filters
|
||||
|
||||
### gRPC Services
|
||||
- **Port**: 50051 (default)
|
||||
- **Reflection**: Enabled untuk development
|
||||
- **Proto Files**: Tersedia di `docs/api/`
|
||||
|
||||
## ⚙️ Environment Configuration
|
||||
|
||||
### Configuration in config.yaml
|
||||
```yaml
|
||||
server:
|
||||
port: 8080
|
||||
mode: debug
|
||||
read_timeout: 10
|
||||
write_timeout: 10
|
||||
|
||||
databases:
|
||||
postgres:
|
||||
type: postgres
|
||||
host: 10.10.123.206
|
||||
port: 5432
|
||||
username: postgres
|
||||
password: your_db_password
|
||||
database: health
|
||||
sslmode: disable
|
||||
max_open_conns: 25
|
||||
max_idle_conns: 25
|
||||
conn_max_lifetime: 5m
|
||||
```
|
||||
|
||||
## 🗄️ Database Schema Overview
|
||||
|
||||
### Person Entity (Core)
|
||||
```go
|
||||
type Person struct {
|
||||
Id int64 // Primary key
|
||||
Name string // Nama lengkap
|
||||
BirthDate *time.Time // Tanggal lahir
|
||||
BirthRegency_Code *string // Kode kabupaten (6 digit)
|
||||
Gender_Code *string // L/P (Laki-laki/Perempuan)
|
||||
ResidentIdentityNumber *string // NIK (16 digit)
|
||||
Religion_Code *string // Kode agama
|
||||
Education_Code *string // Kode pendidikan
|
||||
Occupation_Code *string // Kode pekerjaan
|
||||
MaritalStatus_Code *string // Kode status marital
|
||||
}
|
||||
```
|
||||
|
||||
### Related Entities
|
||||
- **PersonAddress**: Multiple addresses per person
|
||||
- **PersonContact**: Contact information (email, phone)
|
||||
- **PersonInsurance**: Insurance company data
|
||||
- **PersonRelative**: Family/relative information
|
||||
|
||||
## 📋 Business Rules & Validation
|
||||
|
||||
### Person Validation Rules
|
||||
```go
|
||||
Name string `json:"name" binding:"required,min=2"`
|
||||
BirthRegency_Code string `json:"birth_regency_code" validate:"omitempty,len=6"`
|
||||
Gender_Code string `json:"gender_code" validate:"omitempty,oneof=L P"`
|
||||
ResidentIdentityNumber string `json:"resident_identity_number" validate:"omitempty,len=16"`
|
||||
Village_Code string `json:"village_code" validate:"required,len=10"`
|
||||
```
|
||||
|
||||
### Key Validation Rules:
|
||||
- **Name**: Required, minimum 2 characters
|
||||
- **NIK**: 16 digits (optional)
|
||||
- **Gender**: L/P only (Laki-laki/Perempuan)
|
||||
- **Birth Regency**: 6 digits code
|
||||
- **Village Code**: 10 digits code (for addresses)
|
||||
- **Email**: Valid email format (for contacts)
|
||||
|
||||
## 🔗 Integration Points
|
||||
|
||||
### BPJS Integration
|
||||
```yaml
|
||||
bpjs:
|
||||
base_url: https://apijkn.bpjs-kesehatan.go.id
|
||||
cons_id: 5257
|
||||
user_key: your_bpjs_user_key
|
||||
secret_key: your_bpjs_secret_key
|
||||
timeout: 30s
|
||||
```
|
||||
|
||||
### SatuSehat Integration
|
||||
```yaml
|
||||
satu_sehat:
|
||||
org_id: your_orgid
|
||||
fasyakes_id: your_fasyakes_id
|
||||
client_id: your_client_id
|
||||
client_secret: your_client_secret
|
||||
auth_url: https://api-satusehat.kemkes.go.id/oauth2/v1
|
||||
base_url: https://api-satusehat.kemkes.go.id/fhir-r4/v1
|
||||
```
|
||||
|
||||
## 🛠️ Development Commands
|
||||
|
||||
### Setup & Run
|
||||
```bash
|
||||
# Install dependencies
|
||||
go mod download
|
||||
|
||||
# Run development server
|
||||
make run
|
||||
# atau
|
||||
go run cmd/api/main.go
|
||||
```
|
||||
|
||||
### Build & Test
|
||||
```bash
|
||||
# Build binary
|
||||
make build
|
||||
# atau
|
||||
./scripts/build.sh
|
||||
|
||||
# Run tests
|
||||
make test
|
||||
# atau
|
||||
go test ./...
|
||||
|
||||
# Database migration
|
||||
./scripts/migrate.sh
|
||||
|
||||
# Generate proto files
|
||||
./scripts/generate_proto.sh
|
||||
```
|
||||
|
||||
## 🔐 Security Features
|
||||
- JWT Authentication dengan multiple providers
|
||||
- Rate limiting dengan Redis
|
||||
- CORS protection
|
||||
- Input validation & sanitization
|
||||
- SQL injection prevention
|
||||
- Audit trail untuk semua perubahan data
|
||||
|
||||
## 📊 Performance Features
|
||||
- Connection pooling untuk database
|
||||
- Query optimization dengan index
|
||||
- Caching strategy (Redis)
|
||||
- Read replicas support
|
||||
- Soft delete untuk data retention
|
||||
|
||||
## 🧪 Testing Strategy
|
||||
- Unit testing untuk business logic
|
||||
- Integration testing untuk API
|
||||
- External service mocking
|
||||
- Load testing capabilities
|
||||
|
||||
## 🚀 Deployment Options
|
||||
- Docker support (dev & prod)
|
||||
- Environment-based configuration
|
||||
- Health checks & monitoring
|
||||
- Graceful shutdown
|
||||
- Multi-stage build
|
||||
|
||||
## 📚 Documentation
|
||||
- Swagger/OpenAPI documentation
|
||||
- gRPC service definitions
|
||||
- Code comments & examples
|
||||
- Postman collections
|
||||
- Architecture diagrams
|
||||
|
||||
## 🔮 Future Enhancements
|
||||
- Event sourcing untuk audit trail
|
||||
- CQRS implementation
|
||||
- Multi-tenant support
|
||||
- Advanced analytics
|
||||
- AI/ML integration untuk data analytics
|
||||
|
||||
---
|
||||
|
||||
**Generated on**: $(date)
|
||||
**Version**: 1.0.0
|
||||
**Go Version**: $(go version | cut -d' ' -f3)
|
||||
**Last Updated**: $(date +%Y-%m-%d)
|
||||
```
|
||||
|
||||
Sekarang saya juga akan update script context.sh untuk membuatnya lebih lengkap:
|
||||
|
||||
```bash:/home/meninjar/goprint/service-general/scripts/context.sh
|
||||
#!/bin/bash
|
||||
|
||||
# Script untuk generate project context secara lengkap
|
||||
# Usage: ./scripts/context.sh [options]
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
OUTPUT_FILE="$PROJECT_DIR/PROJECT_CONTEXT.md"
|
||||
|
||||
echo "🚀 Generating Service-General Project Context..."
|
||||
|
||||
# Fungsi untuk generate header
|
||||
generate_header() {
|
||||
cat << 'EOF'
|
||||
# SERVICE-GENERAL PROJECT CONTEXT
|
||||
|
||||
## 📋 Project Overview
|
||||
Service-General adalah microservice berbasis Go yang menyediakan REST API dan gRPC untuk manajemen data person/pasien dengan integrasi ke sistem kesehatan Indonesia (BPJS & SatuSehat).
|
||||
|
||||
## 🎯 Business Domain
|
||||
- **Patient Management**: CRUD lengkap untuk data pasien
|
||||
- **Health Insurance**: Integrasi dengan BPJS Kesehatan
|
||||
- **National Health Platform**: Integrasi dengan SatuSehat (FHIR R4)
|
||||
- **Master Data**: Manajemen data master (agama, pendidikan, pekerjaan, dll)
|
||||
|
||||
## 🏗️ Technical Architecture
|
||||
|
||||
### Clean Architecture + Domain-Driven Design
|
||||
- **Transport Layer**: REST API (Gin) + gRPC
|
||||
- **Application Layer**: Business logic (UseCases)
|
||||
- **Domain Layer**: Entities + Business rules
|
||||
- **Infrastructure Layer**: Database, Cache, External services
|
||||
|
||||
### Multi-Database Support
|
||||
- PostgreSQL (primary)
|
||||
- MySQL
|
||||
- SQL Server
|
||||
- MongoDB
|
||||
- SQLite
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Fungsi untuk generate struktur directory
|
||||
generate_directory_structure() {
|
||||
echo "## 📁 Project Structure"
|
||||
echo '```'
|
||||
if command -v tree >/dev/null 2>&1; then
|
||||
tree -L 3 -I 'tmp|vendor|.git|node_modules|*.log' "$PROJECT_DIR" 2>/dev/null | head -50
|
||||
else
|
||||
find "$PROJECT_DIR" -type d -not -path "*/tmp/*" -not -path "*/.git/*" | head -30
|
||||
fi
|
||||
echo '```'
|
||||
}
|
||||
|
||||
# Fungsi untuk generate dependencies list
|
||||
generate_dependencies() {
|
||||
echo "## 📦 Dependencies"
|
||||
echo "### Core Dependencies"
|
||||
grep -E '^[[:space:]]*github.com/' "$PROJECT_DIR/go.mod" | head -10
|
||||
|
||||
echo ""
|
||||
echo "### Database Drivers"
|
||||
grep -E 'postgres|mysql|mongo|sqlite|sqlserver' "$PROJECT_DIR/go.mod"
|
||||
|
||||
echo ""
|
||||
echo "### Security & Validation"
|
||||
grep -E 'validator|crypto|jwt|auth' "$PROJECT_DIR/go.mod"
|
||||
}
|
||||
|
||||
# Fungsi untuk generate business rules dari DTO
|
||||
generate_business_rules() {
|
||||
echo "## 📋 Business Rules & Validation"
|
||||
if [ -f "$PROJECT_DIR/internal/person/dto.go" ]; then
|
||||
echo "### Person Validation Rules"
|
||||
echo '```go'
|
||||
grep -E "validate:|binding:" "$PROJECT_DIR/internal/person/dto.go" | head -15
|
||||
echo '```'
|
||||
echo ""
|
||||
echo "### Key Validation Rules:"
|
||||
echo "- **Name**: Required, minimum 2 characters"
|
||||
echo "- **NIK**: 16 digits (optional)"
|
||||
echo "- **Gender**: L/P only (Laki-laki/Perempuan)"
|
||||
echo "- **Birth Regency**: 6 digits code"
|
||||
echo "- **Village Code**: 10 digits code (for addresses)"
|
||||
echo "- **Email**: Valid email format (for contacts)"
|
||||
fi
|
||||
}
|
||||
|
||||
# Fungsi untuk generate database schema overview
|
||||
generate_database_schema() {
|
||||
echo "## 🗄️ Database Schema Overview"
|
||||
if [ -f "$PROJECT_DIR/internal/person/entity.go" ]; then
|
||||
echo "### Person Entity (Core)"
|
||||
echo '```go'
|
||||
# Ambil struct definition
|
||||
sed -n '/type Person struct {/,/^}/p' "$PROJECT_DIR/internal/person/entity.go" | head -20
|
||||
echo '```'
|
||||
echo ""
|
||||
echo "### Related Entities:"
|
||||
echo "- **PersonAddress**: Multiple addresses per person"
|
||||
echo "- **PersonContact**: Contact information (email, phone)"
|
||||
echo "- **PersonInsurance**: Insurance company data"
|
||||
echo "- **PersonRelative**: Family/relative information"
|
||||
fi
|
||||
}
|
||||
|
||||
# Fungsi untuk generate integration points
|
||||
generate_integrations() {
|
||||
echo "## 🔗 Integration Points"
|
||||
if [ -f "$PROJECT_DIR/config.yaml" ]; then
|
||||
echo "### BPJS Integration"
|
||||
echo '```yaml'
|
||||
grep -A 6 "bpjs:" "$PROJECT_DIR/config.yaml" 2>/dev/null || echo "BPJS configuration not found"
|
||||
echo '```'
|
||||
echo ""
|
||||
echo "### SatuSehat Integration"
|
||||
echo '```yaml'
|
||||
grep -A 8 "satu_sehat:" "$PROJECT_DIR/config.yaml" 2>/dev/null || echo "SatuSehat configuration not found"
|
||||
echo '```'
|
||||
fi
|
||||
}
|
||||
|
||||
# Fungsi untuk generate API endpoints dari code analysis
|
||||
generate_api_endpoints() {
|
||||
echo "## 🔗 API Endpoints"
|
||||
echo "### REST API Base"
|
||||
echo "- **Base URL**: \`http://localhost:8080/api/v1\`"
|
||||
echo "- **Swagger UI**: \`http://localhost:8080/swagger/index.html\`"
|
||||
echo ""
|
||||
echo "### Person Endpoints"
|
||||
echo "- \`GET /persons\` - List persons with pagination"
|
||||
echo "- \`GET /persons/:id\` - Get person detail"
|
||||
echo "- \`POST /persons\` - Create new person"
|
||||
echo "- \`PUT /persons/:id\` - Update person"
|
||||
echo "- \`DELETE /persons/:id\` - Soft delete person"
|
||||
echo "- \`GET /persons/search\` - Search with filters"
|
||||
echo ""
|
||||
echo "### Auth Endpoints"
|
||||
echo "- \`POST /auth/login\` - User login"
|
||||
echo "- \`POST /auth/refresh\` - Refresh token"
|
||||
echo "- \`POST /auth/logout\` - User logout"
|
||||
echo ""
|
||||
echo "### gRPC Services"
|
||||
echo "- **Port**: 50051 (default)"
|
||||
echo "- **Reflection**: Enabled untuk development"
|
||||
echo "- **Proto Files**: Tersedia di \`docs/api/\`"
|
||||
}
|
||||
|
||||
# Fungsi untuk generate environment configuration
|
||||
generate_env_config() {
|
||||
echo "## ⚙️ Environment Configuration"
|
||||
if [ -f "$PROJECT_DIR/.env.example" ]; then
|
||||
echo "### Environment Variables (.env.example)"
|
||||
echo '```bash'
|
||||
cat "$PROJECT_DIR/.env.example"
|
||||
echo '```'
|
||||
else
|
||||
echo "### Configuration in config.yaml"
|
||||
echo '```yaml'
|
||||
grep -A 10 "server:" "$PROJECT_DIR/config.yaml" 2>/dev/null || echo "Server config not found"
|
||||
echo '```'
|
||||
fi
|
||||
}
|
||||
|
||||
# Fungsi untuk generate development commands
|
||||
generate_dev_commands() {
|
||||
echo "## 🛠️ Development Commands"
|
||||
echo "### Setup & Run"
|
||||
echo '```bash'
|
||||
echo "# Install dependencies"
|
||||
echo "go mod download"
|
||||
echo ""
|
||||
echo "# Run development server"
|
||||
echo "make run"
|
||||
echo "# atau"
|
||||
echo "go run cmd/api/main.go"
|
||||
echo '```'
|
||||
echo ""
|
||||
echo "### Build & Test"
|
||||
echo '```bash'
|
||||
echo "# Build binary"
|
||||
echo "make build"
|
||||
echo "# atau"
|
||||
echo "./scripts/build.sh"
|
||||
echo ""
|
||||
echo "# Run tests"
|
||||
echo "make test"
|
||||
echo "# atau"
|
||||
echo "go test ./..."
|
||||
echo ""
|
||||
echo "# Database migration"
|
||||
echo "./scripts/migrate.sh"
|
||||
echo ""
|
||||
echo "# Generate proto files"
|
||||
echo "./scripts/generate_proto.sh"
|
||||
echo '```'
|
||||
}
|
||||
|
||||
# Fungsi untuk generate security features
|
||||
generate_security_features() {
|
||||
echo "## 🔐 Security Features"
|
||||
echo "- JWT Authentication dengan multiple providers (JWT, Keycloak, Static)"
|
||||
echo "- Rate limiting dengan Redis (default: 60 requests/minute)"
|
||||
echo "- CORS protection dengan configurable origins"
|
||||
echo "- Input validation & sanitization menggunakan go-playground/validator"
|
||||
echo "- SQL injection prevention dengan parameterized queries"
|
||||
echo "- Audit trail untuk semua perubahan data"
|
||||
echo "- Soft delete untuk data retention"
|
||||
echo "- Security headers (XSS, CSRF protection)"
|
||||
}
|
||||
|
||||
# Fungsi untuk generate performance features
|
||||
generate_performance_features() {
|
||||
echo "## 📊 Performance Features"
|
||||
echo "- Connection pooling untuk database (max 25 connections)"
|
||||
echo "- Query optimization dengan proper indexing"
|
||||
echo "- Caching strategy menggunakan Redis"
|
||||
echo "- Read replicas support untuk load balancing"
|
||||
echo "- Soft delete untuk mempertahankan performa query"
|
||||
echo "- Pagination untuk semua list endpoints"
|
||||
echo "- Timeout configuration untuk external services (30s default)"
|
||||
}
|
||||
|
||||
# Fungsi untuk generate testing strategy
|
||||
generate_testing_strategy() {
|
||||
echo "## 🧪 Testing Strategy"
|
||||
echo "- Unit testing untuk business logic di setiap domain"
|
||||
echo "- Integration testing untuk API endpoints"
|
||||
echo "- External service mocking untuk BPJS dan SatuSehat"
|
||||
echo "- Load testing capabilities untuk performance validation"
|
||||
echo "- Test coverage target: >80%"
|
||||
}
|
||||
|
||||
# Fungsi untuk generate deployment info
|
||||
generate_deployment_info() {
|
||||
echo "## 🚀 Deployment Options"
|
||||
echo "### Docker Support"
|
||||
echo "- **Development**: \`docker-compose -f docker-compose.dev.yml up\`"
|
||||
echo "- **Production**: \`docker-compose -f docker-compose.prod.yml up\`"
|
||||
echo ""
|
||||
echo "### Environment Variables"
|
||||
echo "- Database configuration"
|
||||
echo "- JWT secret dan auth settings"
|
||||
echo "- External service credentials (BPJS, SatuSehat)"
|
||||
echo "- Rate limiting configuration"
|
||||
echo "- Logging level dan format"
|
||||
}
|
||||
|
||||
# Generate complete context
|
||||
generate_complete_context() {
|
||||
generate_header > "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_directory_structure >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_dependencies >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_api_endpoints >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_env_config >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_database_schema >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_business_rules >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_integrations >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_dev_commands >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_security_features >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_performance_features >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_testing_strategy >> "$OUTPUT_FILE"
|
||||
echo "" >> "$OUTPUT_FILE"
|
||||
generate_deployment_info >> "$OUTPUT_FILE"
|
||||
|
||||
# Tambahkan closing section
|
||||
cat >> "$OUTPUT_FILE" << EOF
|
||||
|
||||
## 📚 Additional Documentation
|
||||
- **API Documentation**: Swagger/OpenAPI di \`/swagger/index.html\`
|
||||
- **gRPC Documentation**: Tersedia di \`docs/api/grpc_docs.md\`
|
||||
- **Postman Collection**: \`person.postman_collection.json\`
|
||||
- **Architecture Diagrams**: Implementasi Clean Architecture + DDD
|
||||
|
||||
## 🔮 Future Enhancements
|
||||
- Event sourcing untuk audit trail yang lebih baik
|
||||
- CQRS (Command Query Responsibility Segregation) implementation
|
||||
- Multi-tenant support untuk beberapa organisasi
|
||||
- Advanced analytics dan reporting
|
||||
- AI/ML integration untuk data analytics dan prediksi
|
||||
- Service mesh integration untuk microservices
|
||||
- Advanced caching strategies (Redis Cluster)
|
||||
|
||||
## 📊 Project Metrics
|
||||
- **Go Version**: $(go version 2>/dev/null || echo "Go not installed")
|
||||
- **Module**: service-general
|
||||
- **Architecture**: Clean Architecture + DDD
|
||||
- **API Types**: REST + gRPC
|
||||
- **Databases**: 5 types (PostgreSQL, MySQL, SQL Server, MongoDB, SQLite)
|
||||
- **External Integrations**: BPJS Kesehatan, SatuSehat Platform
|
||||
- **Security**: JWT, Rate Limiting, CORS, Input Validation
|
||||
|
||||
---
|
||||
**Generated on**: $(date)
|
||||
**Version**: 1.0.0
|
||||
**Last Updated**: $(date +%Y-%m-%d)
|
||||
**Generator**: Service-General Context Script
|
||||
|
||||
EOF
|
||||
|
||||
echo "✅ Project context generated successfully!"
|
||||
echo "📄 File created: $OUTPUT_FILE"
|
||||
echo "📊 Context includes:"
|
||||
echo " ✅ Project structure and architecture"
|
||||
echo " ✅ Dependencies and technology stack"
|
||||
echo " ✅ API endpoints and business rules"
|
||||
echo " ✅ Database schema overview"
|
||||
echo " ✅ Integration points (BPJS & SatuSehat)"
|
||||
echo " ✅ Development commands and deployment"
|
||||
echo " ✅ Security and performance features"
|
||||
echo " ✅ Testing strategy and future enhancements"
|
||||
}
|
||||
|
||||
# Main execution
|
||||
main() {
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
case "${1:-}" in
|
||||
--help|-h)
|
||||
echo "Usage: $0 [options]"
|
||||
echo "Options:"
|
||||
echo " --help, -h Show this help message"
|
||||
echo " --generate Generate complete project context (default)"
|
||||
echo " --structure Show directory structure only"
|
||||
echo " --deps Show dependencies only"
|
||||
echo " --api Show API endpoints only"
|
||||
echo " --rules Show business rules only"
|
||||
echo " --security Show security features only"
|
||||
echo " --performance Show performance features only"
|
||||
;;
|
||||
--generate)
|
||||
generate_complete_context
|
||||
;;
|
||||
--structure)
|
||||
generate_directory_structure
|
||||
;;
|
||||
--deps)
|
||||
generate_dependencies
|
||||
;;
|
||||
--api)
|
||||
generate_api_endpoints
|
||||
;;
|
||||
--rules)
|
||||
generate_business_rules
|
||||
;;
|
||||
--security)
|
||||
generate_security_features
|
||||
;;
|
||||
--performance)
|
||||
generate_performance_features
|
||||
;;
|
||||
*)
|
||||
generate_complete_context
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Run main function
|
||||
main "$@"
|
||||
echo "✨ Context generation completed!"
|
||||
```
|
||||
Reference in New Issue
Block a user