Compare commits
2 Commits
91b9e08e9d
...
f01341a707
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f01341a707 | ||
|
|
42f5d5ac85 |
5
.claude/commands/branch-plan-handover.md
Normal file
5
.claude/commands/branch-plan-handover.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
Create a new branch, save the detailed implementation plan to a markdown file for context handover to another session, then stop.
|
||||||
|
|
||||||
|
1. **Create new branch** with descriptive name based on current task
|
||||||
|
2. **Save the implementation plan** you created earlier in this session to a markdown file in the project root
|
||||||
|
3. **Stop execution** - do not commit anything, just prepare the context for handover to another session
|
||||||
8
.claude/commands/context-handover.md
Normal file
8
.claude/commands/context-handover.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Save detailed context about the current problem to a markdown file for handover to another session due to context limit reached.
|
||||||
|
|
||||||
|
1. **Create context handover file** in project root: `CONTEXT_HANDOVER_[TIMESTAMP].md`
|
||||||
|
2. **Document the current problem** being worked on with all relevant details and analysis
|
||||||
|
3. **Include current progress** - what has been discovered, analyzed, or attempted so far
|
||||||
|
4. **List key files examined** and their relevance to the problem
|
||||||
|
5. **Save current state** - todos, findings, next steps, and any constraints
|
||||||
|
6. **Stop execution** - context is now ready for a fresh session to continue the work
|
||||||
4
.claude/commands/plan-handover.md
Normal file
4
.claude/commands/plan-handover.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Save the detailed implementation plan to a markdown file for context handover to another session, then stop.
|
||||||
|
|
||||||
|
1. **Save the implementation plan** you created earlier in this session to a markdown file in the project root
|
||||||
|
2. **Stop execution** - do not commit anything, just prepare the context for handover to another session
|
||||||
116
.claude/commands/ultimate_validate_command.md
Normal file
116
.claude/commands/ultimate_validate_command.md
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
---
|
||||||
|
description: Generate comprehensive validation command for this codebase
|
||||||
|
---
|
||||||
|
|
||||||
|
# Generate Ultimate Validation Command
|
||||||
|
|
||||||
|
Analyze this codebase deeply and create `.claude/commands/validate.md` that comprehensively validates everything.
|
||||||
|
|
||||||
|
## Step 0: Discover Real User Workflows
|
||||||
|
|
||||||
|
**Before analyzing tooling, understand what users ACTUALLY do:**
|
||||||
|
|
||||||
|
1. Read workflow documentation:
|
||||||
|
- README.md - Look for "Usage", "Quickstart", "Examples" sections
|
||||||
|
- CLAUDE.md/AGENTS.md or similar - Look for workflow patterns
|
||||||
|
- docs/ folder - User guides, tutorials
|
||||||
|
|
||||||
|
2. Identify external integrations:
|
||||||
|
- What CLIs does the app use? (Check Dockerfile for installed tools)
|
||||||
|
- What external APIs does it call? (Telegram, Slack, GitHub, etc.)
|
||||||
|
- What services does it interact with?
|
||||||
|
|
||||||
|
3. Extract complete user journeys from docs:
|
||||||
|
- Find examples like "Fix Issue (GitHub):" or "User does X → then Y → then Z"
|
||||||
|
- Each workflow becomes an E2E test scenario
|
||||||
|
|
||||||
|
**Critical: Your E2E tests should mirror actual workflows from docs, not just test internal APIs.**
|
||||||
|
|
||||||
|
## Step 1: Deep Codebase Analysis
|
||||||
|
|
||||||
|
Explore the codebase to understand:
|
||||||
|
|
||||||
|
**What validation tools already exist:**
|
||||||
|
- Linting config: `.eslintrc*`, `.pylintrc`, `ruff.toml`, etc.
|
||||||
|
- Type checking: `tsconfig.json`, `mypy.ini`, etc.
|
||||||
|
- Style/formatting: `.prettierrc*`, `black`, `.editorconfig`
|
||||||
|
- Unit tests: `jest.config.*`, `pytest.ini`, test directories
|
||||||
|
- Package manager scripts: `package.json` scripts, `Makefile`, `pyproject.toml` tools
|
||||||
|
|
||||||
|
**What the application does:**
|
||||||
|
- Frontend: Routes, pages, components, user flows
|
||||||
|
- Backend: API endpoints, authentication, database operations
|
||||||
|
- Database: Schema, migrations, models
|
||||||
|
- Infrastructure: Docker services, dependencies
|
||||||
|
|
||||||
|
**How things are currently tested:**
|
||||||
|
- Existing test files and patterns
|
||||||
|
- CI/CD workflows (`.github/workflows/`, etc.)
|
||||||
|
- Test commands in package.json or scripts
|
||||||
|
|
||||||
|
## Step 2: Generate validate.md
|
||||||
|
|
||||||
|
Create `.claude/commands/validate.md` with these phases (ONLY include phases that exist in the codebase):
|
||||||
|
|
||||||
|
### Phase 1: Linting
|
||||||
|
Run the actual linter commands found in the project (e.g., `npm run lint`, `ruff check`, etc.)
|
||||||
|
|
||||||
|
### Phase 2: Type Checking
|
||||||
|
Run the actual type checker commands found (e.g., `tsc --noEmit`, `mypy .`, etc.)
|
||||||
|
|
||||||
|
### Phase 3: Style Checking
|
||||||
|
Run the actual formatter check commands found (e.g., `prettier --check`, `black --check`, etc.)
|
||||||
|
|
||||||
|
### Phase 4: Unit Testing
|
||||||
|
Run the actual test commands found (e.g., `npm test`, `pytest`, etc.)
|
||||||
|
|
||||||
|
### Phase 5: End-to-End Testing (BE CREATIVE AND COMPREHENSIVE)
|
||||||
|
|
||||||
|
Test COMPLETE user workflows from documentation, not just internal APIs.
|
||||||
|
|
||||||
|
**The Three Levels of E2E Testing:**
|
||||||
|
|
||||||
|
1. **Internal APIs** (what you might naturally test):
|
||||||
|
- Test adapter endpoints work
|
||||||
|
- Database queries succeed
|
||||||
|
- Commands execute
|
||||||
|
|
||||||
|
2. **External Integrations** (what you MUST test):
|
||||||
|
- CLI operations (GitHub CLI create issue/PR, etc.)
|
||||||
|
- Platform APIs (send Telegram message, post Slack message)
|
||||||
|
- Any external services the app depends on
|
||||||
|
|
||||||
|
3. **Complete User Journeys** (what gives 100% confidence):
|
||||||
|
- Follow workflows from docs start-to-finish
|
||||||
|
- Example: "User asks bot to fix GitHub issue" → Bot clones repo → Makes changes → Creates PR → Comments on issue
|
||||||
|
- Test like a user would actually use the application in production
|
||||||
|
|
||||||
|
**Examples of good vs. bad E2E tests:**
|
||||||
|
- ❌ Bad: Tests that `/clone` command stores data in database
|
||||||
|
- ✅ Good: Clone repo → Load commands → Execute command → Verify git commit created
|
||||||
|
- ✅ Great: Create GitHub issue → Bot receives webhook → Analyzes issue → Creates PR → Comments on issue with PR link
|
||||||
|
|
||||||
|
**Approach:**
|
||||||
|
- Use Docker for isolated, reproducible testing
|
||||||
|
- Create test data/repos/issues as needed
|
||||||
|
- Verify outcomes in external systems (GitHub, database, file system)
|
||||||
|
- Clean up after tests
|
||||||
|
|
||||||
|
## Critical: Don't Stop Until Everything is Validated
|
||||||
|
|
||||||
|
**Your job is to create a validation command that leaves NO STONE UNTURNED.**
|
||||||
|
|
||||||
|
- Every user workflow from docs should be tested end-to-end
|
||||||
|
- Every external integration should be exercised (GitHub CLI, APIs, etc.)
|
||||||
|
- Every API endpoint should be hit
|
||||||
|
- Every error case should be verified
|
||||||
|
- Database integrity should be confirmed
|
||||||
|
- The validation should be so thorough that manual testing is completely unnecessary
|
||||||
|
|
||||||
|
If /validate passes, the user should have 100% confidence their application works correctly in production. Don't settle for partial coverage - make it comprehensive, creative, and complete.
|
||||||
|
|
||||||
|
## Output
|
||||||
|
|
||||||
|
Write the generated validation command to `.claude/commands/validate.md`
|
||||||
|
|
||||||
|
The command should be executable, practical, and give complete confidence in the codebase.
|
||||||
141
chatbot/infrastructura.md
Normal file
141
chatbot/infrastructura.md
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
# Infrastructura Chatbot Maria
|
||||||
|
|
||||||
|
## Componente
|
||||||
|
|
||||||
|
| Componenta | Locație | IP | Port |
|
||||||
|
|------------|---------|-----|------|
|
||||||
|
| Flowise | LXC 104 | 10.0.20.161 | 3000 |
|
||||||
|
| ngrok tunnel | LXC 104 | 10.0.20.161 | - |
|
||||||
|
| Pagina chatbot | romfast.ro | - | 443 |
|
||||||
|
|
||||||
|
## Configurare Flowise
|
||||||
|
|
||||||
|
**Serviciu systemd**: `/etc/systemd/system/flowise.service`
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=Flowise Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
Group=root
|
||||||
|
ExecStart=/usr/bin/npx flowise start
|
||||||
|
Restart=always
|
||||||
|
Environment=PORT=3000
|
||||||
|
Environment=FLOWISE_USERNAME=admin
|
||||||
|
Environment=FLOWISE_PASSWORD=parola28
|
||||||
|
Environment=CORS_ORIGINS=https://www.romfast.ro,https://romfast.ro
|
||||||
|
WorkingDirectory=/root/.flowise
|
||||||
|
Environment=FLOWISE_DATABASE_PATH=/root/.flowise/database.sqlite
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
**Comenzi utile**:
|
||||||
|
```bash
|
||||||
|
# Status
|
||||||
|
pct exec 104 -- systemctl status flowise
|
||||||
|
|
||||||
|
# Restart
|
||||||
|
pct exec 104 -- systemctl restart flowise
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
pct exec 104 -- journalctl -u flowise -f
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configurare ngrok
|
||||||
|
|
||||||
|
**Configurare**: `/root/.config/ngrok/ngrok.yml`
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: "2"
|
||||||
|
authtoken: 2mo9quiDc23B6U3TtTqWJEleEfM_jYeD1KYe9u7njaaQMZg2
|
||||||
|
tunnels:
|
||||||
|
web:
|
||||||
|
proto: http
|
||||||
|
addr: http://10.0.20.161:3000
|
||||||
|
domain: mutual-special-koala.ngrok-free.app
|
||||||
|
```
|
||||||
|
|
||||||
|
**Serviciu systemd**: `/etc/systemd/system/ngrok.service`
|
||||||
|
|
||||||
|
**URL public**: https://mutual-special-koala.ngrok-free.app
|
||||||
|
|
||||||
|
**API endpoint chatbot**:
|
||||||
|
```
|
||||||
|
POST https://mutual-special-koala.ngrok-free.app/api/v1/prediction/d4911620-07fe-41f8-adb4-f2f52d6ec766
|
||||||
|
```
|
||||||
|
|
||||||
|
**Comenzi utile**:
|
||||||
|
```bash
|
||||||
|
# Status
|
||||||
|
pct exec 104 -- systemctl status ngrok
|
||||||
|
|
||||||
|
# Restart
|
||||||
|
pct exec 104 -- systemctl restart ngrok
|
||||||
|
|
||||||
|
# Verificare tunel activ
|
||||||
|
pct exec 104 -- curl -s http://localhost:4040/api/tunnels
|
||||||
|
|
||||||
|
# Verificare versiune
|
||||||
|
pct exec 104 -- /usr/local/bin/ngrok --version
|
||||||
|
|
||||||
|
# Actualizare ngrok
|
||||||
|
pct exec 104 -- /usr/local/bin/ngrok update
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Eroare CORS
|
||||||
|
**Simptom**: Browser-ul afișează eroare CORS când se încarcă chatbot-ul.
|
||||||
|
|
||||||
|
**Cauza**: Flowise nu are configurată variabila `CORS_ORIGINS`.
|
||||||
|
|
||||||
|
**Soluție**: Adaugă în `/etc/systemd/system/flowise.service`:
|
||||||
|
```
|
||||||
|
Environment=CORS_ORIGINS=https://www.romfast.ro,https://romfast.ro
|
||||||
|
```
|
||||||
|
Apoi: `systemctl daemon-reload && systemctl restart flowise`
|
||||||
|
|
||||||
|
### Eroare ngrok versiune veche (ERR_NGROK_121)
|
||||||
|
**Simptom**: În logs apare:
|
||||||
|
```
|
||||||
|
Your ngrok-agent version "3.16.0" is too old. The minimum supported agent version is "3.19.0"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Cauza**: ngrok a fost actualizat dar serviciul nu a fost restartat. Procesul vechi continuă să ruleze.
|
||||||
|
|
||||||
|
**Soluție**:
|
||||||
|
```bash
|
||||||
|
# Actualizare (dacă nu e deja făcută)
|
||||||
|
pct exec 104 -- /usr/local/bin/ngrok update
|
||||||
|
|
||||||
|
# IMPORTANT: Restart după actualizare
|
||||||
|
pct exec 104 -- systemctl restart ngrok
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verificare rapidă că totul funcționează
|
||||||
|
```bash
|
||||||
|
# Test local Flowise
|
||||||
|
pct exec 104 -- curl -s http://localhost:3000/ | head -5
|
||||||
|
|
||||||
|
# Test tunel ngrok
|
||||||
|
curl -s "https://mutual-special-koala.ngrok-free.app/api/v1/prediction/d4911620-07fe-41f8-adb4-f2f52d6ec766" \
|
||||||
|
-X POST -H "Content-Type: application/json" \
|
||||||
|
-d '{"question":"test"}'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pagina web
|
||||||
|
|
||||||
|
URL: https://www.romfast.ro/chatbot_maria.html
|
||||||
|
|
||||||
|
Pagina încarcă widget-ul Flowise care se conectează la endpoint-ul ngrok.
|
||||||
|
|
||||||
|
## Istoric incidente
|
||||||
|
|
||||||
|
### 2025-12-30: Chatbot nu funcționa (CORS + ngrok versiune)
|
||||||
|
- **Problemă 1**: Flowise nu avea CORS configurat
|
||||||
|
- **Problemă 2**: ngrok rula versiunea 3.16.0 (actualizată dar nerestartat din octombrie)
|
||||||
|
- **Soluție**: Adăugat CORS_ORIGINS și restart la ambele servicii
|
||||||
Reference in New Issue
Block a user