---
title: "Project"
description: "Projektit ja tehtävät. Jokainen sovellus on moduuli samalla tietomallilla."
canonical: "https://obop-platform.sliplane.app/fi/apps/projects/"
lang: "fi"
---

# Project

## Mihin se on tarkoitettu

Plan work as projects, milestones and tasks with assignees and deadlines. Progress is tracked by status, which keeps the model simple; it is a good fit for small teams that want a shared board rather than effort accounting.

## Mitä paketti tekee ja mitä ei

Projects, milestones and tasks with assignees, deadlines and status flows. Progress is tracked by status, not computed from task effort.

## Mallit

### `projects_project`

A body of work with a goal

Lukuryhmä: `projects.user`. Kirjoitusryhmä: `projects.manager`.

| Kenttä | Tyyppi | Tietoluokka | Henkilötieto | Ryhmä | Agentit näkevät | Kuvaus |
|---|---|---|---|---|---|---|
| `name` | text | `none` | ei | `projects.user` | selkoisena | Project name |
| `code` | text | `none` | ei | `projects.user` | selkoisena | Short reference used in reports, for example WEB-24 |
| `project_manager` | text | `internal` | kyllä | `projects.user` | maskattu | Name of the person accountable for the project |
| `start_on` | date | `none` | ei | `projects.user` | selkoisena | Planned start date (YYYY-MM-DD) |
| `deadline` | date | `none` | ei | `projects.user` | selkoisena | Date the project must be finished (YYYY-MM-DD) |
| `budget` | money | `none` | ei | `projects.user` | selkoisena | Agreed budget for the project (minor currency units, e.g. cents) |
| `description` | longtext | `none` | ei | `projects.user` | selkoisena | Goal and scope of the project |
| `state` | select (planned, active, done) | `none` | ei | `projects.user` | selkoisena | Project status: planned, active, done |

### `projects_milestone`

A checkpoint in a project

Lukuryhmä: `projects.user`. Kirjoitusryhmä: `projects.manager`.

| Kenttä | Tyyppi | Tietoluokka | Henkilötieto | Ryhmä | Agentit näkevät | Kuvaus |
|---|---|---|---|---|---|---|
| `project_id` | ref → projects_project | `none` | ei | `projects.user` | selkoisena | The project the milestone belongs to |
| `name` | text | `none` | ei | `projects.user` | selkoisena | Milestone name, for example Design approved |
| `due_on` | date | `none` | ei | `projects.user` | selkoisena | Date the milestone is due (YYYY-MM-DD) |
| `description` | longtext | `none` | ei | `projects.user` | selkoisena | What must be true for the milestone to count as reached |
| `state` | select (pending, reached, missed) | `none` | ei | `projects.user` | selkoisena | Milestone status: pending, reached, missed |

### `projects_task`

A unit of work inside a project

Lukuryhmä: `projects.user`. Kirjoitusryhmä: `projects.user`.

| Kenttä | Tyyppi | Tietoluokka | Henkilötieto | Ryhmä | Agentit näkevät | Kuvaus |
|---|---|---|---|---|---|---|
| `title` | text | `none` | ei | `projects.user` | selkoisena | What needs doing |
| `project_id` | ref → projects_project | `none` | ei | `projects.user` | selkoisena | The project this task belongs to; empty for a private task |
| `milestone_id` | ref → projects_milestone | `none` | ei | `projects.user` | selkoisena | The milestone this task contributes to |
| `assignee` | text | `internal` | kyllä | `projects.user` | maskattu | Name of the person responsible |
| `priority` | select (low, normal, high) | `none` | ei | `projects.user` | selkoisena | How important the task is: low, normal, high |
| `due_on` | date | `none` | ei | `projects.user` | selkoisena | Date the task is due (YYYY-MM-DD) |
| `estimate_minutes` | number | `none` | ei | `projects.user` | selkoisena | Planned effort in minutes |
| `description` | longtext | `none` | ei | `projects.user` | selkoisena | Details, acceptance criteria and links |
| `state` | select (todo, doing, done, cancelled) | `none` | ei | `projects.user` | selkoisena | Task status: todo, doing, done, cancelled |

## Työnkulut

### `projects_project`

| Toiminto | Siirtää | Kuka voi suorittaa | Hyväksyntä |
|---|---|---|---|
| `projects_project.start` | state: planned → active | `projects.manager` | ei |
| `projects_project.finish` | state: active → done | `projects.manager` | ei |
| `projects_project.reopen` | state: done → active | `projects.manager` | ei |

### `projects_milestone`

| Toiminto | Siirtää | Kuka voi suorittaa | Hyväksyntä |
|---|---|---|---|
| `projects_milestone.reach` | state: pending → reached | `projects.manager` | ei |
| `projects_milestone.miss` | state: pending → missed | `projects.manager` | ei |

### `projects_task`

| Toiminto | Siirtää | Kuka voi suorittaa | Hyväksyntä |
|---|---|---|---|
| `projects_task.begin` | state: todo → doing | `projects.user` | ei |
| `projects_task.complete` | state: doing → done | `projects.user` | ei |
| `projects_task.cancel` | state: todo → cancelled | `projects.user` | ei |

## Käyttöoikeusryhmät

Tämän sovelluksen käyttämät ryhmät:

- `projects.manager`
- `projects.user`

## Hyväksyntävaiheet

Mikään tämän sovelluksen vaihe ei vaadi hyväksyntää tietueiden poistamista lukuun ottamatta.

## Mitä agentit voivat ja eivät voi tehdä

Agentti voi lukea, hakea, luoda ja päivittää tämän sovelluksen tietueita sekä suorittaa toiminnot, jotka eivät vaadi hyväksyntää, tunnisteensa käyttöoikeusryhmien rajoissa.

Se voi vain ehdottaa näitä vaiheita, ja ihmisen on hyväksyttävä ne: `projects_project.delete`, `projects_milestone.delete`, `projects_task.delete`.

Henkilötiedot maskataan paikkamerkeiksi: `projects_project.project_manager`, `projects_task.assignee`.

## Riippuvuudet

Ei ole.

## Asennus

Asenna se Customize-sovelluksesta (Marketplace) tai komentoriviltä:

```bash
obop modules install-from projects
```

Vaatii tietokannan ja ylläpitäjän oikeudet.

## Tee oma

[Moduulioppaassa näytetään, miten tällaiset sovellukset kirjoitetaan](/fi/docs/reference/module-manifest/)
