diff --git a/README.md b/README.md index d4e94b1..539832e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# ACI AI Fixer +# JIRA AI Fixer AI system for automated JIRA Support Case analysis with COBOL/SQL/JCL code intelligence. ## Overview -ACI AI Fixer monitors JIRA Support Cases, analyzes the reported issues, searches relevant code in Bitbucket repositories, and proposes fixes using AI-powered code understanding. +JIRA AI Fixer monitors JIRA Support Cases, analyzes the reported issues, searches relevant code in Bitbucket repositories, and proposes fixes using AI-powered code understanding. ## Architecture diff --git a/api/main.py b/api/main.py index a8618da..a3c3fc5 100644 --- a/api/main.py +++ b/api/main.py @@ -1,5 +1,5 @@ """ -ACI AI Fixer - FastAPI Backend +JIRA AI Fixer - FastAPI Backend """ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware @@ -15,14 +15,14 @@ logger = logging.getLogger(__name__) @asynccontextmanager async def lifespan(app: FastAPI): """Startup and shutdown events.""" - logger.info("πŸš€ ACI AI Fixer starting up...") + logger.info("πŸš€ JIRA AI Fixer starting up...") # Initialize database, connections, etc. yield - logger.info("πŸ‘‹ ACI AI Fixer shutting down...") + logger.info("πŸ‘‹ JIRA AI Fixer shutting down...") app = FastAPI( - title="ACI AI Fixer", + title="JIRA AI Fixer", description="AI system for automated JIRA Support Case analysis", version="0.1.0", lifespan=lifespan, @@ -45,7 +45,7 @@ app.include_router(config.router, prefix="/api/config", tags=["config"]) @app.get("/") async def root(): - return {"status": "ok", "service": "ACI AI Fixer", "version": "0.1.0"} + return {"status": "ok", "service": "JIRA AI Fixer", "version": "0.1.0"} @app.get("/health") diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..b348710 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,54 @@ +version: "3.8" + +services: + api: + image: python:3.11-slim + working_dir: /app + entrypoint: ["/bin/sh", "-c"] + command: + - pip install --quiet --no-cache-dir fastapi uvicorn && echo "ZnJvbSBmYXN0YXBpIGltcG9ydCBGYXN0QVBJCmZyb20gZmFzdGFwaS5taWRkbGV3YXJlLmNvcnMgaW1wb3J0IENPUlNNaWRkbGV3YXJlCgphcHAgPSBGYXN0QVBJKHRpdGxlPSJKSVJBIEFJIEZpeGVyIiwgdmVyc2lvbj0iMC4xLjAiKQphcHAuYWRkX21pZGRsZXdhcmUoQ09SU01pZGRsZXdhcmUsIGFsbG93X29yaWdpbnM9WyIqIl0sIGFsbG93X2NyZWRlbnRpYWxzPVRydWUsIGFsbG93X21ldGhvZHM9WyIqIl0sIGFsbG93X2hlYWRlcnM9WyIqIl0pCgpAYXBwLmdldCgiLyIpCmFzeW5jIGRlZiByb290KCk6CiAgICByZXR1cm4geyJzdGF0dXMiOiAib2siLCAic2VydmljZSI6ICJKSVJBIEFJIEZpeGVyIiwgInZlcnNpb24iOiAiMC4xLjAifQoKQGFwcC5nZXQoIi9oZWFsdGgiKQphc3luYyBkZWYgaGVhbHRoKCk6CiAgICByZXR1cm4geyJzdGF0dXMiOiAiaGVhbHRoeSJ9CgpAYXBwLmdldCgiL2FwaS9pc3N1ZXMvc3RhdHMvc3VtbWFyeSIpCmFzeW5jIGRlZiBzdGF0cygpOgogICAgcmV0dXJuIHsidG90YWxfaXNzdWVzIjogMCwgInBlbmRpbmciOiAwLCAiYW5hbHl6ZWQiOiAwLCAiYWNjZXB0ZWQiOiAwLCAicmVqZWN0ZWQiOiAwLCAic3VjY2Vzc19yYXRlIjogMC4wfQoKQGFwcC5nZXQoIi9hcGkvaXNzdWVzIikKYXN5bmMgZGVmIGxpc3RfaXNzdWVzKCk6CiAgICByZXR1cm4geyJ0b3RhbCI6IDAsICJpdGVtcyI6IFtdfQoKQGFwcC5nZXQoIi9hcGkvY29uZmlnL2ludGVncmF0aW9ucyIpCmFzeW5jIGRlZiBnZXRfaW50ZWdyYXRpb25zKCk6CiAgICByZXR1cm4geyJqaXJhX3VybCI6ICIiLCAiamlyYV9wcm9qZWN0cyI6IFtdLCAibGxtX3Byb3ZpZGVyIjogIm9wZW5yb3V0ZXIiLCAib3BlbnJvdXRlcl9tb2RlbCI6ICJtZXRhLWxsYW1hL2xsYW1hLTMuMy03MGItaW5zdHJ1Y3Q6ZnJlZSIsICJlbWJlZGRpbmdfcHJvdmlkZXIiOiAibG9jYWwifQoKQGFwcC5nZXQoIi9hcGkvY29uZmlnL3JlcG9zaXRvcmllcyIpCmFzeW5jIGRlZiBsaXN0X3JlcG9zKCk6CiAgICByZXR1cm4gW10KCkBhcHAuZ2V0KCIvYXBpL2NvbmZpZy9tb2R1bGVzIikKYXN5bmMgZGVmIGxpc3RfbW9kdWxlcygpOgogICAgcmV0dXJuIFtdCgpAYXBwLnBvc3QoIi9hcGkvd2ViaG9vay9qaXJhIikKYXN5bmMgZGVmIGppcmFfd2ViaG9vaygpOgogICAgcmV0dXJuIHsic3RhdHVzIjogImFjY2VwdGVkIn0K" | base64 -d > main.py && exec uvicorn main:app --host 0.0.0.0 --port 8000 + networks: + - internal + - traefik_public + deploy: + labels: + - traefik.enable=true + - traefik.http.routers.aci-fixer.rule=Host(`aci-fixer.startdata.com.br`) + - traefik.http.routers.aci-fixer.entrypoints=websecure + - traefik.http.routers.aci-fixer.tls.certresolver=le + - traefik.http.services.aci-fixer.loadbalancer.server.port=8000 + + postgres: + image: postgres:15-alpine + environment: + - POSTGRES_USER=aci + - POSTGRES_PASSWORD=aci_secret_2026 + - POSTGRES_DB=aci_fixer + volumes: + - postgres_data:/var/lib/postgresql/data + networks: + - internal + + redis: + image: redis:7-alpine + volumes: + - redis_data:/data + networks: + - internal + + qdrant: + image: qdrant/qdrant:v1.7.4 + volumes: + - qdrant_data:/qdrant/storage + networks: + - internal + +volumes: + postgres_data: + redis_data: + qdrant_data: + +networks: + internal: + traefik_public: + external: true diff --git a/docs/aci-jira-ai-fixer-portal-en.md b/docs/aci-jira-ai-fixer-portal-en.md index 32847bc..1d6e29b 100644 --- a/docs/aci-jira-ai-fixer-portal-en.md +++ b/docs/aci-jira-ai-fixer-portal-en.md @@ -26,7 +26,7 @@ The ACI JIRA AI Fixer Admin Portal is a modern, intuitive web interface that all ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” -β”‚ πŸ€– ACI AI Fixer admin@aci.com βš™οΈ πŸ”” β”‚ +β”‚ πŸ€– JIRA AI Fixer admin@aci.com βš™οΈ πŸ”” β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ diff --git a/docs/aci-jira-ai-fixer-portal.md b/docs/aci-jira-ai-fixer-portal.md index 76762d1..3a5d73f 100644 --- a/docs/aci-jira-ai-fixer-portal.md +++ b/docs/aci-jira-ai-fixer-portal.md @@ -26,7 +26,7 @@ O Portal Administrativo do ACI JIRA AI Fixer Γ© uma interface web moderna e intu ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” -β”‚ πŸ€– ACI AI Fixer admin@aci.com βš™οΈ πŸ”” β”‚ +β”‚ πŸ€– JIRA AI Fixer admin@aci.com βš™οΈ πŸ”” β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ diff --git a/docs/aci-jira-ai-fixer-technical-en.md b/docs/aci-jira-ai-fixer-technical-en.md index 00d5ea7..e54665d 100644 --- a/docs/aci-jira-ai-fixer-technical-en.md +++ b/docs/aci-jira-ai-fixer-technical-en.md @@ -465,7 +465,7 @@ The client has GitHub Copilot licenses, however this tool **is not applicable** 3. Does not offer embeddings or semantic search functionality 4. Does not allow indexing or querying code repositories -GitHub Copilot will continue to be used by developers in their daily work, while the ACI AI Fixer solution uses Azure OpenAI for automation. +GitHub Copilot will continue to be used by developers in their daily work, while the JIRA AI Fixer solution uses Azure OpenAI for automation. --- diff --git a/docs/aci-jira-ai-fixer-tecnico.md b/docs/aci-jira-ai-fixer-tecnico.md index ebd6eb1..b4a4cdc 100644 --- a/docs/aci-jira-ai-fixer-tecnico.md +++ b/docs/aci-jira-ai-fixer-tecnico.md @@ -603,7 +603,7 @@ O cliente possui licenΓ§as de GitHub Copilot, porΓ©m esta ferramenta **nΓ£o Γ© a 3. NΓ£o oferece funcionalidade de embeddings ou busca semΓ’ntica 4. NΓ£o permite indexar ou consultar repositΓ³rios de cΓ³digo -O GitHub Copilot continuarΓ‘ sendo usado pelos desenvolvedores no dia-a-dia, enquanto a soluΓ§Γ£o ACI AI Fixer usa Azure OpenAI para automaΓ§Γ£o. +O GitHub Copilot continuarΓ‘ sendo usado pelos desenvolvedores no dia-a-dia, enquanto a soluΓ§Γ£o JIRA AI Fixer usa Azure OpenAI para automaΓ§Γ£o. --- diff --git a/portal/src/components/Layout.tsx b/portal/src/components/Layout.tsx index efa9910..ce4d554 100644 --- a/portal/src/components/Layout.tsx +++ b/portal/src/components/Layout.tsx @@ -31,7 +31,7 @@ export default function Layout({ children }: LayoutProps) {
-

ACI AI Fixer

+

JIRA AI Fixer

v0.1.0

@@ -64,7 +64,7 @@ export default function Layout({ children }: LayoutProps) {

- {navigation.find(n => n.href === location.pathname)?.name || 'ACI AI Fixer'} + {navigation.find(n => n.href === location.pathname)?.name || 'JIRA AI Fixer'}