refactor: Rename project to JIRA AI Fixer
Generic name for broader market appeal
This commit is contained in:
parent
27b72e3ccd
commit
3b6b0a657d
|
|
@ -1,10 +1,10 @@
|
||||||
# ACI AI Fixer
|
# JIRA AI Fixer
|
||||||
|
|
||||||
AI system for automated JIRA Support Case analysis with COBOL/SQL/JCL code intelligence.
|
AI system for automated JIRA Support Case analysis with COBOL/SQL/JCL code intelligence.
|
||||||
|
|
||||||
## Overview
|
## 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
|
## Architecture
|
||||||
|
|
||||||
|
|
|
||||||
10
api/main.py
10
api/main.py
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
ACI AI Fixer - FastAPI Backend
|
JIRA AI Fixer - FastAPI Backend
|
||||||
"""
|
"""
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
|
@ -15,14 +15,14 @@ logger = logging.getLogger(__name__)
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def lifespan(app: FastAPI):
|
async def lifespan(app: FastAPI):
|
||||||
"""Startup and shutdown events."""
|
"""Startup and shutdown events."""
|
||||||
logger.info("🚀 ACI AI Fixer starting up...")
|
logger.info("🚀 JIRA AI Fixer starting up...")
|
||||||
# Initialize database, connections, etc.
|
# Initialize database, connections, etc.
|
||||||
yield
|
yield
|
||||||
logger.info("👋 ACI AI Fixer shutting down...")
|
logger.info("👋 JIRA AI Fixer shutting down...")
|
||||||
|
|
||||||
|
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="ACI AI Fixer",
|
title="JIRA AI Fixer",
|
||||||
description="AI system for automated JIRA Support Case analysis",
|
description="AI system for automated JIRA Support Case analysis",
|
||||||
version="0.1.0",
|
version="0.1.0",
|
||||||
lifespan=lifespan,
|
lifespan=lifespan,
|
||||||
|
|
@ -45,7 +45,7 @@ app.include_router(config.router, prefix="/api/config", tags=["config"])
|
||||||
|
|
||||||
@app.get("/")
|
@app.get("/")
|
||||||
async def root():
|
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")
|
@app.get("/health")
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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 ⚙️ 🔔 │
|
||||||
├─────────────────────────────────────────────────────────────────────────────┤
|
├─────────────────────────────────────────────────────────────────────────────┤
|
||||||
│ │
|
│ │
|
||||||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||||||
|
|
|
||||||
|
|
@ -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 ⚙️ 🔔 │
|
||||||
├─────────────────────────────────────────────────────────────────────────────┤
|
├─────────────────────────────────────────────────────────────────────────────┤
|
||||||
│ │
|
│ │
|
||||||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||||||
|
|
|
||||||
|
|
@ -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
|
3. Does not offer embeddings or semantic search functionality
|
||||||
4. Does not allow indexing or querying code repositories
|
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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
3. Não oferece funcionalidade de embeddings ou busca semântica
|
||||||
4. Não permite indexar ou consultar repositórios de código
|
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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ export default function Layout({ children }: LayoutProps) {
|
||||||
<div className="p-4 flex items-center gap-2">
|
<div className="p-4 flex items-center gap-2">
|
||||||
<Cpu className="h-8 w-8 text-blue-400" />
|
<Cpu className="h-8 w-8 text-blue-400" />
|
||||||
<div>
|
<div>
|
||||||
<h1 className="font-bold text-lg">ACI AI Fixer</h1>
|
<h1 className="font-bold text-lg">JIRA AI Fixer</h1>
|
||||||
<p className="text-xs text-gray-400">v0.1.0</p>
|
<p className="text-xs text-gray-400">v0.1.0</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -64,7 +64,7 @@ export default function Layout({ children }: LayoutProps) {
|
||||||
<header className="bg-white border-b border-gray-200 px-6 py-4">
|
<header className="bg-white border-b border-gray-200 px-6 py-4">
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<h2 className="text-xl font-semibold text-gray-800">
|
<h2 className="text-xl font-semibold text-gray-800">
|
||||||
{navigation.find(n => n.href === location.pathname)?.name || 'ACI AI Fixer'}
|
{navigation.find(n => n.href === location.pathname)?.name || 'JIRA AI Fixer'}
|
||||||
</h2>
|
</h2>
|
||||||
<div className="flex items-center gap-4">
|
<div className="flex items-center gap-4">
|
||||||
<span className="text-sm text-gray-500">
|
<span className="text-sm text-gray-500">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue