directlx-claude-config/plans/jiggly-squishing-pine.md

8.0 KiB

Project Rename Plan: atm-incident → hiveops-incident

Overview

Rename the entire project from "atm-incident" to "hiveops-incident" across 121 files, including Java package structure, database name, Docker infrastructure, and documentation.

Scope

  • Java Package: com.atm.incidentcom.hiveops.incident (93 files)
  • Database: atm_incidenthiveops_incident (15 files)
  • Docker/Containers: All containers, images, and networks (25 files)
  • Documentation: All paths and references (16 files)

Implementation Steps

1. Pre-Flight Validation

  • Verify clean git state
  • Create safety branch: rename-to-hiveops-incident
  • Stop all running Docker services

2. Backend Maven Configuration

Files: backend/pom.xml

  • Update <groupId>com.atm</groupId><groupId>com.hiveops</groupId>
  • Validate with mvn validate

3. Java Package Rename (Critical - Two-Step Process)

Step 3a: Update Package Content First

cd backend/src/main/java/com/atm/incident
# Update package declarations in all 93 files
find . -name "*.java" -exec sed -i 's/^package com\.atm\.incident/package com.hiveops.incident/g' {} \;
# Update all imports
find . -name "*.java" -exec sed -i 's/import com\.atm\.incident/import com.hiveops.incident/g' {} \;

Step 3b: Rename Main Application Class

  • Update class name in content: AtmIncidentManagementApplicationHiveopsIncidentManagementApplication
  • Rename file using git mv

Step 3c: Move Directory Structure

cd backend/src/main/java/com
mkdir -p hiveops/incident
git mv atm/incident/* hiveops/incident/
git rm -r atm/

Validation: mvn clean compile must succeed

4. Backend Configuration Files

File: backend/src/main/resources/application.properties

  • spring.application.name: atm-incident-managementhiveops-incident-management
  • logging.level: com.atm.incidentcom.hiveops.incident
  • Database URL: atm_incidenthiveops_incident

5. Database Name Changes

Files: All config files, scripts, and documentation

# Docker compose files
sed -i 's/atm_incident/hiveops_incident/g' docker-compose.yml docker-compose.prod.yml .env.example

# DevOps scripts (5 files)
find devops-scripts -name "*.sh" -exec sed -i 's/atm_incident/hiveops_incident/g' {} \;

# Documentation (16 files)
find docs -name "*.md" -exec sed -i 's/atm_incident/hiveops_incident/g' {} \;
sed -i 's/atm_incident/hiveops_incident/g' README.md CLAUDE.md

# SQL files
sed -i 's/atm_incident/hiveops_incident/g' backend/src/main/resources/db/*.sql SAMPLE_DATA.sql

6. Docker Infrastructure

Pattern: atm-incident-*hiveops-incident-*

Files: docker-compose.yml, docker-compose.prod.yml, .gitea/workflows/build-deploy.yml, DevOps scripts

# Docker compose
sed -i 's/atm-incident-/hiveops-incident-/g' docker-compose.yml docker-compose.prod.yml

# CI/CD pipeline
sed -i 's/atm-incident-/hiveops-incident-/g' .gitea/workflows/build-deploy.yml

# DevOps scripts (11 files)
find devops-scripts -name "*.sh" -exec sed -i 's/atm-incident-/hiveops-incident-/g' {} \;
find devops-scripts -name "*.sh" -exec sed -i 's/ATM Incident Management System/HiveOps Incident Management System/g' {} \;

Validation: docker compose config must validate

7. Frontend Configuration

Files: frontend/package.json, frontend/package-lock.json

sed -i 's/"name": "atm-incident-frontend"/"name": "hiveops-incident-frontend"/g' \
  frontend/package.json frontend/package-lock.json

Validation: npm install --dry-run must succeed

8. Documentation Updates

Files: All 16 markdown files in docs/, plus root documentation

# Update deployment paths
find docs -name "*.md" -exec sed -i 's|/opt/atm-incident|/opt/hiveops-incident|g' {} \;

# Update project name
find docs -name "*.md" -exec sed -i 's/atm-incident/hiveops-incident/g' {} \;
find docs -name "*.md" -exec sed -i 's/ATM Incident Management/HiveOps Incident Management/g' {} \;

# Update Java package references
find docs -name "*.md" -exec sed -i 's/com\.atm\.incident/com.hiveops.incident/g' {} \;

# Root docs
sed -i 's/atm-incident/hiveops-incident/g' README.md
sed -i 's/ATM Incident Management/HiveOps Incident Management/g' README.md
sed -i 's/com\.atm\.incident/com.hiveops.incident/g' CLAUDE.md

9. Comprehensive Validation

File Count Checks:

# Java files should be 93
find backend/src/main/java/com/hiveops/incident -name "*.java" | wc -l

# Old path should not exist
test ! -d backend/src/main/java/com/atm && echo "OK"

No Old References (should return 0 for each):

grep -r "package com\.atm\.incident" backend/src --include="*.java" | wc -l
grep -r "import com\.atm\.incident" backend/src --include="*.java" | wc -l
grep -r "atm-incident-" . --exclude-dir=.git --exclude-dir=node_modules | wc -l

Build Tests:

# Backend
cd backend && mvn clean compile

# Frontend
cd frontend && npm install && npm run check

# Docker compose syntax
docker compose -f docker-compose.yml config > /dev/null
docker compose -f docker-compose.prod.yml config > /dev/null

10. Git Commits (6 Logical Commits)

  1. Java package structure - Package rename, directory move, main class
  2. Configuration files - Spring config, logging, database name
  3. Docker infrastructure - Containers, networks, CI/CD
  4. DevOps scripts - All shell scripts
  5. Documentation - All markdown files
  6. Database schemas - SQL files and sample data

Each commit includes migration context and co-authorship tag.

11. Integration Testing

Local Development Test:

docker compose down -v
docker compose build
docker compose up -d
sleep 30
docker compose ps  # All should be "Up"
curl http://localhost:8080/api/atms
curl http://localhost:5173
docker exec hiveops-incident-db psql -U postgres -c "\l" | grep hiveops_incident

API Compatibility Test:

# Test hiveops-agent integration
curl -X POST http://localhost:8080/api/journal-events \
  -H "Content-Type: application/json" \
  -d '{"atmId": 1, "eventType": "CARD_READER_DETECTED", "eventDetails": "Test", "eventSource": "HIVEOPS_AGENT"}'

Critical Files

  1. backend/src/main/java/com/atm/incident/AtmIncidentManagementApplication.java - Main class requiring rename
  2. backend/pom.xml - Maven config (update before package changes)
  3. backend/src/main/resources/application.properties - Spring configuration
  4. docker-compose.yml - Development orchestration
  5. .gitea/workflows/build-deploy.yml - CI/CD pipeline

Database Migration Notes

For Existing Deployments: Database rename required

Option 1: Rename Existing Database (preserves data):

SELECT pg_terminate_backend(pid) FROM pg_stat_activity
WHERE datname = 'atm_incident' AND pid <> pg_backend_pid();
ALTER DATABASE atm_incident RENAME TO hiveops_incident;

Option 2: Fresh Database (clean start):

./devops-scripts/setup-database.sh  # Already updated with new name

Risk Mitigation

Java Package Rename Risk: Update content before moving files; use git mv to preserve history Database Risk: Rename instead of recreate; backup first Rollback: Git branch preserved; can revert commits or reset to previous state

Success Criteria

  • All 93 Java files use com.hiveops.incident package
  • Zero references to com.atm.incident in codebase
  • All containers use hiveops-incident-* prefix
  • Database name is hiveops_incident everywhere
  • Backend compiles successfully (mvn clean compile)
  • Frontend builds without errors (npm run check)
  • Docker Compose starts all services
  • API endpoints respond correctly
  • hiveops-agent integration works

Verification Commands

After implementation, run:

# Check for any remaining old references
grep -r "com\.atm\.incident\|atm-incident\|atm_incident" . \
  --exclude-dir={.git,node_modules,target} \
  --include=\*.{java,properties,yml,yaml,json,sh,md}

# Should return empty or only in docs/CLAUDE.md as historical reference