From 0ea2ed61cf16b36e34fe65d61c857bff77c8fc95 Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Fri, 1 Jul 2022 12:20:33 +0200 Subject: [PATCH] chore: commit save point --- .idea/runConfigurations/changelog_print.xml | 12 + .idea/runConfigurations/documents_add.xml | 12 + .idea/runConfigurations/tasks_print.xml | 12 + .idea/runConfigurations/version.xml | 12 + README.md | 69 +-- application/source/changelog.go | 9 +- application/source/commandline.go | 98 +--- application/source/commandlineoptions.go | 47 +- application/source/config.go | 2 +- application/source/defaults.go | 28 +- application/source/documents.go | 142 ++++++ application/source/files.go | 14 +- application/source/gitlab.go | 377 --------------- application/source/issues.go | 157 ------- application/source/items.go | 127 ----- application/source/l10n.go | 9 +- application/source/main.go | 4 +- application/source/overview.go | 24 +- application/source/privacy.go | 95 ---- application/source/requirements.go | 432 ------------------ application/source/tasks.go | 2 +- application/source/util.go | 34 +- development/examples/example1/1425.md | 145 ------ development/examples/example1/144444.md | 160 ------- development/examples/example1/feature-1.md | 13 + development/examples/example1/req1/1/test1.md | 176 ------- development/examples/example1/req1/1/test2.md | 142 ------ development/examples/example1/req1/1/test3.md | 142 ------ development/examples/example1/req1/1/test4.md | 142 ------ development/examples/example1/req1/2/test1.md | 142 ------ development/examples/example1/req1/2/test2.md | 142 ------ development/examples/example1/req1/2/test3.md | 142 ------ development/examples/example1/req1/2/test4.md | 142 ------ development/examples/example1/req1/2/test5.md | 142 ------ development/examples/example1/req1/2/test6.md | 142 ------ development/examples/example1/req1/3/test1.md | 142 ------ development/examples/example1/req1/3/test2.md | 142 ------ development/examples/example1/req1/3/test3.md | 142 ------ development/examples/example1/req1/3/test4.md | 142 ------ development/examples/example1/req1/3/test5.md | 142 ------ development/examples/example1/req1/3/test6.md | 142 ------ development/examples/example1/req1/3/test7.md | 142 ------ development/examples/example1/req1/4/test1.md | 142 ------ development/examples/example1/req1/4/test2.md | 142 ------ development/examples/example1/req1/4/test3.md | 142 ------ development/examples/example1/req1/4/test4.md | 142 ------ development/examples/example1/req1/5/test1.md | 143 ------ development/examples/example1/req1/5/test2.md | 142 ------ development/examples/example1/req1/6/test1.md | 142 ------ development/examples/example1/req1/6/test2.md | 142 ------ 50 files changed, 320 insertions(+), 5301 deletions(-) create mode 100644 .idea/runConfigurations/changelog_print.xml create mode 100644 .idea/runConfigurations/documents_add.xml create mode 100644 .idea/runConfigurations/tasks_print.xml create mode 100644 .idea/runConfigurations/version.xml create mode 100644 application/source/documents.go delete mode 100644 application/source/gitlab.go delete mode 100644 application/source/issues.go delete mode 100644 application/source/items.go delete mode 100644 application/source/privacy.go delete mode 100644 application/source/requirements.go delete mode 100644 development/examples/example1/1425.md delete mode 100644 development/examples/example1/144444.md create mode 100644 development/examples/example1/feature-1.md delete mode 100644 development/examples/example1/req1/1/test1.md delete mode 100644 development/examples/example1/req1/1/test2.md delete mode 100644 development/examples/example1/req1/1/test3.md delete mode 100644 development/examples/example1/req1/1/test4.md delete mode 100644 development/examples/example1/req1/2/test1.md delete mode 100644 development/examples/example1/req1/2/test2.md delete mode 100644 development/examples/example1/req1/2/test3.md delete mode 100644 development/examples/example1/req1/2/test4.md delete mode 100644 development/examples/example1/req1/2/test5.md delete mode 100644 development/examples/example1/req1/2/test6.md delete mode 100644 development/examples/example1/req1/3/test1.md delete mode 100644 development/examples/example1/req1/3/test2.md delete mode 100644 development/examples/example1/req1/3/test3.md delete mode 100644 development/examples/example1/req1/3/test4.md delete mode 100644 development/examples/example1/req1/3/test5.md delete mode 100644 development/examples/example1/req1/3/test6.md delete mode 100644 development/examples/example1/req1/3/test7.md delete mode 100644 development/examples/example1/req1/4/test1.md delete mode 100644 development/examples/example1/req1/4/test2.md delete mode 100644 development/examples/example1/req1/4/test3.md delete mode 100644 development/examples/example1/req1/4/test4.md delete mode 100644 development/examples/example1/req1/5/test1.md delete mode 100644 development/examples/example1/req1/5/test2.md delete mode 100644 development/examples/example1/req1/6/test1.md delete mode 100644 development/examples/example1/req1/6/test2.md diff --git a/.idea/runConfigurations/changelog_print.xml b/.idea/runConfigurations/changelog_print.xml new file mode 100644 index 0000000..29352a7 --- /dev/null +++ b/.idea/runConfigurations/changelog_print.xml @@ -0,0 +1,12 @@ +<component name="ProjectRunConfigurationManager"> + <configuration default="false" name="changelog print" type="GoApplicationRunConfiguration" factoryName="Go Application"> + <module name="documentation-manager" /> + <working_directory value="$PROJECT_DIR$/development/examples/example1" /> + <parameters value="changelog print " /> + <kind value="DIRECTORY" /> + <directory value="$PROJECT_DIR$/application/source" /> + <filePath value="$PROJECT_DIR$" /> + <output_directory value="$PROJECT_DIR$/deployment/build" /> + <method v="2" /> + </configuration> +</component> \ No newline at end of file diff --git a/.idea/runConfigurations/documents_add.xml b/.idea/runConfigurations/documents_add.xml new file mode 100644 index 0000000..6da5594 --- /dev/null +++ b/.idea/runConfigurations/documents_add.xml @@ -0,0 +1,12 @@ +<component name="ProjectRunConfigurationManager"> + <configuration default="false" name="documents add" type="GoApplicationRunConfiguration" factoryName="Go Application"> + <module name="documentation-manager" /> + <working_directory value="$PROJECT_DIR$/development/examples/example1" /> + <parameters value="documents add" /> + <kind value="DIRECTORY" /> + <directory value="$PROJECT_DIR$/application/source" /> + <filePath value="$PROJECT_DIR$" /> + <output_directory value="$PROJECT_DIR$/deployment/build" /> + <method v="2" /> + </configuration> +</component> \ No newline at end of file diff --git a/.idea/runConfigurations/tasks_print.xml b/.idea/runConfigurations/tasks_print.xml new file mode 100644 index 0000000..a56a726 --- /dev/null +++ b/.idea/runConfigurations/tasks_print.xml @@ -0,0 +1,12 @@ +<component name="ProjectRunConfigurationManager"> + <configuration default="false" name="tasks print" type="GoApplicationRunConfiguration" factoryName="Go Application"> + <module name="documentation-manager" /> + <working_directory value="$PROJECT_DIR$/development/examples/example1" /> + <parameters value="tasks print" /> + <kind value="DIRECTORY" /> + <directory value="$PROJECT_DIR$/application/source" /> + <filePath value="$PROJECT_DIR$" /> + <output_directory value="$PROJECT_DIR$/deployment/build" /> + <method v="2" /> + </configuration> +</component> \ No newline at end of file diff --git a/.idea/runConfigurations/version.xml b/.idea/runConfigurations/version.xml new file mode 100644 index 0000000..f99562c --- /dev/null +++ b/.idea/runConfigurations/version.xml @@ -0,0 +1,12 @@ +<component name="ProjectRunConfigurationManager"> + <configuration default="false" name="version" type="GoApplicationRunConfiguration" factoryName="Go Application"> + <module name="documentation-manager" /> + <working_directory value="$PROJECT_DIR$" /> + <parameters value="version" /> + <kind value="DIRECTORY" /> + <directory value="$PROJECT_DIR$/application/source" /> + <filePath value="$PROJECT_DIR$" /> + <output_directory value="$PROJECT_DIR$/deployment/build" /> + <method v="2" /> + </configuration> +</component> \ No newline at end of file diff --git a/README.md b/README.md index 321c6b3..7195863 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Documentation Manager -This tool helps to manage requirements written in Markdown. +This tool helps to manage documentation written in Markdown. ## Install @@ -15,25 +15,14 @@ chmod u+x docman ## Commands +### General Parameters + The date format for the output can be specified with the parameter `--date-format`. -The format can be looked up in the first column of the table below. -| Layout | Java notation | C notation | Notes | -| ------------------ | --------------- | ------------ | ---------- | -| 2006-01-02 | yyyy-MM-dd | %F | ISO 8601 | -| 20060102 | yyyyMMdd | %Y%m%d | ISO 8601 | -| January 02, 2006 | MMMM dd, yyyy | %B %d, %Y | | -| 02 January 2006 | dd MMMM yyyy | %d %B %Y | | -| 02-Jan-2006 | dd-MMM-yyyy | %d-%b-%Y | | -| 01/02/06 | MM/dd/yy | %D | US | -| 01/02/2006 | MM/dd/yyyy | %m/%d/%Y | US | -| 010206 | MMddyy | %m%d%y | US | -| Jan-02-06 | MMM-dd-yy | %b-%d-%y | US | -| Jan-02-2006 | MMM-dd-yyyy | %b-%d-%Y | US | -| 06 | yy | %y | | -| Mon | EEE | %a | | -| Monday | EEEE | %A | | -| Jan-06 | MMM-yy | %b-%y | | +All configuration values can also be specified in a configuration file. +The configuration file can be specified with the `--config` parameter. + +The parameter `path` specifies the path. ### Help @@ -42,16 +31,19 @@ There is help on the command line for each individual command. ```bash docman --help ``` +### New Document -### New Requiremants - -A new request can be created with the following command. +A new document can be created with the command `add`. ```bash -docman requirements add --id 1425 -``` +docman documents add --name=path/to/document.md +``` + +A completely new file with a structure is created. +The parameter `--name` specifies the name of the document. +The name can be either the file name or the absolute path. -A completely new file with a structure is created. The `--id 1425` is both the file name and the ID of the request. +the ending .md is always appended. All available fields are listed in the new file. @@ -279,6 +271,31 @@ If the PDF function is used, LaTeX commands can also be included in the text. Fo `│ -> |` +## Date + +If a date is expected as a parameter, it must be entered in a special format +depending on the type. The following table provides information about the individual formats. +The format can be looked up in the first column of the table below. + +| Layout | Java notation | C notation | Notes | +| ------------------ | --------------- | ------------ | ---------- | +| 2006-01-02 | yyyy-MM-dd | %F | ISO 8601 | +| 20060102 | yyyyMMdd | %Y%m%d | ISO 8601 | +| January 02, 2006 | MMMM dd, yyyy | %B %d, %Y | | +| 02 January 2006 | dd MMMM yyyy | %d %B %Y | | +| 02-Jan-2006 | dd-MMM-yyyy | %d-%b-%Y | | +| 01/02/06 | MM/dd/yy | %D | US | +| 01/02/2006 | MM/dd/yyyy | %m/%d/%Y | US | +| 010206 | MMddyy | %m%d%y | US | +| Jan-02-06 | MMM-dd-yy | %b-%d-%y | US | +| Jan-02-2006 | MMM-dd-yyyy | %b-%d-%Y | US | +| 06 | yy | %y | | +| Mon | EEE | %a | | +| Monday | EEEE | %A | | +| Jan-06 | MMM-yy | %b-%y | | + + + ## Latex Individual LaTeX commands can be looked up here: @@ -291,5 +308,5 @@ Individual LaTeX commands can be looked up here: ## Change Log -- Version 1.0.25 (20220622174620) - - Added support for `gitlab sync` command +- Version 1.0 + - takeover of the code from reqman diff --git a/application/source/changelog.go b/application/source/changelog.go index c944df9..c73465b 100644 --- a/application/source/changelog.go +++ b/application/source/changelog.go @@ -8,7 +8,7 @@ import ( type logs []string -func buildChangelog(pageMap map[string]*requirement) (error, string, bool) { +func buildChangelog(pageMap map[string]*document) (error, string, bool) { changelog := make(map[string]logs) datemap := make(map[string]string) @@ -16,7 +16,12 @@ func buildChangelog(pageMap map[string]*requirement) (error, string, bool) { for _, q := range pageMap { p := *q - e := strings.Trim(p.Title+" ("+p.ID+")", " ") + title := strings.Trim(p.Name, " ") + if title == "" { + title = printer.Sprintf("Untitled") + } + + e := title d := p.Created.String() datemap[d] = p.Created.Format(config.Locale.DateFormat) diff --git a/application/source/commandline.go b/application/source/commandline.go index 35b5366..3c60302 100644 --- a/application/source/commandline.go +++ b/application/source/commandline.go @@ -51,115 +51,57 @@ func executeCommand() { printErrorAndExit(2, err.Error()) } } - case "privacy": - subcommand := activeCommand.Active - switch subcommand.Name { - case "print": - err := printPrivacy() - if err != nil { - printErrorAndExit(2, err.Error()) - } - } - case "overview": + + case "tasks": subcommand := activeCommand.Active switch subcommand.Name { case "print": - - if len(arguments.Overview.Print.Columns) > 0 { - config.Requirement.Table.Columns = validateColumns(arguments.Overview.Print.Columns) - } - - if arguments.Overview.Print.TemplatePath != "" { - config.Overview.Template.Internal.MarkdownContent = readTemplate(arguments.Overview.Print.TemplatePath) - } else if config.Overview.Template.Markdown != "" { - config.Overview.Template.Internal.MarkdownContent = readTemplate(config.Overview.Template.Markdown) - } else { - config.Overview.Template.Internal.MarkdownContent = defaultOverviewTemplate - } - - if arguments.Overview.Print.LatexTemplatePath != "" { - config.Overview.Template.Latex = arguments.Overview.Print.LatexTemplatePath - } - - err := PrintOverview() + err := printTaskTable() if err != nil { printErrorAndExit(2, err.Error()) } } - case "requirements": + case "document": subcommand := activeCommand.Active switch subcommand.Name { - case "report": - err := printRequirementReport() - if err != nil { - printErrorAndExit(2, err.Error()) - } case "add": config.Requirement.Template.Add = defaultNewRequirementTemplate - err := addRequirement() - if err != nil { - printErrorAndExit(2, err.Error()) - } - case "print": - if len(arguments.Requirements.Print.Columns) > 0 { - config.Requirement.Table.Columns = validateColumns(arguments.Requirements.Print.Columns) - } - err := printRequirements() + err := addDocument() if err != nil { printErrorAndExit(2, err.Error()) } - } - case "tasks": - subcommand := activeCommand.Active - switch subcommand.Name { - case "print": - err := printTaskTable() - if err != nil { - printErrorAndExit(2, err.Error()) - } } - case "issues": + case "build": subcommand := activeCommand.Active switch subcommand.Name { case "print": - if arguments.Issues.Print.GitlabToken != "" { - config.Gitlab.Token = arguments.Issues.Print.GitlabToken + if len(arguments.Build.Print.Columns) > 0 { + config.Requirement.Table.Columns = validateColumns(arguments.Build.Print.Columns) } - err := printIssueTable() - if err != nil { - printErrorAndExit(2, err.Error()) + if arguments.Build.Print.TemplatePath != "" { + config.Overview.Template.Internal.MarkdownContent = readTemplate(arguments.Build.Print.TemplatePath) + } else if config.Overview.Template.Markdown != "" { + config.Overview.Template.Internal.MarkdownContent = readTemplate(config.Overview.Template.Markdown) + } else { + config.Overview.Template.Internal.MarkdownContent = defaultOverviewTemplate } - case "items": - subcommand := activeCommand.Active - switch subcommand.Name { - case "print": - err := printItemTable() - if err != nil { - printErrorAndExit(2, err.Error()) - } + if arguments.Build.Print.LatexTemplatePath != "" { + config.Overview.Template.Latex = arguments.Build.Print.LatexTemplatePath } - } - - case "gitlab": - subcommand := activeCommand.Active - switch subcommand.Name { - case "sync": - - if arguments.Gitlab.GitlabToken != "" { - config.Gitlab.Token = arguments.Gitlab.GitlabToken + err := PrintOverview() + if err != nil { + printErrorAndExit(2, err.Error()) } - - syncFilesWithGitlab() } - } + } } func readTemplate(argPath string) string { diff --git a/application/source/commandlineoptions.go b/application/source/commandlineoptions.go index 40b407e..db71689 100644 --- a/application/source/commandlineoptions.go +++ b/application/source/commandlineoptions.go @@ -1,48 +1,23 @@ package main type commandLineOptions struct { - Config string `short:"c" long:"config" description:"file with configuration values"` - Path string `short:"p" long:"path" description:"define the path where the specifications are located" default:"."` - DateFormat string `long:"date-format" description:"date format" default:"2006-01-02"` - Requirements struct { - Print struct { - Columns []string `short:"c" long:"column" description:"defines the columns used"` - } `command:"print"` + Config string `short:"c" long:"config" description:"file with configuration values"` + Path string `short:"p" long:"path" description:"define the path where the specifications are located" default:"."` + DateFormat string `long:"date-format" description:"date format" default:"2006-01-02"` + Documents struct { Add struct { - ID string `long:"id" required:"true" description:"new requirement id"` + Name string `short:"n" long:"name" description:"name of the document"` } `command:"add"` - Report struct { - GroupedBy string `long:"grouped-by" required:"false" description:"grouped by"` - Remote bool `long:"remote" description:"get data from remote"` - } `command:"report"` - } `command:"requirements"` + } `command:"documents"` Tasks struct { Print struct { } `command:"print"` - //Sync struct { - // //ProjectID string `long:"project-id" required:"false" description:"gitlab project id"` - // //Token string `long:"token" required:"false" description:"gitlab token"` - //} `command:"sync"` } `command:"tasks"` - Issues struct { - Print struct { - GitlabToken string `long:"gitlab-token" required:"false" description:"gitlab token"` - Remote bool `long:"remote" required:"false" description:"get data from remote"` - } `command:"print"` - } `command:"issues"` - Items struct { - Print struct { - } `command:"print"` - } `command:"items"` Changelog struct { Print struct { } `command:"print"` } `command:"changelog"` - Privacy struct { - Print struct { - } `command:"print"` - } `command:"privacy"` - Overview struct { + Build struct { Print struct { Columns []string `short:"c" long:"column" description:"defines the columns used"` TemplatePath string `short:"t" long:"template" description:"file name of the template of the overview page"` @@ -50,13 +25,7 @@ type commandLineOptions struct { Format string `short:"f" long:"format" description:"the desired output format" choice:"pdf" choice:"md"` LatexTemplatePath string `short:"l" long:"latex-template-path" description:"latex template"` } `command:"print"` - } `command:"overview"` + } `command:"build"` Version struct { } `command:"version"` - Gitlab struct { - Sync struct { - } `command:"sync"` - // ProjectID string `long:"project-id" required:"false" description:"gitlab project id"` - GitlabToken string `long:"gitlab-token" required:"false" description:"gitlab token"` - } `command:"gitlab"` } diff --git a/application/source/config.go b/application/source/config.go index 84ef8bc..26fd3db 100644 --- a/application/source/config.go +++ b/application/source/config.go @@ -41,7 +41,7 @@ type Configuration struct { MarkdownContent string } } `yaml:"Template"` - } `yaml:"Overview"` + } `yaml:"Build"` Requirement struct { Table struct { diff --git a/application/source/defaults.go b/application/source/defaults.go index a54ff24..5b6b325 100644 --- a/application/source/defaults.go +++ b/application/source/defaults.go @@ -25,7 +25,7 @@ block-headings: true {{.Privacy}} {{ end}}{{ if .HasMeta }} -## Overview +## Build {{.Meta}} @@ -40,9 +40,9 @@ block-headings: true {{.Items}} {{ end}}{{ if .HasRequirements }} -## Requirements +## Documents -{{.Requirements}} +{{.Documents}} {{ end}} @@ -70,15 +70,15 @@ Keywords: Author: - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) +# Proposed (The document has been requested by an authorized source.), +# In Progress (A business analyst is actively working on crafting the document.), +# Drafted (The initial version of the document has been written.), +# Approved (The document has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), +# Implemented (The code that implements the document has been designed, written, and unit tested. The document has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), +# Verified (The document has satisfied its acceptance criteria, meaning that the correct functioning of the implemented document has been confirmed.), +# Deferred (An approved document is now planned for implementation in a later release.), +# Deleted (An approved document has been removed from the baseline.) or +# Rejected (The document was proposed but was never approved and is not planned for implementation in any upcoming release.) Status: "Proposed" # Low, Medium, Hi @@ -94,7 +94,7 @@ Milestone: null # 8, 13, 20, 40, 100 Estimation: -# The time required for this requirement +# The time required for this document # Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. Time Spent: @@ -103,7 +103,7 @@ Source: null Created: %%CREATED%% Last Update: null -# The issues that are associated with this requirement +# The issues that are associated with this document # You can add an issue by adding a new line to the list with the following format: # - Gitlab: # ID: <issue-id> diff --git a/application/source/documents.go b/application/source/documents.go new file mode 100644 index 0000000..8aef5d7 --- /dev/null +++ b/application/source/documents.go @@ -0,0 +1,142 @@ +package main + +import ( + "bytes" + "os" + "path" + "reflect" + "strconv" + "strings" + "time" + + "gopkg.in/yaml.v3" + + "github.com/olekukonko/tablewriter" +) + +type document struct { + ToDos []task `yaml:"-"` + Absolute string `yaml:"-"` + File string `yaml:"-"` + + // remember the node structure of yaml + OriginNode *yaml.Node `yaml:"-"` + OriginText string `yaml:"-"` + + Name string `yaml:"Name"` + References []string `yaml:"References"` + Keywords []string `yaml:"Keywords"` + Author []string `yaml:"Author"` + Version string `yaml:"Version"` + Created time.Time `yaml:"Created"` + LastUpdate time.Time `yaml:"Last Update"` +} + +func addDocument() error { + + if arguments.Documents.Add.Name == "" { + printErrorAndExit(2, "the name must not be empty") + } + + p := path.Join(arguments.Path, arguments.Documents.Add.Name+".md") + if fileExists(p) { + printErrorAndExit(2, "the request with id already exists", arguments.Documents.Add.Name, p) + } + + t := config.Requirement.Template.Add + t = strings.Replace(t, "%%ID%%", arguments.Documents.Add.Name, -1) + t = strings.Replace(t, "%%CREATED%%", time.Now().Format("2006-01-02"), -1) + + d1 := []byte(t) + err := os.WriteFile(p, d1, 0644) + if err != nil { + return err + } + + return nil +} + +func buildRequirements(pageMap map[string]*document) (error, string, bool) { + + hasRequirements := false + + buf := new(bytes.Buffer) + table := tablewriter.NewWriter(buf) + + translateMetaColumns := translateHeaders(config.Requirement.Table.Columns) + + table.SetHeader(translateMetaColumns) + table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false}) + table.SetCenterSeparator("|") + + var tableData [][]string + + for _, pd := range pageMap { + + r := reflect.ValueOf(pd) + + var row []string + found := false + for _, name := range config.Requirement.Table.Columns { + + field := reflect.Indirect(r).FieldByName(name) + if field == (reflect.Value{}) { + row = append(row, printer.Sprintf("no value")) + continue + } + + t := field.Type() + + switch t.Name() { + case "string": + found = true + row = append(row, field.String()) + case "Duration": + found = true + t := field.Interface().(time.Duration) + row = append(row, t.String()) + case "Time": + found = true + t := field.Interface().(time.Time) + if t.IsZero() { + row = append(row, "—") + } else { + row = append(row, field.Interface().(time.Time).Format(config.Locale.DateFormat)) + } + case "int": + found = true + row = append(row, strconv.FormatInt(field.Int(), 10)) + case "float64": + found = true + row = append(row, strconv.FormatFloat(field.Float(), 'f', 10, 2)) + case "nil": + row = append(row, field.String()) + case "bool": + found = true + expr := field.Bool() + if expr { + row = append(row, "true") + } else { + row = append(row, "false") + } + + default: + row = append(row, printer.Sprintf("unsuported type", t.Name())) + } + + } + + if found { + tableData = append(tableData, row) + hasRequirements = true + } + + } + + table.AppendBulk(tableData) // Add Bulk Data + table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) + table.Render() + + return nil, buf.String(), hasRequirements + +} diff --git a/application/source/files.go b/application/source/files.go index 5e8d6dc..8cbd8ea 100644 --- a/application/source/files.go +++ b/application/source/files.go @@ -11,16 +11,13 @@ import ( "gopkg.in/yaml.v3" ) -// -func collectStructureFromFiles(directory string) (error, map[string]*requirement) { +func collectStructureFromFiles(directory string) (error, map[string]*document) { - cleanedDirectory := path.Clean(directory) + cleanedDirectory, err := filepath.Abs(path.Clean(directory)) - pageMap := make(map[string]*requirement) + pageMap := make(map[string]*document) - //pageMap := []requirement{} - - err := filepath.Walk(cleanedDirectory, + err = filepath.Walk(cleanedDirectory, func(current string, info os.FileInfo, err error) error { if err != nil { return err @@ -47,7 +44,6 @@ func collectStructureFromFiles(directory string) (error, map[string]*requirement if err != nil { printWarning("the file contains structural errors. check the YAML and if necessary the template.", cleanedPath, err) - return nil } bd := []byte(cleanedDirectory) @@ -68,7 +64,7 @@ func collectStructureFromFiles(directory string) (error, map[string]*requirement return err, pageMap } -func rewriteFiles(pageData map[string]*requirement) error { +func rewriteFiles(pageData map[string]*document) error { for filename, pd := range pageData { diff --git a/application/source/gitlab.go b/application/source/gitlab.go deleted file mode 100644 index 7ca2a44..0000000 --- a/application/source/gitlab.go +++ /dev/null @@ -1,377 +0,0 @@ -package main - -import ( - "errors" - "net/url" - - "path" - - "gopkg.in/yaml.v3" - - "github.com/go-git/go-git/v5" - "github.com/xanzy/go-gitlab" -) - -type gitlabContext struct { - rootPath string - repos *git.Repository - apiUrl url.URL - - group string - name string - - token string - client *gitlab.Client - - project *gitlab.Project -} - -func getGitlabContext() *gitlabContext { - - context := &gitlabContext{} - workingPath, err := getGitDirectory() - if err != nil { - printErrorAndExit(2, "Failed to get git directory", err.Error()) - } - - context.rootPath = workingPath - - repos, err := git.PlainOpen(workingPath) - if err != nil { - printErrorAndExit(2, "Failed to open repository", err.Error()) - } - - context.repos = repos - if err != nil { - printErrorAndExit(2, "Failed to get remotes", err.Error()) - } - - remotes, err := repos.Remotes() - if err != nil { - printErrorAndExit(2, "Failed to get remotes", err.Error()) - } - - remote := remotes[0] - if remote == nil { - printErrorAndExit(2, "Failed to get remote") - } - - urls := remote.Config().URLs - if len(urls) == 0 { - printErrorAndExit(2, "Failed to get remote url") - } - - u, err := url.Parse(urls[0]) - if err != nil { - printErrorAndExit(2, "Failed to parse remote url", err.Error()) - } - - context.apiUrl = *u - context.apiUrl.Path = "" //path.Join("api", "v4") - - p := u.Path - if p == "" { - printErrorAndExit(2, "Failed to get remote path") - } - - s := p[1 : len(p)-4] - context.name = path.Base(s) - context.group = path.Dir(s) - - options := gitlab.WithBaseURL(context.apiUrl.String()) - - context.token = config.Gitlab.Token - c, err := gitlab.NewClient(config.Gitlab.Token, options) - if err != nil { - printErrorAndExit(2, "Failed to create client", err.Error()) - } - - context.client = c - - return context -} - -func searchProject(context *gitlabContext) { - // - options := gitlab.ListProjectsOptions{ - Search: gitlab.String(context.group + "/" + context.name), - SearchNamespaces: gitlab.Bool(true), - } - - projects, response, err := context.client.Projects.ListProjects(&options) - - if response.StatusCode == 404 { - printErrorAndExit(2, "Project not found %s", err.Error()) - } - - if err != nil { - printErrorAndExit(2, "Failed to get projects %s", err.Error()) - } - - if response.StatusCode != 200 { - printErrorAndExit(2, "Failed to get projects %s", err.Error()) - } - - if len(projects) == 0 { - printErrorAndExit(2, "Project not found") - } - - context.project = projects[0] - -} - -func enrichIssuesWithGitlab(pageMap map[string]*requirement) error { - - context := getGitlabContext() - searchProject(context) - - for _, requirement := range pageMap { - - for k, issue := range requirement.Issues { - - if issue.GitlabIntern == nil { - continue - } - - if issue.GitlabIntern.ID == 0 { - continue - } - - i, err := loadIssuesFromGitlab(context, issue.GitlabIntern.ID) - if err != nil { - return err - } - - requirement.Issues[k].GitlabRemote = i - } - } - - return nil -} - -func syncFilesWithGitlab() error { - - err, pageData := collectStructureFromFiles(config.Path) - if err != nil { - return err - } - - issuesList := []Issue{} - - for _, pageData := range pageData { - for _, info := range pageData.Issues { - issuesList = append(issuesList, info) - } - } - - context := getGitlabContext() - searchProject(context) - - syncIssuesWithGitlab(pageData) - return rewriteFiles(pageData) - -} - -func nodesEqual(l, r *yaml.Node) bool { - if l.Kind == yaml.ScalarNode && r.Kind == yaml.ScalarNode { - return l.Value == r.Value - } - panic("equals on non-scalars not implemented!") -} - -func recursiveRemove(nodes *yaml.Node) error { - - if nodes.Kind == yaml.DocumentNode { - recursiveRemove(nodes.Content[0]) - } - - if nodes.Kind != yaml.MappingNode { - return nil - } - - var found int - - for i := 0; i < len(nodes.Content); i += 2 { - - if nodes.Content[i].Value == "Issues" { - found = i - break - } - - if err := recursiveRemove(nodes.Content[i+1]); err != nil { - return errors.New("at key " + nodes.Content[i].Value + ": " + err.Error()) - } - - } - - if found > 0 { - - copy(nodes.Content[found:], nodes.Content[found+2:]) // Shift a[i+1:] left one index. - nodes.Content[len(nodes.Content)-1] = nil // Erase last element (write zero value). - nodes.Content[len(nodes.Content)-2] = nil // Erase last element (write zero value). - nodes.Content = nodes.Content[:len(nodes.Content)-2] - } - - return nil -} - -func recursiveMerge(from, into *yaml.Node) error { - if from.Kind != into.Kind { - return errors.New("cannot merge nodes of different kinds") - } - switch from.Kind { - case yaml.MappingNode: - for i := 0; i < len(from.Content); i += 2 { - found := false - for j := 0; j < len(into.Content); j += 2 { - if nodesEqual(from.Content[i], into.Content[j]) { - found = true - - if err := recursiveMerge(from.Content[i+1], into.Content[j+1]); err != nil { - return errors.New("at key " + from.Content[i].Value + ": " + err.Error()) - } - break - } - } - if !found { - into.Content = append(into.Content, from.Content[i:i+2]...) - } - } - case yaml.SequenceNode: - into.Content = append(into.Content, from.Content...) - case yaml.DocumentNode: - recursiveMerge(from.Content[0], into.Content[0]) - default: - return errors.New("can only merge mapping and sequence nodes") - } - return nil -} - -func syncIssuesWithGitlab(pageData map[string]*requirement) { - - err := enrichIssuesWithGitlab(pageData) - if err != nil { - printError(err.Error()) - printErrorAndExit(2, "Failed to enrich issues with gitlab") - } - - for _, pageData := range pageData { - for k, info := range pageData.Issues { - - if info.GitlabIntern.ID == 0 { - issue, err := createIssue(info) - if err != nil { - printErrorAndExit(2, "Failed to create issue %s", err.Error()) - } - - pageData.Issues[k].GitlabRemote = issue - pageData.Issues[k].GitlabIntern = new(GitlabInternalIssueStruct) - pageData.Issues[k].GitlabIntern.ID = issue.IID - pageData.Issues[k].GitlabIntern.URL = issue.WebURL - pageData.Issues[k].GitlabIntern.Title = issue.Title - pageData.Issues[k].GitlabIntern.Description = issue.Description - pageData.Issues[k].GitlabIntern.Labels = issue.Labels - pageData.Issues[k].GitlabIntern.Status = issue.State - - } else { - - pageData.Issues[k].GitlabIntern = new(GitlabInternalIssueStruct) - pageData.Issues[k].GitlabIntern.ID = info.GitlabRemote.IID - pageData.Issues[k].GitlabIntern.URL = info.GitlabRemote.WebURL - pageData.Issues[k].GitlabIntern.Title = info.GitlabRemote.Title - pageData.Issues[k].GitlabIntern.Description = info.GitlabRemote.Description - pageData.Issues[k].GitlabIntern.Labels = info.GitlabRemote.Labels - pageData.Issues[k].GitlabIntern.Status = info.GitlabRemote.State - } - - var change yaml.Node - bytes, err := yaml.Marshal(&pageData) - if err != nil { - printError("Failed to marshal page data %s", err.Error()) - continue - } - - yaml.Unmarshal(bytes, &change) - recursiveRemove(pageData.OriginNode) - recursiveMerge(&change, pageData.OriginNode) - - } - } -} - -func createIssue(issue Issue) (*gitlab.Issue, error) { - context := getGitlabContext() - searchProject(context) - - //title := *string(issue.GitlabIntern.Title) - labels := gitlab.Labels{} - for _, label := range issue.GitlabIntern.Labels { - labels = append(labels, label) - } - - createionOptions := gitlab.CreateIssueOptions{ - Title: gitlab.String(issue.GitlabIntern.Title), - Description: gitlab.String(issue.GitlabIntern.Description), - Labels: &labels, - } - - ptr := &createionOptions - - gitlabIssue, response, err := context.client.Issues.CreateIssue(context.project.ID, ptr) - - if response.StatusCode == 401 { - return gitlabIssue, err - } - - if response.StatusCode > 299 { - return gitlabIssue, err - } - - printInfo("Created issue %v (ID %v)", gitlabIssue.Title, gitlabIssue.IID) - printInfo("\t%s", gitlabIssue.WebURL) - - return gitlabIssue, nil -} - -// -// context := getGitlabContext(config) -// searchProject(context) -// -// options := &gitlab.CreateIssueOptions{ -// Title: gitlab.String(issue.Title), -// Status: gitlab.String(issue.Status), -// Labels: gitlab.StringSlice(issue.Labels), -// } -// -// i, _, err := context.client.Issues.CreateIssue(context.project.ID, options) -// if err != nil { -// return nil, err -// } -// -// return i, nil -// -//} -// -// -//func getProject(config *Configuration) *gitlab.Project { -// -// client := getGitlabClient(config) -// -// pattern := "test" -// -// options := gitlab.ListProjectsOptions{ -// Search: &pattern, -// } -// -// projects, _, err := client.Projects.ListProjects(&options) -// if err != nil { -// printErrorAndExit(2, "Failed to get projects", err.Error()) -// } -// -// //project, _, err := client.Projects.GetProject(config.GitlabProjectID, nil) -// //if err != nil { -// // printErrorAndExit(2, "Failed to get project", err.Error()) -// //} -// -// return projects[0] -//} diff --git a/application/source/issues.go b/application/source/issues.go deleted file mode 100644 index 372baa6..0000000 --- a/application/source/issues.go +++ /dev/null @@ -1,157 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "strings" - "time" - - "github.com/olekukonko/tablewriter" - "github.com/xanzy/go-gitlab" -) - -type GitlabInternalIssueStruct struct { - ID int `yaml:"ID"` - Title string `yaml:"Title,omitempty"` - Description string `yaml:"Description,omitempty"` - Status string `yaml:"Status,omitempty"` - Labels []string `yaml:"Labels,omitempty"` - URL string `yaml:"URL,omitempty"` -} - -//Priority string `yaml:"Priority,omitempty"` -//Assignee string `yaml:"Assignee,omitempty"` -//Milestone string `yaml:"Milestone,omitempty"` - -type Issue struct { - GitlabIntern *GitlabInternalIssueStruct `yaml:"Gitlab"` - GitlabRemote *gitlab.Issue `yaml:"-"` -} - -func loadIssuesFromGitlab(context *gitlabContext, issueID int) (*gitlab.Issue, error) { - - client := context.client - - issue, _, err := client.Issues.GetIssue(context.project.ID, issueID) // .ListProjectIssues(context.project.ID, &gitlab.ListProjectIssuesOptions{}) - if err != nil { - return nil, err - } - - return issue, nil - - //err, pageData := collectStructureFromFiles(config.Path) -} - -func buildIssueOverviewTable(pageMap map[string]*requirement, extended bool) (error, string, bool) { - - buf := new(bytes.Buffer) - has := false - - table := tablewriter.NewWriter(buf) - - header := []string{ - printer.Sprintf("ID"), - printer.Sprintf("Title"), - printer.Sprintf("State")} - - if extended == true { - - header = append(header, printer.Sprintf("Assignees")) - header = append(header, printer.Sprintf("Due date")) - header = append(header, printer.Sprintf("Labels")) - header = append(header, printer.Sprintf("Estimate")) - header = append(header, printer.Sprintf("Spent")) - } - - table.SetHeader(header) - - table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false}) - table.SetCenterSeparator("|") - - var tableData [][]string - - for _, requirement := range pageMap { - for _, issue := range requirement.Issues { - - gitlabIntern := issue.GitlabIntern - - if gitlabIntern == nil { - continue - } - - var col []string - dueDate := "—" - - id := "—" - labels := "—" - estimate := "—" - spent := "—" - state := "—" - title := "—" - assignees := "—" - - id = printer.Sprintf("%d", gitlabIntern.ID) - if gitlabIntern.Labels != nil { - labels = strings.Join(gitlabIntern.Labels, ", ") - } - if gitlabIntern.Title != "" { - title = gitlabIntern.Title - } - - gitlabRemote := issue.GitlabRemote - if gitlabRemote != nil { - if gitlabRemote.DueDate != nil { - d := (time.Time)(*gitlabRemote.DueDate) - dueDate = d.Format(config.Locale.DateFormat) - } - - labels = printer.Sprintf("%s", strings.Join(gitlabRemote.Labels, ", ")) - estimate = printer.Sprintf("%s", gitlabRemote.TimeStats.HumanTimeEstimate) - spent = printer.Sprintf("%s", gitlabRemote.TimeStats.HumanTotalTimeSpent) - state = printer.Sprintf(gitlabRemote.State) - title = printer.Sprintf("%s", gitlabRemote.Title) - - a := []string{} - for _, assignee := range gitlabRemote.Assignees { - a = append(a, assignee.Name) - } - - assignees = printer.Sprintf("%s", strings.Join(a, ", ")) - - } - - if extended { - col = []string{id, title, state, assignees, dueDate, labels, estimate, spent} - } else { - col = []string{id, title, state, labels} - } - - tableData = append(tableData, col) - has = true - - } - - } - - table.AppendBulk(tableData) // Add Bulk Data - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.Render() - - return nil, buf.String(), has -} - -func printIssueTable() error { - err, pageMap := collectStructureFromFiles(config.Path) - - if arguments.Issues.Print.Remote { - enrichIssuesWithGitlab(pageMap) - if err != nil { - return err - } - } - - err, table, _ := buildIssueOverviewTable(pageMap, true) - fmt.Println(table) - - return nil -} diff --git a/application/source/items.go b/application/source/items.go deleted file mode 100644 index 2515db4..0000000 --- a/application/source/items.go +++ /dev/null @@ -1,127 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "time" - - "github.com/olekukonko/tablewriter" -) - -type Item struct { - ID string `yaml:"ID"` - Name string `yaml:"Name"` - Type string `yaml:"Type"` - Group string `yaml:"group"` - Description string `yaml:"Description"` - DeliveryUntil time.Time `yaml:"Delivery until"` - ProvidedOn time.Time `yaml:"Provided on"` - ProvidedBy string `yaml:"Provided by"` -} - -func buildItemOverviewTable(pageMap map[string]*requirement, extended bool) (error, string, bool) { - - buf := new(bytes.Buffer) - has := false - - table := tablewriter.NewWriter(buf) - - var header []string - - if extended { - header = []string{ - printer.Sprintf("ID"), - printer.Sprintf("group"), - printer.Sprintf("Name"), - printer.Sprintf("Type"), - printer.Sprintf("Description"), - printer.Sprintf("Delivery until"), - printer.Sprintf("Checked"), - printer.Sprintf("Provided on"), - printer.Sprintf("Provided by"), - printer.Sprintf("File"), - } - } else { - header = []string{ - printer.Sprintf("ID"), - printer.Sprintf("Name"), - printer.Sprintf("Delivery until"), - printer.Sprintf("Checked"), - } - - } - - table.SetHeader(header) - - table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false}) - table.SetCenterSeparator("|") - - var tableData [][]string - - for _, pageData := range pageMap { - for _, info := range pageData.Items { - - var deliveryUntilFormatted, providedOnDate, checked string - - if info.DeliveryUntil.IsZero() { - deliveryUntilFormatted = "—" - } else { - deliveryUntilFormatted = info.DeliveryUntil.Format(config.Locale.DateFormat) - } - - if info.ProvidedOn.IsZero() { - providedOnDate = "—" - } else { - providedOnDate = info.ProvidedOn.Format(config.Locale.DateFormat) - } - - if info.DeliveryUntil.IsZero() { - deliveryUntilFormatted = "—" - } else { - deliveryUntilFormatted = info.DeliveryUntil.Format(config.Locale.DateFormat) - } - - if info.ProvidedOn.IsZero() { - checked = "—" - } else { - checked = "✓" - } - - id := "—" - if info.ID != "" { - id = info.ID - } - - var col []string - - if extended { - col = []string{id, info.Group, info.Name, info.Type, info.Description, deliveryUntilFormatted, checked, providedOnDate, info.ProvidedBy, pageData.File} - } else { - col = []string{id, info.Name, deliveryUntilFormatted, deliveryUntilFormatted, checked} - } - - tableData = append(tableData, col) - has = true - - } - - } - - table.AppendBulk(tableData) // Add Bulk Data - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.Render() - - return nil, buf.String(), has -} - -func printItemTable() error { - err, pageMap := collectStructureFromFiles(config.Path) - if err != nil { - return err - } - - err, table, _ := buildItemOverviewTable(pageMap, true) - fmt.Println(table) - - return nil -} diff --git a/application/source/l10n.go b/application/source/l10n.go index b7ad9c2..b4fd1fe 100644 --- a/application/source/l10n.go +++ b/application/source/l10n.go @@ -243,7 +243,7 @@ var l10nMap = []l10nKeyTranslation{ }, { "RequirementID", []l10nLocaleTranslation{ - {"de", "Requirements"}, + {"de", "Documents"}, {"en", "Anforderungen"}, }, }, { @@ -427,6 +427,13 @@ var l10nMap = []l10nKeyTranslation{ {"en", "Statistics"}, }, }, + { + "Untitled", + []l10nLocaleTranslation{ + {"de", "Unbenannt"}, + {"en", "Untitled"}, + }, + }, } func initL10n() { diff --git a/application/source/main.go b/application/source/main.go index ff52d3b..98a6733 100644 --- a/application/source/main.go +++ b/application/source/main.go @@ -11,8 +11,8 @@ import ( // -ldflags "-X main.version=$app_version -X main.build=$(due --iso-8601 | tr -d "-" )" // gesetzt var ( - version string - build string + version string = "dev" + build string = "dev" printer *message.Printer //sugar *zap.SugaredLogger ) diff --git a/application/source/overview.go b/application/source/overview.go index 137a642..0db49c2 100644 --- a/application/source/overview.go +++ b/application/source/overview.go @@ -47,21 +47,11 @@ func PrintOverview() error { return err } - err, privacy, hasPrivacy := buildPrivacy(pageData) - if err != nil { - return err - } - err, tasks, hasTasks := buildTasksTable(pageData, false) if err != nil { return err } - err, items, hasItems := buildItemOverviewTable(pageData, false) - if err != nil { - return err - } - t, err := template.New("overview").Parse(config.Overview.Template.Internal.MarkdownContent) if err != nil { return err @@ -88,29 +78,23 @@ func PrintOverview() error { d.Changelog = changelog d.HasChangelog = hasChangelog - d.Privacy = privacy - d.HasPrivacy = hasPrivacy - d.Meta = meta d.HasMeta = hasMeta d.Tasks = tasks d.HasTasks = hasTasks - d.Items = items - d.HasItems = hasItems - d.Requirements = requirements d.HasRequirements = hasRequirements d.Config = config d.Created = time.Now() d.CreatedFormat = time.Now().Format(config.Locale.DateFormat) - //d.requirement = requirement + //d.document = document - outputName := arguments.Overview.Print.Output + outputName := arguments.Build.Print.Output - if arguments.Overview.Print.Format == "pdf" { + if arguments.Build.Print.Format == "pdf" { if outputName == "" { printErrorAndExit(2, "if the type is pdf, the output option must be specified") @@ -286,7 +270,7 @@ func validateColumns(columns []string) []string { // VALIDATE COLUMS NAME // - //for _, name := range config.Requirements.Columns { + //for _, name := range config.Documents.Columns { // // field := reflect.Indirect(r).FieldByName(name) // if field == (reflect.Value{}) { diff --git a/application/source/privacy.go b/application/source/privacy.go deleted file mode 100644 index 2063525..0000000 --- a/application/source/privacy.go +++ /dev/null @@ -1,95 +0,0 @@ -package main - -import ( - "fmt" - "strings" -) - -type Privacy struct { - ID string `yaml:"ID"` - Purposes string `yaml:"Purposes"` - Description string `yaml:"Description"` - Contact string `yaml:"Contact"` - AffectedGroups string `yaml:"Affected Groups"` // Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Category string `yaml:"Category"` - DataRetentionPeriod string `yaml:"Data Retention Period"` - LegalBasis string `yaml:"Legal Basis"` - Consent string `yaml:"Consent"` - Transfers string `yaml:"Transfers"` - TOM string `yaml:"TOM"` -} - -func buildPrivacy(pageMap map[string]*requirement) (error, string, bool) { - - hasPrivacy := false - text := "" - - for _, pageData := range pageMap { - for _, data := range pageData.Privacy { - - text += strings.Trim(data.Purposes+" ("+data.ID+")", " ") + "\n\n" - - d := strings.Trim(data.Description, " \n") - if d != "" { - text += d + "\n\n" - } - - d = strings.Trim(data.Contact, " \n") - if d != "" { - text += d + "\n\n" - } - - d = strings.Trim(data.AffectedGroups, " \n") - if d != "" { - text += d + "\n\n" - } - - d = strings.Trim(data.Category, " \n") - if d != "" { - text += d + "\n\n" - } - - d = strings.Trim(data.DataRetentionPeriod, " \n") - if d != "" { - text += d + "\n\n" - } - - d = strings.Trim(data.LegalBasis, " \n") - if d != "" { - text += d + "\n\n" - } - - d = strings.Trim(data.Consent, " \n") - if d != "" { - text += d + "\n\n" - } - - d = strings.Trim(data.Transfers, " \n") - if d != "" { - text += d + "\n\n" - } - - d = strings.Trim(data.TOM, " \n") - if d != "" { - text += d + "\n\n" - } - - hasPrivacy = true - } - } - - return nil, text, hasPrivacy - -} - -func printPrivacy() error { - - err, pageData := collectStructureFromFiles(config.Path) - if err != nil { - return err - } - - err, data, _ := buildPrivacy(pageData) - fmt.Println(data) - return err -} diff --git a/application/source/requirements.go b/application/source/requirements.go deleted file mode 100644 index 02a3b40..0000000 --- a/application/source/requirements.go +++ /dev/null @@ -1,432 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "math" - "os" - "path" - "reflect" - "strconv" - "strings" - "time" - - "gopkg.in/yaml.v3" - - "github.com/olekukonko/tablewriter" -) - -type requirement struct { - ToDos []task `yaml:"-"` - Absolute string `yaml:"-"` - File string `yaml:"-"` - Items []Item `yaml:"Items"` - Privacy []Privacy `yaml:"Privacy"` - Issues []Issue `yaml:"Issues"` - - // remember the node structure of yaml - OriginNode *yaml.Node `yaml:"-"` - OriginText string `yaml:"-"` - - ID string `yaml:"ID"` - References []string `yaml:"References"` - Type string `yaml:"Type"` // Display, Functional, Performance, Printing, Report, Testing and Validate - Title string `yaml:"Title"` - Alias []string `yaml:"Alias"` - Keywords []string `yaml:"Keywords"` - Author []string `yaml:"Author"` - Status string `yaml:"Status"` - Complexity string `yaml:"Complexity"` - Difficulty string `yaml:"Difficulty"` // Low, Medium, High - Priority string `yaml:"Priority"` // Low, Medium, High - Version string `yaml:"Version"` - Milestone string `yaml:"Milestone"` - Estimation int `yaml:"Estimation"` // 0, 1, 2, 3, 5, 8, 13, 20, 40, 100 - TimeSpent time.Duration `yaml:"Time Spent"` // 3h2m20s - Source string `yaml:"Source"` - Created time.Time `yaml:"Created"` - LastUpdate time.Time `yaml:"Last Update"` -} - -func addRequirement() error { - - if arguments.Requirements.Add.ID == "" { - printErrorAndExit(2, "the id must not be empty") - } - - p := path.Join(arguments.Path, arguments.Requirements.Add.ID+".md") - if fileExists(p) { - printErrorAndExit(2, "the request with id already exists", arguments.Requirements.Add.ID, p) - } - - t := config.Requirement.Template.Add - t = strings.Replace(t, "%%ID%%", arguments.Requirements.Add.ID, -1) - t = strings.Replace(t, "%%CREATED%%", time.Now().Format("2006-01-02"), -1) - - d1 := []byte(t) - err := os.WriteFile(p, d1, 0644) - if err != nil { - return err - } - - return nil -} - -func buildRequirements(pageMap map[string]*requirement) (error, string, bool) { - - hasRequirements := false - - buf := new(bytes.Buffer) - table := tablewriter.NewWriter(buf) - - translateMetaColumns := translateHeaders(config.Requirement.Table.Columns) - - table.SetHeader(translateMetaColumns) - table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false}) - table.SetCenterSeparator("|") - - var tableData [][]string - - for _, pd := range pageMap { - - r := reflect.ValueOf(pd) - - var row []string - found := false - for _, name := range config.Requirement.Table.Columns { - - field := reflect.Indirect(r).FieldByName(name) - if field == (reflect.Value{}) { - row = append(row, printer.Sprintf("no value")) - continue - } - - t := field.Type() - - switch t.Name() { - case "string": - found = true - row = append(row, field.String()) - case "Duration": - found = true - t := field.Interface().(time.Duration) - row = append(row, t.String()) - case "Time": - found = true - t := field.Interface().(time.Time) - if t.IsZero() { - row = append(row, "—") - } else { - row = append(row, field.Interface().(time.Time).Format(config.Locale.DateFormat)) - } - case "int": - found = true - row = append(row, strconv.FormatInt(field.Int(), 10)) - case "float64": - found = true - row = append(row, strconv.FormatFloat(field.Float(), 'f', 10, 2)) - case "nil": - row = append(row, field.String()) - case "bool": - found = true - expr := field.Bool() - if expr { - row = append(row, "true") - } else { - row = append(row, "false") - } - - default: - row = append(row, printer.Sprintf("unsuported type", t.Name())) - } - - } - - if found { - tableData = append(tableData, row) - hasRequirements = true - } - - } - - table.AppendBulk(tableData) // Add Bulk Data - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.Render() - - return nil, buf.String(), hasRequirements - -} - -func printRequirements() error { - err, pageData := collectStructureFromFiles(config.Path) - if err != nil { - return err - } - - err, table, _ := buildRequirements(pageData) - fmt.Println(table) - return err -} - -func integrateGitlabTimeSpent(pageMap map[string]*requirement) { - - for _, requirement := range pageMap { - - for _, i := range requirement.Issues { - if i.GitlabRemote == nil { - continue - } - - d := time.Duration(i.GitlabRemote.TimeStats.TotalTimeSpent) * time.Second - requirement.TimeSpent += d - } - - } - -} - -func buildTimeReport(pageMap map[string]*requirement) (error, string, string, bool) { - - if arguments.Requirements.Report.Remote { - err := enrichIssuesWithGitlab(pageMap) - if err != nil { - return err, "", "", false - } - - integrateGitlabTimeSpent(pageMap) - - } - - groupedByKey := arguments.Requirements.Report.GroupedBy - if groupedByKey == "" { - groupedByKey = "ID" - } - - hasReport := false - - found := false - for _, q := range pageMap { - p := *q - - fields := reflect.VisibleFields(reflect.TypeOf(p)) - for _, field := range fields { - if field.Name == groupedByKey { - found = true - break - } - } - if found { - break - } - } - - if !found { - printErrorAndExit(2, "the grouping key was not found", groupedByKey) - } - - t1 := buildTable1(groupedByKey, pageMap) - - t2 := buildTable2(pageMap) - - return nil, t1, t2, hasReport -} - -func buildTable1(groupedByKey string, pageMap map[string]*requirement) string { - - estimated := map[string]float64{} - timeSpent := map[string]float64{} - - for _, q := range pageMap { - d := *q - r := reflect.ValueOf(d) - f := r.FieldByName(groupedByKey) - k := "" - switch f.Interface().(type) { - case bool: - k = strconv.FormatBool(r.FieldByName(groupedByKey).Bool()) - case int: - k = strconv.FormatInt(r.FieldByName(groupedByKey).Int(), 10) - case int64: - k = strconv.FormatInt(r.FieldByName(groupedByKey).Int(), 10) - case float64: - k = strconv.FormatFloat(r.FieldByName(groupedByKey).Float(), 'f', 10, 2) - case string: - k = r.FieldByName(groupedByKey).String() - default: - k = r.FieldByName(groupedByKey).String() - } - - s := float64(d.TimeSpent.Milliseconds()) / 1000 - - estimated[k] += float64(d.Estimation) - timeSpent[k] += s - - } - - buf := new(bytes.Buffer) - table := tablewriter.NewWriter(buf) - - columns := []string{"Key", "Estimated", "Time Spent", "Ratio"} - - table.SetHeader(translateHeaders(columns)) - table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false}) - table.SetCenterSeparator("|") - - var tableData [][]string - - for k := range estimated { - var row []string - row = append(row, k) - row = append(row, strconv.FormatInt(int64(estimated[k]), 10)) - // nanosecond - row = append(row, time.Duration(timeSpent[k]*1000000000).String()) - - var ratio float64 - ratio = 0 - if timeSpent[k] > 0 { - - e := float64(estimated[k]) * 3600 - s := timeSpent[k] - ratio = s / e * 100 - - } - - row = append(row, fmt.Sprintf("%.2f", ratio)) - tableData = append(tableData, row) - } - - table.AppendBulk(tableData) // Add Bulk Data - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.Render() - - return buf.String() -} - -type timeStruct struct { - sum float64 - hour map[int]int // [time]count - average float64 - sqrtAverage float64 -} - -type mathData struct { - count float64 - estimate struct { - } - time timeStruct -} - -func buildTable2(pageMap map[string]*requirement) string { - - est := map[int]mathData{} - - // inti struct - for _, d := range pageMap { - k := d.Estimation - - m := mathData{} - m.count = 0 - m.time = timeStruct{ - 0, - make(map[int]int), - 0, - 0, - } - - est[k] = m - } - - // calc sum - for _, d := range pageMap { - k := d.Estimation - s := est[k] - - s.count++ - sec := float64(d.TimeSpent.Milliseconds()) / 1000 - s.time.sum += sec - - h := int(math.Round(sec / 3600)) - mh := s.time.hour - mh[h]++ - - est[k] = s - } - - for k, s := range est { - // - a := 0.0 - c := 0.0 - - for h, m := range s.time.hour { - a += float64(h * m) - // g += math.Pow(a, 2) - c += float64(m) - } - - x := est[k] - x.time.average = a / c - - g := 0.0 - for q, m := range s.time.hour { - z := float64(q) - x.time.average - g += math.Pow(z, 2) * float64(m) - } - - x.time.sqrtAverage = g / c - est[k] = x - - } - - buf := new(bytes.Buffer) - table := tablewriter.NewWriter(buf) - - columns := []string{"Estimated", "Time Spent", "Average", "Variance", "Standard Deviation"} - - table.SetHeader(translateHeaders(columns)) - table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false}) - table.SetCenterSeparator("|") - - var tableData [][]string - - for e, c := range est { - - row := []string{} - row = append(row, fmt.Sprintf("%d", e)) - row = append(row, time.Duration(c.time.sum*float64(time.Second)).String()) - row = append(row, fmt.Sprintf("%.2f", c.time.average)) - row = append(row, fmt.Sprintf("%.2f", c.time.sqrtAverage)) - row = append(row, fmt.Sprintf("%.2f", math.Sqrt(c.time.sqrtAverage))) - - tableData = append(tableData, row) - - } - - table.AppendBulk(tableData) // Add Bulk Data - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.Render() - - return buf.String() -} - -func printRequirementReport() error { - - err, pageData := collectStructureFromFiles(config.Path) - if err != nil { - return err - } - - err, table1, table2, _ := buildTimeReport(pageData) - if err != nil { - return err - } - - report := "## " + printer.Sprintf("Auflistung") + "\n\n" - report += table1 - report += "\n" - report += "## " + printer.Sprintf("Statistics") + "\n\n" - report += table2 - - fmt.Println(report) - - return nil -} diff --git a/application/source/tasks.go b/application/source/tasks.go index 45616e1..bac3781 100644 --- a/application/source/tasks.go +++ b/application/source/tasks.go @@ -72,7 +72,7 @@ func findTask(content []byte) []task { return toDos } -func buildTasksTable(pageMap map[string]*requirement, extended bool) (error, string, bool) { +func buildTasksTable(pageMap map[string]*document, extended bool) (error, string, bool) { buf := new(bytes.Buffer) diff --git a/application/source/util.go b/application/source/util.go index 3e31ee7..f373198 100644 --- a/application/source/util.go +++ b/application/source/util.go @@ -13,7 +13,7 @@ import ( type contentRequirement struct { content string - data requirement + data document } func splitYamlParts(content []byte) (error, contentRequirement) { @@ -30,13 +30,13 @@ func splitYamlParts(content []byte) (error, contentRequirement) { if len(t) == 0 { return errors.New("the file is empty"), contentRequirement{ content: origin, - data: requirement{}, + data: document{}, } } return errors.New("the file does not contain a definition block"), contentRequirement{ content: origin, - data: requirement{}, + data: document{}, } } @@ -77,38 +77,12 @@ func splitYamlParts(content []byte) (error, contentRequirement) { return err, contentRequirement{} } - data := requirement{} + data := document{} err = node.Decode(&data) if err != nil { return err, contentRequirement{} } - tempItem := []Item{} - for i, _ := range data.Items { - - if data.Items[i].ID == "" { - continue - } - - data.Items[i].ID = data.ID + "-" + data.Items[i].ID - tempItem = append(tempItem, data.Items[i]) - } - - data.Items = tempItem - - p := []Privacy{} - for i, _ := range data.Privacy { - if data.Privacy[i].ID == "" { - continue - } - - data.Privacy[i].ID = data.ID + "-" + data.Privacy[i].ID - p = append(p, data.Privacy[i]) - - } - - data.Privacy = p - req := contentRequirement{} req.data = data diff --git a/development/examples/example1/1425.md b/development/examples/example1/1425.md deleted file mode 100644 index dbe89dd..0000000 --- a/development/examples/example1/1425.md +++ /dev/null @@ -1,145 +0,0 @@ ---- -ID: 1425 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: -# who is the source of the demand -Source: null -Created: 2022-06-18 -Last Update: null -# The issues that are associated with this requirement -Issues: - - Title: null - URL: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -{{ if .Purposes }}**{{ .Purposes }}** {{ end }}**({{ .ID }})** - -{{ if .Description }} {{ .Description }} -{{ end }} -| | | -|-----------------------|----------------------------| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/144444.md b/development/examples/example1/144444.md deleted file mode 100644 index a9c31ee..0000000 --- a/development/examples/example1/144444.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -ID: 144444 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: -# who is the source of the demand -Source: null -Created: 2022-06-19 -Last Update: null -# The issues that are associated with this requirement -# You can add an issue by adding a new line to the list with the following format: -# - ID: <issue-id> -# -# if the issue is not yet in the project, you can add it by using the following format: -# Only the Title is required. -# - GitlabIntern: -# - Title: <issue-title> -# - Description: <issue-description> -# - Priority: <issue-priority> -# - Status: <issue-status> -# - Assignee: <issue-assignee> -# - Milestone: <issue-milestone> -# - Labels: <issue-labels> -# -# Issues: -# - GitlabIntern: -# - ID: <issue-id> - -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -{{ if .Purposes }}**{{ .Purposes }}** {{ end }}**({{ .ID }})** - -{{ if .Description }} {{ .Description }} -{{ end }} -| | | -|-----------------------|----------------------------| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/feature-1.md b/development/examples/example1/feature-1.md new file mode 100644 index 0000000..87ec592 --- /dev/null +++ b/development/examples/example1/feature-1.md @@ -0,0 +1,13 @@ +--- + +Last Updated: 2020-01-01 + +... + +# First Feature + +This is the first feature of the application. + +- [ ] task 1 +- [ ] tast 2 +- [x] 2022-12-13 task 3 with due date diff --git a/development/examples/example1/req1/1/test1.md b/development/examples/example1/req1/1/test1.md deleted file mode 100644 index a28b2fd..0000000 --- a/development/examples/example1/req1/1/test1.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -ID: ID1-1 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 13 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 2h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null -Issues: - - Gitlab: - ID: 1 - Title: demo - Status: closed - Labels: - - bug - - enhancement - - feature - URL: https://gitlab.schukai.com/oss/utilities/requirements-manager/-/issues/1 - - Gitlab: - ID: 47 - Title: Test 15 - Description: |- - Lorem Ipsum Lila Rot - - Blau1 Lila Rot Blau2 - - ``` - a=4 - ``` - Status: closed - Labels: - - bug - - bugfix - URL: https://gitlab.schukai.com/oss/utilities/requirements-manager/-/issues/47 - -... -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items -}}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -{{ if .Purposes }}**{{ .Purposes }}** {{ end }}**({{ .ID }})** - -{{ if .Description }} {{ .Description }} -{{ end }} -| | | -|-----------------------|----------------------------| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - -## Level 2 - -test - -### Level 3 - -test - -#### Level 4 - -test - -##### Level 5 - -test - -@todo das ist ein todo \ No newline at end of file diff --git a/development/examples/example1/req1/1/test2.md b/development/examples/example1/req1/1/test2.md deleted file mode 100644 index 8f23ead..0000000 --- a/development/examples/example1/req1/1/test2.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-2 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 1h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/1/test3.md b/development/examples/example1/req1/1/test3.md deleted file mode 100644 index ecb08d9..0000000 --- a/development/examples/example1/req1/1/test3.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-3 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 1h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: XXX - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/1/test4.md b/development/examples/example1/req1/1/test4.md deleted file mode 100644 index d12f8bb..0000000 --- a/development/examples/example1/req1/1/test4.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-4 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 1h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/2/test1.md b/development/examples/example1/req1/2/test1.md deleted file mode 100644 index ca9c29f..0000000 --- a/development/examples/example1/req1/2/test1.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-5 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 2h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/2/test2.md b/development/examples/example1/req1/2/test2.md deleted file mode 100644 index ffbeb39..0000000 --- a/development/examples/example1/req1/2/test2.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-6 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 2h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/2/test3.md b/development/examples/example1/req1/2/test3.md deleted file mode 100644 index 27aba08..0000000 --- a/development/examples/example1/req1/2/test3.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-7 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 2h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/2/test4.md b/development/examples/example1/req1/2/test4.md deleted file mode 100644 index 064fc5a..0000000 --- a/development/examples/example1/req1/2/test4.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-8 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 2h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/2/test5.md b/development/examples/example1/req1/2/test5.md deleted file mode 100644 index ee82ed6..0000000 --- a/development/examples/example1/req1/2/test5.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-9 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 2h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/2/test6.md b/development/examples/example1/req1/2/test6.md deleted file mode 100644 index a0217ef..0000000 --- a/development/examples/example1/req1/2/test6.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-10 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 2h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/3/test1.md b/development/examples/example1/req1/3/test1.md deleted file mode 100644 index c96c538..0000000 --- a/development/examples/example1/req1/3/test1.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-11 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 3h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/3/test2.md b/development/examples/example1/req1/3/test2.md deleted file mode 100644 index 66398a2..0000000 --- a/development/examples/example1/req1/3/test2.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-12 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 3h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/3/test3.md b/development/examples/example1/req1/3/test3.md deleted file mode 100644 index 3dac2ae..0000000 --- a/development/examples/example1/req1/3/test3.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-13 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 3h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/3/test4.md b/development/examples/example1/req1/3/test4.md deleted file mode 100644 index bfd922e..0000000 --- a/development/examples/example1/req1/3/test4.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-14 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 3h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/3/test5.md b/development/examples/example1/req1/3/test5.md deleted file mode 100644 index 5a4bfa1..0000000 --- a/development/examples/example1/req1/3/test5.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-15 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 3h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/3/test6.md b/development/examples/example1/req1/3/test6.md deleted file mode 100644 index 7d95c7c..0000000 --- a/development/examples/example1/req1/3/test6.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-16 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 3h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/3/test7.md b/development/examples/example1/req1/3/test7.md deleted file mode 100644 index e77d6d7..0000000 --- a/development/examples/example1/req1/3/test7.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-17 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 3h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/4/test1.md b/development/examples/example1/req1/4/test1.md deleted file mode 100644 index 6109fe5..0000000 --- a/development/examples/example1/req1/4/test1.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-18 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 4h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/4/test2.md b/development/examples/example1/req1/4/test2.md deleted file mode 100644 index 687ac28..0000000 --- a/development/examples/example1/req1/4/test2.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-19 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 4h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/4/test3.md b/development/examples/example1/req1/4/test3.md deleted file mode 100644 index cb9d2e4..0000000 --- a/development/examples/example1/req1/4/test3.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-20 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 4h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/4/test4.md b/development/examples/example1/req1/4/test4.md deleted file mode 100644 index 633451f..0000000 --- a/development/examples/example1/req1/4/test4.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-21 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 4h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/5/test1.md b/development/examples/example1/req1/5/test1.md deleted file mode 100644 index ff1657e..0000000 --- a/development/examples/example1/req1/5/test1.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -null - -... - -ID: ID1-22 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 5h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/5/test2.md b/development/examples/example1/req1/5/test2.md deleted file mode 100644 index cc3cc82..0000000 --- a/development/examples/example1/req1/5/test2.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-23 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 5h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/6/test1.md b/development/examples/example1/req1/6/test1.md deleted file mode 100644 index b9fadde..0000000 --- a/development/examples/example1/req1/6/test1.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-24 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 6h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - diff --git a/development/examples/example1/req1/6/test2.md b/development/examples/example1/req1/6/test2.md deleted file mode 100644 index e8276db..0000000 --- a/development/examples/example1/req1/6/test2.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -ID: ID1-25 -Title: null -# Reference to other requirements -References: null -# Display, Functional, Performance, Printing, Report, Testing or Validation -Type: null -Alias: null -Keywords: - - Requirement -# First and last name of the authors as a list -Author: - - null -# Proposed (The requirement has been requested by an authorized source.), -# In Progress (A business analyst is actively working on crafting the requirement.), -# Drafted (The initial version of the requirement has been written.), -# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ), -# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), -# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), -# Deferred (An approved requirement is now planned for implementation in a later release.), -# Deleted (An approved requirement has been removed from the baseline.) or -# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.) -Status: "Proposed" -# Low, Medium, Hi -Complexity: null -# Low, Medium, Hi -Difficulty: null -# Nice to have, Low, Medium, Hi or Blocker -Priority: null -Version: 0.0.1 -Milestone: null -# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), -# 8, 13, 20, 40, 100 -Estimation: 40 -# The time required for this requirement -# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. -Time Spent: 6h -# who is the source of the demand -Source: null -Created: 2022-05-03 -Last Update: null -# the individual items as a list -Items: - - ID: null - Name: null - # what is it, a image, font, legal information, access data, texts, decisions, etc. - Type: null - # does this belong to a group - Group: null - Description: null - Delivery until: null - # when was the project items delivered and by whom? - Provided on: null - Provided by: null -# https://gdpr-info.eu/art-30-gdpr/ -Privacy: - - ID: null - # Purpose of the data processing, - # for example, shipping an order and handing it over to a shipping service provider. - Purposes: null - # More detailed description of the reason and process of data processing. - Description: null - # Who is responsible for data protection - Contact: null - # But working with these categories might end up being a bad idea since doing so might - # mean packing different things into one. This leads to either oversimplifications or - # a lot of specifications within a category. It might be advisable to split some of them - # up or to add additional ones to make them fit your business reality. - # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees - Affected Groups: null - # - Category: - # Example: 5 years from the payment of the salary - Data Retention Period: null - # On what legal basis is the data collected - # Special legal regulation outside the GDPR - # Consent of the data subject (Art. 6 para. 1 a) DSG-VO) use Consent field - # Collective agreement (e.g. company agreement, collective agreement) - # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG) - # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.) - # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests - Legal Basis: null - # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or - # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies - # his or her agreement to personal data relating to him or her being processed. - Consent: null - # Where applicable, transfers of personal data to a third country or an international organisation, including - # the identification of that third country or international organisation and, in the case of transfers referred - # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards; - Transfers: - # Where possible, a general description of the technical and organisational - # security measures referred to in Article 32(1). - TOM: null - -... - - - - -### {{ .Title }} - {{ .ID }} - -#### Subheading - -- [ ] task 1 -- [ ] task 2 - - -{{ if .Items }} -#### Items - -| ID | Name | Delivery until | Provided on | -|--------------------|--------------|----------------------:|-----------------------------------------:| -{{ range .Items - }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan" }} | -{{ end }} - -{{ end }} - - -{{ if .Privacy }} -#### Privacy - -{{ range .Privacy }} -**{{ .Purposes }} ({{ .ID }})** - -{{ .Description }} - -| | | -|--|--| -| Category | {{ .Category }} | -| Data Retention Period | {{ .DataRetentionPeriod }} | -| Legal Basis | {{ .LegalBasis }} | -| Transfers | {{ .Transfers }} | -{{ end }} - -{{ end }} - - - - - - -- GitLab