feat: Implement ADAN Java microservice with Memory Service integration
Summary
Implement ADAN Java microservice with integrated Memory Service for conversation history management. ADAN connects to ANIR (Python backend) via HTTP bridge with database-level agent isolation.
Key Features
- REST API endpoints for chat and conversation history
- Port 8081 (separate from Python backend on 8000)
- H2 embedded database for development
- Uses shared library from iavia-common (v0.0.84-RELEASE)
- OkHttp3 HTTP client with connection pooling
- 30-second timeout for reliable communication
- Health check on startup with automatic cleanup
- agent_id = "ADAN" for database-level access control
- Composite index (user_uuid, agent_id) for fast queries
- 404 response on agent_id mismatch (no data leak)
- Defense-in-depth security model
- Summary + Buffer strategy implemented
- Tested with 30 questions
- 10 messages summarized, 20 in buffer
- 491-character summary generated and stored in PostgreSQL
- OpenAI-compatible message format
- Simple 2-message test suite
- Extended 30-question test with Summary+Buffer verification
- Complete README.md section on ADAN integration
Test Results
Simple Test (2 messages):
-
✅ Conversation created -
✅ Messages stored and retrieved -
✅ Format: OpenAI compatible
Extended Test (30 questions):
-
✅ 30 messages stored in PostgreSQL -
✅ Summary generated: 491 characters -
✅ Buffer size: 20 recent messages -
✅ Summarized messages: 10 -
✅ agent_id isolation: ANIR (verified in logs) -
✅ Health check passed -
✅ LangChain Memory (Summary+Buffer) working
Files Added:
src/main/java/com/izemx/iavia/adan/AdanServiceApplication.javasrc/main/java/com/izemx/iavia/adan/config/AdanConfig.javasrc/main/java/com/izemx/iavia/adan/config/MemoryServiceBean.javasrc/main/java/com/izemx/iavia/adan/controller/ChatController.javasrc/main/resources/application.yml-
Integration/tests/test_simple_memory.sh(simple 2-message test) -
Integration/tests/test_30_questions.sh(30-question test with Summary+Buffer) -
Integration/tests/questions_30.txt(30 test questions)
Files Modified:
-
README.md(added Java Integration section with architecture, implementation, and testing) -
pom.xml(updated iavia-common from 0.0.72 to 0.0.84-RELEASE)
Architecture
Client (User) ↓ ADAN Java (port 8081) ↓ HTTP (OkHttp3) ANIR Python (port 8000) ↓ SQL PostgreSQL (conversations with agent_id index)
Configuration
Memory Service URL:
- Development:
http://localhost:8000
Ports:
- ADAN Java: 8081
- ANIR Python: 8000
- PostgreSQL: 5432
Security
-
✅ Database-level isolation (agent_id composite index) -
✅ HTTP header validation (x-user-uuid, x-agent-id) -
✅ 30-second connection timeout (OkHttp3) -
✅ Connection pooling (automatic resource management) -
✅ Cleanup on shutdown (@PreDestroy)
Next Steps
- Integrate actual LLM response logic in ChatController
- Add request validation for incoming messages
- Integrate with Qdrant for document search
- Implement n8n chatbot webhook for RAG responses
- Deploy to production with proper configuration
- Monitor performance and error rates
Breaking Changes
None - this is a new microservice addition
Related Issues
- Implements multi-agent architecture with database-level isolation
- Completes ADAN Java microservice implementation
- Enables conversation history sharing between ADAN and ANIR
Checklist
-
Code follows KISS principle (simple, readable) -
No hardcoded values (all externalized) -
Logging implemented (SLF4J, no print statements) -
Tests written and passing -
Documentation updated -
Security reviewed -
Error handling implemented -
Resource cleanup verified (@PreDestroy)