Document TaskStream boards in the README and .env.example
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
15
.env.example
15
.env.example
@@ -186,3 +186,18 @@ GIT_SYNC_CRON=hourly
|
|||||||
GIT_SYNC_TTL=55
|
GIT_SYNC_TTL=55
|
||||||
GIT_MAX_ISSUES=25
|
GIT_MAX_ISSUES=25
|
||||||
GIT_HTTP_TIMEOUT=15
|
GIT_HTTP_TIMEOUT=15
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# TaskStream — the issue tracker
|
||||||
|
###############################################################################
|
||||||
|
# `taskstream: true` on POST /v1/projects opens a public board there too.
|
||||||
|
# Both default to production.
|
||||||
|
TASKSTREAM_API_URL=https://api.taskstream.pireon.dev
|
||||||
|
TASKSTREAM_WEB_URL=https://taskstream.pireon.dev
|
||||||
|
|
||||||
|
# A Pireon personal access token (oauth.pireon.dev/tokens), only used when the
|
||||||
|
# caller signs in with a machine token (pmt_…), which TaskStream cannot read.
|
||||||
|
# People with a Pireon token have theirs passed on instead. Empty: machine
|
||||||
|
# tokens cannot ask for a board.
|
||||||
|
TASKSTREAM_TOKEN=
|
||||||
|
TASKSTREAM_HTTP_TIMEOUT=10
|
||||||
|
|||||||
40
README.md
40
README.md
@@ -525,6 +525,46 @@ fuera. Añadir GitLab es escribir una clase que implemente
|
|||||||
[`RepositoryProvider`](app/Services/Git/Contracts/RepositoryProvider.php) y
|
[`RepositoryProvider`](app/Services/Git/Contracts/RepositoryProvider.php) y
|
||||||
registrarla en `config/git.php`, sin tocar nada más.
|
registrarla en `config/git.php`, sin tocar nada más.
|
||||||
|
|
||||||
|
## Tableros en TaskStream
|
||||||
|
|
||||||
|
Al crear un proyecto por la API, `taskstream: true` le abre también un tablero
|
||||||
|
en [TaskStream](https://taskstream.pireon.dev), el gestor de tareas del
|
||||||
|
colectivo, y la respuesta trae el enlace:
|
||||||
|
|
||||||
|
```json
|
||||||
|
POST /api/v1/projects
|
||||||
|
{ "title": { "es": "Catálogo abierto" }, "slug": { "es": "catalogo" }, "taskstream": true }
|
||||||
|
|
||||||
|
→ 201 { "data": { …, "taskstream_key": "CATALOGO", "taskstream_url": "https://taskstream.pireon.dev/p/CATALOGO" } }
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Público** siempre: es el tablero de un proyecto que se enseña.
|
||||||
|
- **Clave**: la de `taskstream_key` (de 2 a 10 letras o cifras, empezando por
|
||||||
|
letra) o, si no se indica, una sacada del slug en el idioma por defecto: de
|
||||||
|
una palabra, sus diez primeros caracteres (`catalogo` → `CATALOGO`); de
|
||||||
|
varias, sus iniciales (`mi-web-nueva` → `MWN`).
|
||||||
|
- **Primero TaskStream**: si lo rechaza (una clave ya usada, por ejemplo), aquí
|
||||||
|
no se crea nada y el motivo vuelve como error de validación (422); si no
|
||||||
|
responde, 502. Así no quedan proyectos a medias ni webhooks de algo que no
|
||||||
|
existe.
|
||||||
|
- **A nombre de quien lo pide**: TaskStream acepta los mismos tokens de Pireon
|
||||||
|
que esta API, y se le pasa el de quien llama. Un token de máquina (`pmt_…`)
|
||||||
|
allí no significa nada, así que esas peticiones usan `TASKSTREAM_TOKEN`; sin
|
||||||
|
él, no pueden pedir tablero.
|
||||||
|
- Solo al crear: en una edición los dos campos se ignoran, y un proyecto
|
||||||
|
duplicado no hereda el tablero del original.
|
||||||
|
|
||||||
|
```dotenv
|
||||||
|
TASKSTREAM_API_URL=https://api.taskstream.pireon.dev # por defecto
|
||||||
|
TASKSTREAM_WEB_URL=https://taskstream.pireon.dev # de aquí sale el enlace
|
||||||
|
TASKSTREAM_TOKEN= # token personal de Pireon, solo para tokens de máquina
|
||||||
|
TASKSTREAM_HTTP_TIMEOUT=10
|
||||||
|
```
|
||||||
|
|
||||||
|
El cliente está en [`TaskStreamClient`](app/Services/TaskStream/TaskStreamClient.php)
|
||||||
|
y la lógica (clave, token, errores) en
|
||||||
|
[`OpenInTaskStream`](app/Actions/Projects/OpenInTaskStream.php).
|
||||||
|
|
||||||
## API pública (para el frontend)
|
## API pública (para el frontend)
|
||||||
|
|
||||||
Sin autenticación y de solo lectura. Todo lo que devuelve ya está publicado en
|
Sin autenticación y de solo lectura. Todo lo que devuelve ya está publicado en
|
||||||
|
|||||||
Reference in New Issue
Block a user