Metadata-Version: 2.4
Name: django-lucy-assist
Version: 1.4.1
Summary: Assistant IA intelligent Revolucy pour outil métier
Author-email: Revolucy <hello@revolucy.fr>
Maintainer-email: Maxence <hello@revolucy.fr>
License: MIT
Project-URL: Homepage, https://github.com/revolucy/django-lucy-assist
Project-URL: Documentation, https://github.com/revolucy/django-lucy-assist#readme
Project-URL: Repository, https://github.com/revolucy/django-lucy-assist.git
Project-URL: Issues, https://github.com/revolucy/django-lucy-assist/issues
Keywords: django,chatbot,ai,claude,anthropic,assistant,crm
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
Classifier: Framework :: Django :: 5.0
Classifier: Framework :: Django :: 5.1
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: Django>=4.0
Requires-Dist: anthropic>=0.40.0
Requires-Dist: cryptography>=41.0.0
Requires-Dist: requests>=2.28.0
Requires-Dist: Pillow>=9.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-django>=4.5.0; extra == "dev"
Requires-Dist: factory-boy>=3.3.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Provides-Extra: gitlab
Requires-Dist: python-gitlab>=3.15.0; extra == "gitlab"

# Django Lucy Assist

Assistant IA intelligent base sur Claude (Anthropic), integrable dans n'importe quelle application Django.

## Installation

```bash
pip install django-lucy-assist
```

## Configuration

### 1. Ajouter l'application a INSTALLED_APPS

```python
INSTALLED_APPS = [
    ...
    'lucy_assist',
]
```

### 2. Configurer le jeton projet Lucy

Un seul secret dans le `.env` : le jeton d'appairage du projet, généré par Lucy
(fiche projet > Intégrations). C'est le même que celui du module de retour.

```bash
# ======================================== LUCY ASSIST ========================================
LUCY_PROJET_TOKEN=jeton-d-appairage-du-projet
```

Puis dans votre `settings.py` :

```python
#############################################################################################################
# Lucy Assist
LUCY_PROJET_TOKEN = env('LUCY_PROJET_TOKEN', default=None)
LUCY_ASSIST = {'PROJECT_APPS_PREFIX': 'apps.'}
```

Ce jeton permet à Lucy Assist, de serveur à serveur uniquement :
- de récupérer le **jeton GitLab** du projet (stocké chiffré dans Lucy) et l'URL de l'instance GitLab ;
  le dépôt est déduit du jeton (un jeton de projet GitLab n'ouvre qu'un dépôt) ;
- de connaître le **chef de projet** à prévenir (feedbacks, bugs détectés) ;
- de demander la **facture d'achat de tokens**, envoyée par e-mail au client.

Plus de `GITLAB_URL`, `GITLAB_TOKEN`, `GITLAB_PROJECT_ID`, `SIREN_CLIENT` ni `ANTHROPIC_LUCY_API_KEY` dans le `.env`.

### 3. Ajouter les URLs

```python
# urls.py
from django.urls import path, include

urlpatterns = [
    ...
    path('lucy-assist/', include('lucy_assist.urls')),
]
```

### 4. Ajouter le context processor

```python
# settings.py
TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'lucy_assist.context_processors.lucy_assist_context',
            ],
        },
    },
]
```

### 5. Inclure le template dans votre base.html

```html
<!-- templates/base.html -->
{% include 'lucy_assist/chatbot_sidebar.html' %}
```

### 6. Executer les migrations

```bash
python manage.py migrate lucy_assist
```

### 7. Configurer l'IA dans l'admin

Dans l'admin Django, **Configuration Lucy Assist > Intelligence artificielle** :
- **Clé API Claude** (`sk-ant-…`) : stockée chiffrée en base (Fernet, clé dérivée du `SECRET_KEY`).
  Si le `SECRET_KEY` change, la clé devient illisible : il suffit de la ressaisir.
- **Modèle Claude** : `claude-haiku-5-5` par défaut.

Le prix de vente se règle dans la même page (10 € HT par million de tokens par défaut),
ainsi que la couleur de marque (marque blanche).

## Utilisation

Une fois installe et configure, Lucy Assist apparaitra automatiquement sur toutes les pages de votre application avec un bouton flottant en bas a droite.

### Fonctionnalites

- **Chat IA contextuel** : Lucy comprend le contexte de la page actuelle
- **Actions CRUD** : Lucy peut creer, modifier, rechercher et supprimer des objets
- **Analyse de bugs** : Connexion a GitLab pour analyser les problemes signales
- **Historique des conversations** : Sauvegarde automatique des conversations
- **Gestion des tokens** : Suivi de la consommation des tokens Claude

## Configuration avancee

### Modele de base personnalise

Si vous utilisez un modele de base personnalise avec des champs d'audit (created_date, updated_date, etc.), vous pouvez le configurer :

```python
LUCY_ASSIST = {
    'BASE_MODEL': 'mon_app.models.MonModeleBase',
}
```

### Modele Claude

Le modèle se règle dans l'admin (Configuration Lucy Assist), `claude-haiku-5-5` par défaut.

### Personnalisation des questions frequentes

```python
LUCY_ASSIST = {
    'QUESTIONS_FREQUENTES_DEFAULT': [
        "Comment creer un nouveau membre ?",
        "Comment effectuer un paiement ?",
        "Comment exporter des donnees ?",
    ],
}
```

## API

Lucy Assist expose plusieurs endpoints API :

- `GET /lucy-assist/api/conversations` - Liste des conversations
- `POST /lucy-assist/api/conversations` - Creer une conversation
- `GET /lucy-assist/api/conversations/<id>` - Detail d'une conversation
- `POST /lucy-assist/api/conversations/<id>/messages` - Ajouter un message
- `POST /lucy-assist/api/conversations/<id>/chat` - Generer une reponse (streaming)
- `GET /lucy-assist/api/tokens/status` - Statut des tokens

## Licence

[Revolucy](https://www.revolucy.fr)

### Lancer le serveur de test
python test_project/manage.py runserver

Ensuite, accède à :
- Page de test : http://localhost:8000/
- Module retour client : http://localhost:8000/retour/
- Admin Django : http://localhost:8000/admin/
- Lancement des tests sur les questions : python manage.py test_lucy

## Deploiement Pypi

1. `docker-compose exec django pip install build twine`
2. `docker-compose exec django python -m build`
3. `docker-compose exec django python -m twine upload dist/*`
4. Indiquer le token present dans 1Password
