Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sustainability modules to mapping documentation #422

Merged
merged 22 commits into from
Nov 6, 2023
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
2604e0b
docs/cost: Restructure mapping documentation, add sustainability page
duncandewhurst Oct 17, 2023
39928d2
docs/cost/ids/sustainability.md: Add PDF download instructions
duncandewhurst Oct 17, 2023
1b6fe76
Add mapping/sustainability.yaml
duncandewhurst Nov 2, 2023
2faf176
mapping/sustainability.yaml: Fix syntax error
duncandewhurst Nov 2, 2023
0f0d799
mapping/sustainability.yaml: Lint Markdown
duncandewhurst Nov 2, 2023
01b48d8
mapping/sustainability.yaml: Lint examples
duncandewhurst Nov 2, 2023
d4f3a65
docs/cost/ids/sustainability.md: Add mapping documentation
duncandewhurst Nov 2, 2023
16e1ab0
manage.py: Add lint and update-sustainability-docs commands
duncandewhurst Nov 2, 2023
a57a934
manage.py: Sort imports
duncandewhurst Nov 2, 2023
34f460d
Update changelog
duncandewhurst Nov 2, 2023
fd1885c
manage.py: Add comments
duncandewhurst Nov 2, 2023
33c0f78
docs/cost/ids/sustainability.md: Correct typos
duncandewhurst Nov 2, 2023
6bc293f
mapping/sustainability.yaml: Remove placeholder text
duncandewhurst Nov 2, 2023
52ebd18
mapping/sustainability.yaml: Remove placeholder text
duncandewhurst Nov 2, 2023
a568b02
.github/workflows/spellcheck.yml: Ignore 'TNE'
duncandewhurst Nov 2, 2023
c6104c6
docs/cost/ids/core.md: Fix heading levels
duncandewhurst Nov 2, 2023
4df60d2
docs/cost/ocds.md: Fix heading levels, add introductory sentence
duncandewhurst Nov 6, 2023
c71446f
docs/cost/ids/core.md: Fix heading levels, add introductory sentence
duncandewhurst Nov 6, 2023
842c618
docs/cost/ids/index.md: Add content
duncandewhurst Nov 6, 2023
6384d14
docs/cost/index.md: Use sentence case, move some content to sub-pages
duncandewhurst Nov 6, 2023
c2f07cd
Apply suggestions from code review
duncandewhurst Nov 6, 2023
a198afb
docs/cost/ocds.md: Add note on reactive disclosures
duncandewhurst Nov 6, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/spellcheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ jobs:
with:
python-version: '3.10'
- run: pip install codespell
- run: codespell -S .git,docson,locale,currency.csv -L zar .
- run: codespell -S .git,docson,locale,currency.csv -L tne,zar .
19 changes: 19 additions & 0 deletions docs/cost/common.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Common operations

To avoid repetition in the mapping, we refer and link to the following common operations.

## Add a project document

Add a `Document` object to the `documents` array and set its fields as follows:

* Set its `.id` incrementally
* Set its `.url` to a direct link to the document
* Set its `.title` to the title of the document

## Add a contracting process document

Add a `Document` object to the `contractingProcesses.summary.documents` array and set its fields as follows:

* Set its `.id` incrementally
* Set its `.url` to a direct link to the document
* Set its `.title` to the title of the document
267 changes: 267 additions & 0 deletions docs/cost/ids/core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,267 @@
# Core standard

<style>
.wy-nav-content {
max-width: 1200px;
}
</style>

## Project level

### Identification

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/project-level-identification.csv
```

### Preparation

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/project-level-preparation.csv
```

### Project completion

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/project-level-completion.csv
```

### Reactive disclosures

#### Identification and preparation

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/reactive-project-level-identification-preparation.csv
```

#### Completion

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/reactive-project-level-completion.csv
```

#### Implementation progress reports
jpmckinney marked this conversation as resolved.
Show resolved Hide resolved

In addition to the documents listed in the mapping table, you can use OC4IDS to publish structured data on planned and actual physical and financial progress.

Choose from the following options, depending on the data you collect and the data needed by your use cases.

**Actual progress over time**

* Add a `Metric` object to the `metrics` array and:
* For financial progress, set its `id` to 'financialProgress' and set its title to 'Financial progress', or the equivalent in the language of your publication.
* For physical progress, set its `id` to 'physicalProgress' and set its title to 'Physical progress', or the equivalent in the language of your publication.
* For each progress update, add an `Observation` object to the `Metric` object's `.observations` array and:
* Set its `.id` incrementally
* Set its `.measure` to the financial progress of the project. For example, for a project that is 75% complete, set `.measure` to `75`
* Set its `.unit.name` to 'percent', set its `unit.id` to 'P1' and set its `unit.scheme` to 'UNCEFACT'
* Set its `period.startDate` and `period.endDate` to the date on which the financial progress was measured

*Example:*

```json
{
"metrics": [
{
"id": "physicalProgress",
"title": "Physical progress",
"observations": [
{
"id": "1",
"measure": "4.04",
"unit": {
"name": "percent",
"id": "P1",
"scheme": "UNCEFACT"
},
"period": {
"startDate": "2017-03-31T23:59:59Z",
"endDate": "2017-03-31T23:59:59Z"
}
},
{
"id": "2",
"measure": "7.98",
"unit": {
"name": "percent",
"id": "P1",
"scheme": "UNCEFACT"
},
"period": {
"startDate": "2017-04-30T23:59:59Z",
"endDate": "2017-04-30T23:59:59Z"
}
},
{
"id": "3",
"measure": "8.38",
"unit": {
"name": "percent",
"id": "P1",
"scheme": "UNCEFACT"
},
"period": {
"startDate": "2017-05-31T23:59:59Z",
"endDate": "2017-05-31T23:59:59Z"
}
}
]
}
]
}
```

**A single progress figure**

If your implementation does not store a change history, you can publish a single `Observation` object for each `Metric` and update the `Observation` object's `.measure` each time there is a progress update.

*Example:*

```json
{
"metrics": [
{
"id": "financialProgress",
"title": "Financial progress",
"observations": [
{
"id": "1",
"measure": "4.04",
"unit": {
"name": "percent",
"id": "P1",
"scheme": "UNCEFACT"
},
"period": {
"startDate": "2017-03-31T23:59:59Z",
"endDate": "2017-03-31T23:59:59Z"
}
}
]
}
]
}
```

**Planned progress over time**

You can use the `forecasts` array to publish progress forecasts for different points in time.

* Add a `Metric` object to the `forecasts` array and:
* For financial progress, set its `id` to 'financialProgress' and set its title to 'Financial progress', or the equivalent in the language of your publication.
* For physical progress, set its `id` to 'physicalProgress' and set its title to 'Physical progress', or the equivalent in the language of your publication.
* For each forecast, add an `Observation` object to the `Metric` object's `.observations` array and:
* Set its `.id` incrementally
* Set its `.measure` to the forecast progress of the project. For example, to forecast when the project is expected to be complete, set `.measure` to `100`.
* Set its `.unit.name` to 'percent', set its `unit.id` to 'P1' and set its `unit.scheme` to 'UNCEFACT'
* Set its `period.startDate` and `period.endDate` to the date on which you expect the progress to be achieved

*Example:*

```json
{
"forecasts": [
{
"id": "physicalProgress",
"title": "Physical progress",
"observations": [
{
"id": "1",
"measure": "4.04",
"unit": {
"name": "percent",
"id": "P1",
"scheme": "UNCEFACT"
},
"period": {
"startDate": "2017-03-31T23:59:59Z",
"endDate": "2017-03-31T23:59:59Z"
}
},
{
"id": "2",
"measure": "7.98",
"unit": {
"name": "percent",
"id": "P1",
"scheme": "UNCEFACT"
},
"period": {
"startDate": "2017-04-30T23:59:59Z",
"endDate": "2017-04-30T23:59:59Z"
}
},
{
"id": "3",
"measure": "8.38",
"unit": {
"name": "percent",
"id": "P1",
"scheme": "UNCEFACT"
},
"period": {
"startDate": "2017-05-31T23:59:59Z",
"endDate": "2017-05-31T23:59:59Z"
}
}
]
}
]
}
```

## Process level

The mappings in this section relate to the `contractingProcesses` section of the OC4IDS schema, unless otherwise specified.

### Procurement

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/process-level-procurement.csv
```

### Implementation

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/process-level-implementation.csv
```

### Reactive disclosures

#### Procurement

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/reactive-process-level-procurement.csv
```

#### Contract

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/reactive-process-level-contract.csv
```

#### Implementation

```{csv-table-no-translate}
:header-rows: 1
:included_cols: 0,1,2
:file: ../../../build/current_lang/reactive-process-level-implementation.csv
```
10 changes: 10 additions & 0 deletions docs/cost/ids/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# CoST IDS to OC4IDS Mapping

```{toctree}
:maxdepth: 1
:hidden:

core
sustainability

```
Loading