|
@@ -0,0 +1,179 @@
|
|
|
|
|
+# AGENTS.md
|
|
|
|
|
+
|
|
|
|
|
+This file provides guidance for AI agents working in this repository.
|
|
|
|
|
+
|
|
|
|
|
+## Project Overview
|
|
|
|
|
+
|
|
|
|
|
+Simple Knowledge Base is a full-stack RAG (Retrieval-Augmented Generation) Q&A system built with React 19 + NestJS. It's a monorepo with Japanese/Chinese documentation but English code.
|
|
|
|
|
+
|
|
|
|
|
+**Key Features:**
|
|
|
|
|
+- Multi-model support (OpenAI-compatible APIs + Google Gemini native SDK)
|
|
|
|
|
+- Dual processing modes: Fast (Tika text-only) and High-precision (Vision pipeline)
|
|
|
|
|
+- User isolation with JWT authentication and per-user knowledge bases
|
|
|
|
|
+- Hybrid search (vector + keyword) with Elasticsearch
|
|
|
|
|
+- Multi-language interface (Japanese, Chinese, English)
|
|
|
|
|
+- Streaming responses via Server-Sent Events (SSE)
|
|
|
|
|
+
|
|
|
|
|
+## Build Commands
|
|
|
|
|
+
|
|
|
|
|
+### Root Workspace
|
|
|
|
|
+```bash
|
|
|
|
|
+# Install all dependencies
|
|
|
|
|
+yarn install
|
|
|
|
|
+
|
|
|
|
|
+# Start both frontend and backend in dev mode
|
|
|
|
|
+yarn dev
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Server (NestJS Backend) - Port 3001
|
|
|
|
|
+```bash
|
|
|
|
|
+cd server
|
|
|
|
|
+
|
|
|
|
|
+# Build
|
|
|
|
|
+yarn build
|
|
|
|
|
+
|
|
|
|
|
+# Development server (watch mode)
|
|
|
|
|
+yarn start:dev
|
|
|
|
|
+
|
|
|
|
|
+# Format code
|
|
|
|
|
+yarn format
|
|
|
|
|
+
|
|
|
|
|
+# Lint code
|
|
|
|
|
+yarn lint
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Web (React Frontend) - Port 13001
|
|
|
|
|
+```bash
|
|
|
|
|
+cd web
|
|
|
|
|
+
|
|
|
|
|
+# Development server
|
|
|
|
|
+yarn dev
|
|
|
|
|
+
|
|
|
|
|
+# Build for production
|
|
|
|
|
+yarn build
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## Test Commands
|
|
|
|
|
+
|
|
|
|
|
+### Server (Backend) - Jest Testing
|
|
|
|
|
+```bash
|
|
|
|
|
+cd server
|
|
|
|
|
+
|
|
|
|
|
+# Run all tests
|
|
|
|
|
+yarn test
|
|
|
|
|
+
|
|
|
|
|
+# Run tests in watch mode
|
|
|
|
|
+yarn test:watch
|
|
|
|
|
+
|
|
|
|
|
+# Run with coverage report
|
|
|
|
|
+yarn test:cov
|
|
|
|
|
+
|
|
|
|
|
+# Run single test file by name pattern
|
|
|
|
|
+yarn test --testPathPattern=<test-name>
|
|
|
|
|
+
|
|
|
|
|
+# Run single test by exact path
|
|
|
|
|
+yarn test --testPathPattern=path/to/file.spec.ts
|
|
|
|
|
+
|
|
|
|
|
+# Run e2e tests
|
|
|
|
|
+yarn test:e2e
|
|
|
|
|
+
|
|
|
|
|
+# Debug tests
|
|
|
|
|
+yarn test:debug
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+**Examples of running single tests:**
|
|
|
|
|
+```bash
|
|
|
|
|
+# Run only auth service tests
|
|
|
|
|
+yarn test --testPathPattern=auth.service.spec
|
|
|
|
|
+
|
|
|
|
|
+# Run tests in specific file
|
|
|
|
|
+yarn test src/chat/chat.service.spec.ts
|
|
|
|
|
+
|
|
|
|
|
+# Run tests matching a pattern
|
|
|
|
|
+yarn test --testPathPattern="user.*service"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+**Note:** Frontend currently has no test framework configured.
|
|
|
|
|
+
|
|
|
|
|
+## Code Style Guidelines
|
|
|
|
|
+
|
|
|
|
|
+### Language Requirements
|
|
|
|
|
+- **Comments**: English
|
|
|
|
|
+- **Log messages**: English
|
|
|
|
|
+- **Error messages**: Internationalized (i18n) - support Japanese/Chinese/English based on user's language preference
|
|
|
|
|
+
|
|
|
|
|
+### Formatting
|
|
|
|
|
+- **Prettier**: Single quotes, trailing commas enabled
|
|
|
|
|
+- **ESLint**: TypeScript strict mode
|
|
|
|
|
+- **TypeScript**: Avoid `any` types, use explicit typing
|
|
|
|
|
+
|
|
|
|
|
+### Naming Conventions
|
|
|
|
|
+- **Variables/Functions**: `camelCase` (e.g., `getUserData`, `processDocument`)
|
|
|
|
|
+- **Classes/Interfaces/Types**: `PascalCase` (e.g., `UserService`, `UserDto`)
|
|
|
|
|
+- **Constants**: `SCREAMING_SNAKE_CASE` (e.g., `MAX_FILE_SIZE`, `DEFAULT_TIMEOUT`)
|
|
|
|
|
+- **Private members**: Prefix with underscore (e.g., `_privateMethod`)
|
|
|
|
|
+
|
|
|
|
|
+### Import Organization
|
|
|
|
|
+1. External libraries (npm packages)
|
|
|
|
|
+2. Internal modules (project imports)
|
|
|
|
|
+3. Relative imports (same directory)
|
|
|
|
|
+4. Use absolute imports where configured
|
|
|
|
|
+
|
|
|
|
|
+### Error Handling
|
|
|
|
|
+```typescript
|
|
|
|
|
+try {
|
|
|
|
|
+ // Operation logic
|
|
|
|
|
+} catch (error) {
|
|
|
|
|
+ this.logger.error('Operation failed', error);
|
|
|
|
|
+ throw new Error(this.i18n.t('errors.operationFailed'));
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Testing Guidelines
|
|
|
|
|
+- Place test files as `*.spec.ts` in same directory as source
|
|
|
|
|
+- Test file naming: `{serviceName}.spec.ts` or `{controllerName}.e2e-spec.ts`
|
|
|
|
|
+- Use descriptive test names (describe blocks and it blocks)
|
|
|
|
|
+- Mock external dependencies (APIs, databases)
|
|
|
|
|
+
|
|
|
|
|
+## Project Architecture
|
|
|
|
|
+
|
|
|
|
|
+### Directory Structure
|
|
|
|
|
+```
|
|
|
|
|
+auraAuraK/
|
|
|
|
|
+├── web/ # React frontend (Vite)
|
|
|
|
|
+│ ├── components/ # UI components
|
|
|
|
|
+│ ├── contexts/ # React Context providers
|
|
|
|
|
+│ ├── services/ # API client services
|
|
|
|
|
+│ └── utils/ # Utility functions
|
|
|
|
|
+├── server/ # NestJS backend
|
|
|
|
|
+│ ├── src/
|
|
|
|
|
+│ │ ├── ai/ # AI services (embedding, etc.)
|
|
|
|
|
+│ │ ├── api/ # API module
|
|
|
|
|
+│ │ ├── auth/ # JWT authentication
|
|
|
|
|
+│ │ ├── chat/ # Chat/RAG module
|
|
|
|
|
+│ │ ├── elasticsearch/ # Elasticsearch integration
|
|
|
|
|
+│ │ ├── import-task/ # Import task management
|
|
|
|
|
+│ │ ├── knowledge-base/ # Knowledge base management
|
|
|
|
|
+│ │ ├── libreoffice/ # LibreOffice integration
|
|
|
|
|
+│ │ ├── model-config/ # Model configuration management
|
|
|
|
|
+│ │ ├── vision/ # Vision model integration
|
|
|
|
|
+│ │ └── vision-pipeline/# Vision pipeline orchestration
|
|
|
|
|
+│ ├── data/ # SQLite database storage
|
|
|
|
|
+│ ├── uploads/ # Uploaded files storage
|
|
|
|
|
+│ └── temp/ # Temporary files
|
|
|
|
|
+├── docs/ # Documentation (Japanese/Chinese)
|
|
|
|
|
+├── nginx/ # Nginx configuration
|
|
|
|
|
+├── libreoffice-server/ # LibreOffice conversion service (Python/FastAPI)
|
|
|
|
|
+└── docker-compose.yml # Docker orchestration
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Key Concepts
|
|
|
|
|
+- **Dual Processing Modes**: Fast (Tika) vs High-Precision (Vision Pipeline)
|
|
|
|
|
+- **Multi-Model Support**: OpenAI-compatible APIs + Google Gemini
|
|
|
|
|
+- **RAG System**: Hybrid search with Elasticsearch, SSE streaming responses
|
|
|
|
|
+- **Authentication**: JWT-based user isolation
|
|
|
|
|
+- **Database**: SQLite with TypeORM
|
|
|
|
|
+
|
|
|
|
|
+## Reference
|
|
|
|
|
+
|
|
|
|
|
+See `CLAUDE.md` for comprehensive project documentation and `docs/DEVELOPMENT_STANDARDS.md` for detailed coding standards.
|