diff --git a/CHANGELOG.md b/CHANGELOG.md index 662d71419..d4230a9d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## v1.0.0-97 + + +### ๐Ÿก Chore + +- Template assets ([0f85e43](https://github.com/undb-io/undb/commit/0f85e43)) + +### โค๏ธ Contributors + +- Nichenqin ([@nichenqin](http://github.com/nichenqin)) + ## v1.0.0-96 diff --git a/apps/backend/assets/templates/agileDevelopment/cover.jpg b/apps/backend/assets/templates/agileDevelopment/cover.jpg new file mode 100644 index 000000000..48a1f499e Binary files /dev/null and b/apps/backend/assets/templates/agileDevelopment/cover.jpg differ diff --git a/apps/backend/assets/templates/agileDevelopment/image1.png b/apps/backend/assets/templates/agileDevelopment/image1.png new file mode 100644 index 000000000..cb98166a7 Binary files /dev/null and b/apps/backend/assets/templates/agileDevelopment/image1.png differ diff --git a/apps/backend/assets/templates/agileDevelopment/image2.png b/apps/backend/assets/templates/agileDevelopment/image2.png new file mode 100644 index 000000000..4293a61af Binary files /dev/null and b/apps/backend/assets/templates/agileDevelopment/image2.png differ diff --git a/apps/backend/assets/templates/agileDevelopment/image3.png b/apps/backend/assets/templates/agileDevelopment/image3.png new file mode 100644 index 000000000..f8990766e Binary files /dev/null and b/apps/backend/assets/templates/agileDevelopment/image3.png differ diff --git a/apps/backend/assets/templates/hr/cover.jpg b/apps/backend/assets/templates/hr/cover.jpg new file mode 100644 index 000000000..e063ddd27 Binary files /dev/null and b/apps/backend/assets/templates/hr/cover.jpg differ diff --git a/apps/backend/assets/templates/hr/image1.png b/apps/backend/assets/templates/hr/image1.png new file mode 100644 index 000000000..5b95ce12f Binary files /dev/null and b/apps/backend/assets/templates/hr/image1.png differ diff --git a/apps/backend/assets/templates/hr/image2.png b/apps/backend/assets/templates/hr/image2.png new file mode 100644 index 000000000..59f93ced1 Binary files /dev/null and b/apps/backend/assets/templates/hr/image2.png differ diff --git a/apps/backend/assets/templates/hr/image3.png b/apps/backend/assets/templates/hr/image3.png new file mode 100644 index 000000000..aca49ce92 Binary files /dev/null and b/apps/backend/assets/templates/hr/image3.png differ diff --git a/apps/backend/assets/templates/hr/image4.png b/apps/backend/assets/templates/hr/image4.png new file mode 100644 index 000000000..313700a14 Binary files /dev/null and b/apps/backend/assets/templates/hr/image4.png differ diff --git a/apps/backend/assets/templates/hr/image5.png b/apps/backend/assets/templates/hr/image5.png new file mode 100644 index 000000000..ac981746a Binary files /dev/null and b/apps/backend/assets/templates/hr/image5.png differ diff --git a/apps/frontend/src/lib/components/blocks/grid-view/grid-view-header.svelte b/apps/frontend/src/lib/components/blocks/grid-view/grid-view-header.svelte index 25eff5236..e95f9a0db 100644 --- a/apps/frontend/src/lib/components/blocks/grid-view/grid-view-header.svelte +++ b/apps/frontend/src/lib/components/blocks/grid-view/grid-view-header.svelte @@ -13,9 +13,9 @@
-
+
- + {field.name.value}
diff --git a/package.json b/package.json index ebe3fb517..c81a14e77 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "undb", - "version": "1.0.0-96", + "version": "1.0.0-97", "private": true, "scripts": { "build": "NODE_ENV=production bun --bun turbo build", diff --git a/packages/persistence/src/template/template-data.ts b/packages/persistence/src/template/template-data.ts index b6d6e6d2c..cbed464d8 100644 --- a/packages/persistence/src/template/template-data.ts +++ b/packages/persistence/src/template/template-data.ts @@ -1,11 +1,162 @@ import { env } from "@undb/env" -import { templates,type IBaseTemplateDTO,type ITemplateDTO } from "@undb/template" +import { templates, type IBaseTemplateDTO, type ITemplateDTO } from "@undb/template" function getTemplateImage(folder: string, file: string) { return env.UNDB_BASE_URL + "/assets/templates/" + folder + "/" + file } export const templateData: ITemplateDTO[] = [ + { + id: "6ba7b815-9dad-11d1-80b4-00c04fd430c8", + icon: "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", + name: "Human Resource Management", + categories: ["hr"], + cover: getTemplateImage("hr", "cover.jpg"), + images: [ + getTemplateImage("hr", "image1.png"), + getTemplateImage("hr", "image2.png"), + getTemplateImage("hr", "image3.png"), + getTemplateImage("hr", "image4.png"), + getTemplateImage("hr", "image5.png"), + ], + description: "A template for managing human resources, including employees, positions, and departments.", + detail: ` +

UnDB Human Resource Management Template: Streamline Your HR Processes

+ +

Comprehensive HR Management Features for Modern Businesses

+ +

UnDB's Human Resource Management template offers a powerful set of tools to revolutionize your HR operations:

+ +

Employee Management System

+ + +

Department and Payroll Administration

+ + +

Leave Management and Performance Evaluation

+ + +

Benefits of UnDB's HR Software Template

+ +

Transform your human resources processes with our comprehensive solution:

+ + + +

HR Template Structure

+ +

Our HR management system includes five key components:

+ +
    +
  1. Employees Database
  2. +
  3. Departments Tracker
  4. +
  5. Payroll Management System
  6. +
  7. Time Off Request Platform
  8. +
  9. Performance Review Module
  10. +
+ +

Getting Started with UnDB's HR Template

+ +

Follow these steps to implement our HR solution:

+ +
    +
  1. Import the HR template to your UnDB workspace
  2. +
  3. Customize fields and views to match your organization
  4. +
  5. Input employee and department data
  6. +
  7. Configure leave request and performance review workflows
  8. +
  9. Start tracking payroll and departmental budgets
  10. +
+ +

Frequently Asked Questions

+ +

Q: Is UnDB's HR template suitable for small businesses?

+

A: Yes, our template is scalable and can be customized for businesses of all sizes.

+ +

Q: Can I integrate this template with other HR tools?

+

A: UnDB offers various integration options. Contact our support team for specific integration queries.

+ +

Q: How secure is the employee data in this system?

+

A: We prioritize data security with encryption and access controls.

+ +

Transform your HR processes today with UnDB's comprehensive Human Resource Management template!

+ + `, + template: { + type: "base", + template: templates.hr as IBaseTemplateDTO, + }, + }, + { + id: "6ba7b816-9dad-11d1-80b4-00c04fd430c8", + icon: "๐Ÿ”", + name: "Agile Development Management", + categories: ["development", "agile", "startup"], + cover: getTemplateImage("agileDevelopment", "cover.jpg"), + images: [ + getTemplateImage("agileDevelopment", "image1.png"), + getTemplateImage("agileDevelopment", "image2.png"), + getTemplateImage("agileDevelopment", "image3.png"), + ], + description: "A template for managing agile development projects, including requirements, tasks, and defects.", + detail: ` +

Optimize Your Agile Development Process: UnDB's Agile Development Management Template

+ +

Comprehensive Agile Development Management Features

+

UnDB's Agile Development Management template offers a powerful set of tools to enhance your agile development process:

+ + +

Why Choose UnDB for Agile Development Management?

+

UnDB offers unique advantages for your agile development needs:

+ + +

Getting Started with UnDB's Agile Development Template

+

Follow these steps to implement our agile development solution:

+
    +
  1. Import the Agile Development template to your UnDB workspace
  2. +
  3. Customize fields and views to match your team's agile processes
  4. +
  5. Input your project requirements and create initial tasks
  6. +
  7. Set up iterations or sprints and assign team members
  8. +
  9. Start tracking progress, managing defects, and monitoring team performance
  10. +
+ +

Transform your agile development process today with UnDB's comprehensive Agile Development Management template!

+ `, + template: { + type: "base", + template: templates.agileDevelopment as IBaseTemplateDTO, + }, + }, { id: "550e8400-e29b-41d4-a716-446655440000", icon: "๐Ÿš€", @@ -236,46 +387,6 @@ export const templateData: ITemplateDTO[] = [ template: templates.socialMediaContent as IBaseTemplateDTO, }, }, - // { - // id: "6ba7b815-9dad-11d1-80b4-00c04fd430c8", - // icon: "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", - // name: "Human Resource Management", - // categories: ["hr"], - // cover: getTemplateImage("hr", "cover.jpg"), - // images: [getTemplateImage("hr", "image1.png"), getTemplateImage("hr", "image2.png")], - // description: "A template for managing human resources, including employees, positions, and departments.", - // detail: ` - //

Streamline Your Human Resource Management with UnDB's HR Management Template

- //

Comprehensive HR Management Features

- //

UnDB's HR Management template offers a powerful set of tools to enhance your human resource management:

- // - //

Benefits of Using UnDB's HR Management Template

- //

Implementing our HR Management template can bring numerous advantages to your organization:

- // - //

Start transforming your HR processes today with UnDB's comprehensive HR Management template!

- // `, - // template: { - // type: "base", - // template: templates.hr as IBaseTemplateDTO, - // }, - // }, ] if (env.NODE_ENV === "development") { diff --git a/packages/table/src/dto/create-table.dto.ts b/packages/table/src/dto/create-table.dto.ts index e0acaf2ba..b81f2fc8c 100644 --- a/packages/table/src/dto/create-table.dto.ts +++ b/packages/table/src/dto/create-table.dto.ts @@ -4,6 +4,8 @@ import { z } from "@undb/zod" import { createFormDTO } from "../modules/forms/dto/create-form.dto" import { createRecordDTO } from "../modules/records/record/dto/create-record.dto" import { createSchemaDTO, createTablesSchemaDTO } from "../modules/schema/dto/create-schema.dto" +import { fieldId } from "../modules/schema/fields/field-id.vo" +import { fieldName } from "../modules/schema/fields/field-name.vo" import { createViewDTO } from "../modules/views/dto/create-view.dto" import { tableId } from "../table-id.vo" import { tableName } from "../table-name.vo" @@ -15,6 +17,7 @@ export const createTableDTO = z.object({ spaceId: spaceIdSchema, schema: createSchemaDTO, + fieldsOrder: z.array(fieldName.or(fieldId)).optional(), views: createViewDTO.array().optional(), forms: createFormDTO.array().optional(), diff --git a/packages/table/src/modules/schema/schema.vo.ts b/packages/table/src/modules/schema/schema.vo.ts index cd5030a62..f6c5f9500 100644 --- a/packages/table/src/modules/schema/schema.vo.ts +++ b/packages/table/src/modules/schema/schema.vo.ts @@ -82,6 +82,28 @@ export class Schema extends ValueObject { return new WithNewFieldSpecification(field) } + reorderFields(fieldsOrder: string[]): Schema { + const orderedFields: Field[] = [] + const fieldSet = new Set(fieldsOrder) + + // ้ฆ–ๅ…ˆๆทปๅŠ ๆŒ‰็…ง fieldsOrder ๆŽ’ๅบ็š„ๅญ—ๆฎต + for (const idOrName of fieldsOrder) { + const field = this.fieldMapById.get(idOrName) || this.fieldMapByName.get(idOrName) + if (field) { + orderedFields.push(field) + } + } + + // ๆทปๅŠ ๆœชๅœจ fieldsOrder ไธญๆŒ‡ๅฎš็š„ๅญ—ๆฎต + for (const field of this.fields) { + if (!fieldSet.has(field.id.value) && !fieldSet.has(field.name.value)) { + orderedFields.push(field) + } + } + + return new Schema(orderedFields) + } + createField(field: Field) { return new Schema([...this.fields, field]) } diff --git a/packages/table/src/table.do.ts b/packages/table/src/table.do.ts index 6f4ecb9b3..b855cdbc9 100644 --- a/packages/table/src/table.do.ts +++ b/packages/table/src/table.do.ts @@ -83,6 +83,10 @@ export class TableDo extends AggregateRoot { #createReferenceField = createReferenceField + reorderFields(fieldsOrder: string[]) { + this.schema = this.schema.reorderFields(fieldsOrder) + } + getOrderedFields(formId?: FormId, viewId?: string): Field[] { const fields = this.schema.fields if (formId) { diff --git a/packages/table/src/table.factory.ts b/packages/table/src/table.factory.ts index c2d40e03a..bb2a88a2e 100644 --- a/packages/table/src/table.factory.ts +++ b/packages/table/src/table.factory.ts @@ -162,6 +162,12 @@ export class TableFactory { } } + for (const { table, dto } of tables) { + if (Array.isArray(dto.fieldsOrder)) { + table.reorderFields(dto.fieldsOrder) + } + } + return tables.map(({ table, dto }) => { const records = dto.records?.map((record) => RecordDO.create(table, record)) ?? [] return { table, records } diff --git a/packages/template/src/dto/template-schema.dto.ts b/packages/template/src/dto/template-schema.dto.ts index 0f05f4efc..f9f8c5c3a 100644 --- a/packages/template/src/dto/template-schema.dto.ts +++ b/packages/template/src/dto/template-schema.dto.ts @@ -20,6 +20,7 @@ import { createTablesUrlFieldDTO, createTablesUserFieldDTO, createViewWithoutNameDTO, + fieldId, fieldName, flattenCreateRecordDTO, formName, @@ -59,6 +60,7 @@ const templateFormDTO = z.record(formName, createFormWithoutNameDTO) const basicTemplateTableDTO = z.object({ id: tableId.optional(), schema: templateSchemaDTO, + fieldsOrder: z.array(fieldName.or(fieldId)).optional(), views: tempalteViewDTO.optional(), forms: templateFormDTO.optional(), diff --git a/packages/template/src/template.factory.ts b/packages/template/src/template.factory.ts index a7388025e..50b2642b9 100644 --- a/packages/template/src/template.factory.ts +++ b/packages/template/src/template.factory.ts @@ -50,6 +50,7 @@ export class TemplateFactory { name, schema, spaceId, + fieldsOrder: table.fieldsOrder, views, forms, diff --git a/packages/template/src/template/value-objects/template-category.vo.ts b/packages/template/src/template/value-objects/template-category.vo.ts index 0fed6d4ce..c5fd807be 100644 --- a/packages/template/src/template/value-objects/template-category.vo.ts +++ b/packages/template/src/template/value-objects/template-category.vo.ts @@ -16,6 +16,8 @@ export const templateCategory = z.enum([ "startup", "project", "personal", + "development", + "agile", ]) export type ITemplateCategory = z.infer diff --git a/packages/template/src/templates/agileDevelopment.base.json b/packages/template/src/templates/agileDevelopment.base.json new file mode 100644 index 000000000..d23c4055f --- /dev/null +++ b/packages/template/src/templates/agileDevelopment.base.json @@ -0,0 +1,1219 @@ +{ + "Agile Development Management": { + "tables": { + "Requirements": { + "fieldsOrder": [ + "Title", + "Description", + "Priority", + "Status", + "Created Date", + "Estimated Completion Date", + "Actual Completion Date", + "Assignee", + "Assignee Name", + "Related Tasks", + "Related Defects" + ], + "schema": { + "Title": { + "id": "title", + "type": "string", + "constraint": { + "required": true + }, + "display": true + }, + "Description": { + "id": "description", + "type": "longText" + }, + "Priority": { + "id": "priority", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "high", + "name": "High", + "color": "red" + }, + { + "id": "medium", + "name": "Medium", + "color": "yellow" + }, + { + "id": "low", + "name": "Low", + "color": "green" + } + ] + } + }, + "Status": { + "id": "status", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "new", + "name": "New", + "color": "blue" + }, + { + "id": "in_progress", + "name": "In Progress", + "color": "yellow" + }, + { + "id": "completed", + "name": "Completed", + "color": "green" + } + ] + } + }, + "Created Date": { + "id": "created_date", + "type": "date", + "constraint": { + "required": true + } + }, + "Estimated Completion Date": { + "id": "estimated_completion_date", + "type": "date" + }, + "Actual Completion Date": { + "id": "actual_completion_date", + "type": "date" + }, + "Assignee": { + "id": "assignee", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Team Members" + } + } + }, + "Assignee Name": { + "id": "assignee_name", + "type": "rollup", + "option": { + "referenceFieldId": "assignee", + "rollupFieldId": "name", + "fn": "lookup" + } + }, + "Related Tasks": { + "id": "related_tasks", + "type": "reference", + "option": { + "symmetricFieldId": "related_requirement" + } + }, + "Related Defects": { + "id": "related_defects", + "type": "reference", + "option": { + "symmetricFieldId": "related_requirement" + } + } + }, + "views": { + "All Requirements": { + "type": "grid", + "sort": [ + { + "fieldId": "created_date", + "direction": "desc" + } + ] + }, + "By Status": { + "type": "kanban", + "kanban": { + "field": "status" + } + } + }, + "records": [ + { + "id": "REQ001", + "title": "User Login Feature", + "description": "Implement user login and authentication functionality", + "priority": "high", + "status": "in_progress", + "created_date": "2023-05-01", + "estimated_completion_date": "2023-05-15", + "assignee": ["TM001"], + "related_tasks": ["TASK001", "TASK002"], + "related_defects": ["DEF001"] + }, + { + "id": "REQ002", + "title": "Data Visualization Dashboard", + "description": "Create a dashboard for displaying key metrics", + "priority": "medium", + "status": "new", + "created_date": "2023-05-02", + "estimated_completion_date": "2023-05-30", + "assignee": ["TM002"], + "related_tasks": ["TASK003"] + }, + { + "id": "REQ003", + "title": "User Profile Management", + "description": "Implement functionality for users to manage their profiles", + "priority": "medium", + "status": "new", + "created_date": "2023-05-03", + "estimated_completion_date": "2023-05-20", + "assignee": ["TM003"], + "related_tasks": ["TASK004", "TASK005"] + }, + { + "id": "REQ004", + "title": "Search Functionality", + "description": "Implement search feature across the application", + "priority": "high", + "status": "new", + "created_date": "2023-05-04", + "estimated_completion_date": "2023-05-25", + "assignee": ["TM004"], + "related_tasks": ["TASK006"] + }, + { + "id": "REQ005", + "title": "Email Notification System", + "description": "Implement email notifications for various user actions", + "priority": "low", + "status": "new", + "created_date": "2023-05-05", + "estimated_completion_date": "2023-06-10", + "assignee": ["TM001"], + "related_tasks": ["TASK007", "TASK008"] + }, + { + "id": "REQ006", + "title": "Mobile Responsiveness", + "description": "Ensure the application is fully responsive on mobile devices", + "priority": "high", + "status": "new", + "created_date": "2023-05-06", + "estimated_completion_date": "2023-06-15", + "assignee": ["TM002"], + "related_tasks": ["TASK009", "TASK010"] + }, + { + "id": "REQ007", + "title": "User Activity Logging", + "description": "Implement logging system for user activities", + "priority": "medium", + "status": "new", + "created_date": "2023-05-07", + "estimated_completion_date": "2023-05-28", + "assignee": ["TM003"], + "related_tasks": ["TASK011"] + }, + { + "id": "REQ008", + "title": "Data Export Feature", + "description": "Allow users to export their data in various formats", + "priority": "low", + "status": "new", + "created_date": "2023-05-08", + "estimated_completion_date": "2023-06-20", + "assignee": ["TM004"], + "related_tasks": ["TASK012", "TASK013"] + }, + { + "id": "REQ009", + "title": "Multi-language Support", + "description": "Implement multi-language support for the application", + "priority": "medium", + "status": "new", + "created_date": "2023-05-09", + "estimated_completion_date": "2023-06-30", + "assignee": ["TM001"], + "related_tasks": ["TASK014", "TASK015"] + }, + { + "id": "REQ010", + "title": "Performance Optimization", + "description": "Optimize application performance and loading times", + "priority": "high", + "status": "new", + "created_date": "2023-05-10", + "estimated_completion_date": "2023-06-25", + "assignee": ["TM002"], + "related_tasks": ["TASK016", "TASK017"] + } + ] + }, + "Defects": { + "fieldsOrder": [ + "Title", + "Description", + "Severity", + "Status", + "Created Date", + "Resolved Date", + "Assignee", + "Assignee Name", + "Related Requirement" + ], + "schema": { + "Title": { + "id": "title", + "type": "string", + "constraint": { + "required": true + }, + "display": true + }, + "Description": { + "id": "description", + "type": "longText" + }, + "Severity": { + "id": "severity", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "critical", + "name": "Critical", + "color": "red" + }, + { + "id": "major", + "name": "Major", + "color": "orange" + }, + { + "id": "minor", + "name": "Minor", + "color": "yellow" + } + ] + } + }, + "Status": { + "id": "status", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "open", + "name": "Open", + "color": "red" + }, + { + "id": "in_progress", + "name": "In Progress", + "color": "yellow" + }, + { + "id": "resolved", + "name": "Resolved", + "color": "green" + } + ] + } + }, + "Created Date": { + "id": "created_date", + "type": "date", + "constraint": { + "required": true + } + }, + "Resolved Date": { + "id": "resolved_date", + "type": "date" + }, + "Assignee": { + "id": "assignee", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Team Members" + } + } + }, + "Assignee Name": { + "id": "assignee_name", + "type": "rollup", + "option": { + "referenceFieldId": "assignee", + "rollupFieldId": "name", + "fn": "lookup" + } + }, + "Related Requirement": { + "id": "related_requirement", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Requirements" + } + } + } + }, + "views": { + "All Defects": { + "type": "grid", + "sort": [ + { + "fieldId": "created_date", + "direction": "desc" + } + ] + }, + "By Status": { + "type": "kanban", + "kanban": { + "field": "status" + } + } + }, + "records": [ + { + "id": "DEF001", + "title": "Login Button Unresponsive", + "description": "The login button doesn't respond when clicked", + "severity": "major", + "status": "open", + "created_date": "2023-05-03", + "assignee": ["TM003"], + "related_requirement": ["REQ001"] + }, + { + "id": "DEF002", + "title": "Incorrect Data in Dashboard", + "description": "The sales data in the dashboard is showing incorrect values", + "severity": "critical", + "status": "in_progress", + "created_date": "2023-05-04", + "assignee": ["TM004"], + "related_requirement": ["REQ002"] + }, + { + "id": "DEF003", + "title": "Profile Picture Upload Fails", + "description": "Users are unable to upload profile pictures", + "severity": "minor", + "status": "open", + "created_date": "2023-05-05", + "assignee": ["TM001"], + "related_requirement": ["REQ003"] + }, + { + "id": "DEF004", + "title": "Search Results Inconsistent", + "description": "Search results are inconsistent across different pages", + "severity": "major", + "status": "open", + "created_date": "2023-05-06", + "assignee": ["TM002"], + "related_requirement": ["REQ004"] + }, + { + "id": "DEF005", + "title": "Email Notifications Not Sending", + "description": "Users are not receiving email notifications", + "severity": "critical", + "status": "in_progress", + "created_date": "2023-05-07", + "assignee": ["TM003"], + "related_requirement": ["REQ005"] + }, + { + "id": "DEF006", + "title": "Mobile Layout Broken", + "description": "The layout is broken on certain mobile devices", + "severity": "major", + "status": "open", + "created_date": "2023-05-08", + "assignee": ["TM004"], + "related_requirement": ["REQ006"] + }, + { + "id": "DEF007", + "title": "User Activity Logs Incomplete", + "description": "Some user activities are not being logged", + "severity": "minor", + "status": "open", + "created_date": "2023-05-09", + "assignee": ["TM001"], + "related_requirement": ["REQ007"] + }, + { + "id": "DEF008", + "title": "Data Export Formatting Issues", + "description": "Exported data has formatting issues in certain file types", + "severity": "minor", + "status": "open", + "created_date": "2023-05-10", + "assignee": ["TM002"], + "related_requirement": ["REQ008"] + }, + { + "id": "DEF009", + "title": "Language Switch Causes Crash", + "description": "App crashes when switching languages in certain scenarios", + "severity": "critical", + "status": "in_progress", + "created_date": "2023-05-11", + "assignee": ["TM003"], + "related_requirement": ["REQ009"] + }, + { + "id": "DEF010", + "title": "Slow Loading on Large Datasets", + "description": "Application becomes unresponsive with large datasets", + "severity": "major", + "status": "open", + "created_date": "2023-05-12", + "assignee": ["TM004"], + "related_requirement": ["REQ010"] + } + ] + }, + "Iterations": { + "fieldsOrder": ["Name", "Start Date", "End Date", "Status", "Goals", "Related Requirements", "Related Tasks"], + "schema": { + "Name": { + "id": "name", + "type": "string", + "constraint": { + "required": true + }, + "display": true + }, + "Start Date": { + "id": "start_date", + "type": "date", + "constraint": { + "required": true + } + }, + "End Date": { + "id": "end_date", + "type": "date", + "constraint": { + "required": true + } + }, + "Status": { + "id": "status", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "planned", + "name": "Planned", + "color": "blue" + }, + { + "id": "in_progress", + "name": "In Progress", + "color": "yellow" + }, + { + "id": "completed", + "name": "Completed", + "color": "green" + } + ] + } + }, + "Goals": { + "id": "goals", + "type": "longText" + }, + "Related Requirements": { + "id": "related_requirements", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Requirements" + } + } + }, + "Related Tasks": { + "id": "related_tasks", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Tasks" + } + } + } + }, + "views": { + "All Iterations": { + "type": "grid", + "sort": [ + { + "fieldId": "start_date", + "direction": "desc" + } + ] + } + }, + "records": [ + { + "id": "IT001", + "name": "Sprint 1", + "start_date": "2023-05-01", + "end_date": "2023-05-14", + "status": "in_progress", + "goals": "Complete user login feature and start dashboard development", + "related_requirements": ["REQ001", "REQ002"], + "related_tasks": ["TASK001", "TASK002", "TASK003"] + }, + { + "id": "IT002", + "name": "Sprint 2", + "start_date": "2023-05-15", + "end_date": "2023-05-28", + "status": "planned", + "goals": "Finish dashboard development and address major defects", + "related_requirements": ["REQ002"], + "related_tasks": ["TASK004", "TASK005"] + }, + { + "id": "IT003", + "name": "Sprint 3", + "start_date": "2023-05-29", + "end_date": "2023-06-11", + "status": "planned", + "goals": "Implement user profile management and search functionality", + "related_requirements": ["REQ003", "REQ004"], + "related_tasks": ["TASK006", "TASK007", "TASK008"] + }, + { + "id": "IT004", + "name": "Sprint 4", + "start_date": "2023-06-12", + "end_date": "2023-06-25", + "status": "planned", + "goals": "Develop email notification system and improve mobile responsiveness", + "related_requirements": ["REQ005", "REQ006"], + "related_tasks": ["TASK009", "TASK010", "TASK011"] + }, + { + "id": "IT005", + "name": "Sprint 5", + "start_date": "2023-06-26", + "end_date": "2023-07-09", + "status": "planned", + "goals": "Implement user activity logging and data export feature", + "related_requirements": ["REQ007", "REQ008"], + "related_tasks": ["TASK012", "TASK013", "TASK014"] + }, + { + "id": "IT006", + "name": "Sprint 6", + "start_date": "2023-07-10", + "end_date": "2023-07-23", + "status": "planned", + "goals": "Add multi-language support and focus on performance optimization", + "related_requirements": ["REQ009", "REQ010"], + "related_tasks": ["TASK015", "TASK016", "TASK017"] + } + ] + }, + "Test Cases": { + "fieldsOrder": [ + "Title", + "Description", + "Status", + "Created Date", + "Last Executed Date", + "Related Requirement", + "Related Defect" + ], + "schema": { + "Title": { + "id": "title", + "type": "string", + "constraint": { + "required": true + }, + "display": true + }, + "Description": { + "id": "description", + "type": "longText" + }, + "Status": { + "id": "status", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "not_executed", + "name": "Not Executed", + "color": "gray" + }, + { + "id": "passed", + "name": "Passed", + "color": "green" + }, + { + "id": "failed", + "name": "Failed", + "color": "red" + } + ] + } + }, + "Created Date": { + "id": "created_date", + "type": "date", + "constraint": { + "required": true + } + }, + "Last Executed Date": { + "id": "last_executed_date", + "type": "date" + }, + "Related Requirement": { + "id": "related_requirement", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Requirements" + } + } + }, + "Related Defect": { + "id": "related_defect", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Defects" + } + } + } + }, + "views": { + "All Test Cases": { + "type": "grid", + "sort": [ + { + "fieldId": "created_date", + "direction": "desc" + } + ] + }, + "By Status": { + "type": "kanban", + "kanban": { + "field": "status" + } + } + }, + "records": [ + { + "id": "TC001", + "title": "User Login Test", + "description": "Test user login functionality with valid credentials", + "status": "failed", + "created_date": "2023-05-02", + "last_executed_date": "2023-05-03", + "related_requirement": ["REQ001"], + "related_defect": ["DEF001"] + }, + { + "id": "TC002", + "title": "Dashboard Data Accuracy Test", + "description": "Verify the accuracy of data displayed in the dashboard", + "status": "not_executed", + "created_date": "2023-05-03", + "related_requirement": ["REQ002"] + }, + { + "id": "TC003", + "title": "User Profile Update Test", + "description": "Test the functionality of updating user profile information", + "status": "passed", + "created_date": "2023-05-04", + "last_executed_date": "2023-05-05", + "related_requirement": ["REQ003"] + }, + { + "id": "TC004", + "title": "Search Functionality Test", + "description": "Verify the search feature returns accurate results", + "status": "failed", + "created_date": "2023-05-05", + "last_executed_date": "2023-05-06", + "related_requirement": ["REQ004"], + "related_defect": ["DEF004"] + }, + { + "id": "TC005", + "title": "Email Notification Test", + "description": "Test if email notifications are sent correctly for various actions", + "status": "not_executed", + "created_date": "2023-05-06", + "related_requirement": ["REQ005"] + }, + { + "id": "TC006", + "title": "Mobile Responsiveness Test", + "description": "Verify the application's responsiveness on various mobile devices", + "status": "failed", + "created_date": "2023-05-07", + "last_executed_date": "2023-05-08", + "related_requirement": ["REQ006"], + "related_defect": ["DEF006"] + }, + { + "id": "TC007", + "title": "User Activity Logging Test", + "description": "Verify that all user activities are correctly logged", + "status": "passed", + "created_date": "2023-05-08", + "last_executed_date": "2023-05-09", + "related_requirement": ["REQ007"] + }, + { + "id": "TC008", + "title": "Data Export Feature Test", + "description": "Test the functionality of exporting data in various formats", + "status": "failed", + "created_date": "2023-05-09", + "last_executed_date": "2023-05-10", + "related_requirement": ["REQ008"], + "related_defect": ["DEF008"] + }, + { + "id": "TC009", + "title": "Multi-language Support Test", + "description": "Verify that the application correctly supports multiple languages", + "status": "not_executed", + "created_date": "2023-05-10", + "related_requirement": ["REQ009"] + }, + { + "id": "TC010", + "title": "Performance Optimization Test", + "description": "Test the application's performance under various load conditions", + "status": "not_executed", + "created_date": "2023-05-11", + "related_requirement": ["REQ010"] + } + ] + }, + "Tasks": { + "fieldsOrder": [ + "Title", + "Description", + "Status", + "Priority", + "Estimated Hours", + "Actual Hours", + "Assignee", + "Assignee Name", + "Related Requirement", + "Related Iteration" + ], + "schema": { + "Title": { + "id": "title", + "type": "string", + "constraint": { + "required": true + }, + "display": true + }, + "Description": { + "id": "description", + "type": "longText" + }, + "Status": { + "id": "status", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "to_do", + "name": "To Do", + "color": "blue" + }, + { + "id": "in_progress", + "name": "In Progress", + "color": "yellow" + }, + { + "id": "done", + "name": "Done", + "color": "green" + } + ] + } + }, + "Priority": { + "id": "priority", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "high", + "name": "High", + "color": "red" + }, + { + "id": "medium", + "name": "Medium", + "color": "yellow" + }, + { + "id": "low", + "name": "Low", + "color": "green" + } + ] + } + }, + "Estimated Hours": { + "id": "estimated_hours", + "type": "number" + }, + "Actual Hours": { + "id": "actual_hours", + "type": "number" + }, + "Assignee": { + "id": "assignee", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Team Members" + } + } + }, + "Assignee Name": { + "id": "assignee_name", + "type": "rollup", + "option": { + "referenceFieldId": "assignee", + "rollupFieldId": "name", + "fn": "lookup" + } + }, + "Related Requirement": { + "id": "related_requirement", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Requirements" + } + } + }, + "Related Iteration": { + "id": "related_iteration", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Iterations" + } + } + } + }, + "views": { + "All Tasks": { + "type": "grid", + "sort": [ + { + "fieldId": "priority", + "direction": "desc" + } + ] + }, + "By Status": { + "type": "kanban", + "kanban": { + "field": "status" + } + } + }, + "records": [ + { + "id": "TASK001", + "title": "Implement Login UI", + "description": "Create the user interface for the login screen", + "status": "done", + "priority": "high", + "estimated_hours": 8, + "actual_hours": 10, + "assignee": ["TM001"], + "related_requirement": ["REQ001"], + "related_iteration": ["IT001"] + }, + { + "id": "TASK002", + "title": "Implement Login Backend", + "description": "Develop the backend logic for user authentication", + "status": "in_progress", + "priority": "high", + "estimated_hours": 16, + "actual_hours": 12, + "assignee": ["TM002"], + "related_requirement": ["REQ001"], + "related_iteration": ["IT001"] + }, + { + "id": "TASK003", + "title": "Design Dashboard Layout", + "description": "Create the layout design for the data visualization dashboard", + "status": "to_do", + "priority": "medium", + "estimated_hours": 12, + "assignee": ["TM003"], + "related_requirement": ["REQ002"], + "related_iteration": ["IT001"] + } + ] + }, + "Time Entries": { + "fieldsOrder": ["Date", "Hours", "Description", "Team Member", "Team Member Name", "Related Task"], + "schema": { + "Date": { + "id": "date", + "type": "date", + "constraint": { + "required": true + } + }, + "Hours": { + "id": "hours", + "type": "number", + "constraint": { + "required": true + } + }, + "Description": { + "id": "description", + "type": "longText" + }, + "Team Member": { + "id": "team_member", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Team Members" + } + } + }, + "Team Member Name": { + "id": "team_member_name", + "type": "rollup", + "option": { + "referenceFieldId": "team_member", + "rollupFieldId": "name", + "fn": "lookup" + } + }, + "Related Task": { + "id": "related_task", + "type": "reference", + "option": { + "foreignTable": { + "tableName": "Tasks" + } + } + } + }, + "views": { + "All Time Entries": { + "type": "grid", + "sort": [ + { + "fieldId": "date", + "direction": "desc" + } + ] + } + }, + "records": [ + { + "id": "TE001", + "date": "2023-05-01", + "hours": 6, + "description": "Worked on login UI implementation", + "team_member": ["TM001"], + "related_task": ["TASK001"] + }, + { + "id": "TE002", + "date": "2023-05-02", + "hours": 8, + "description": "Continued work on login backend", + "team_member": ["TM002"], + "related_task": ["TASK002"] + } + ] + }, + "Team Members": { + "fieldsOrder": ["Name", "Email", "Role", "Assigned Tasks", "Assigned Requirements", "Time Entries"], + "schema": { + "Name": { + "id": "name", + "type": "string", + "constraint": { + "required": true + }, + "display": true + }, + "Email": { + "id": "email", + "type": "email", + "constraint": { + "required": true + } + }, + "Role": { + "id": "role", + "type": "select", + "constraint": { + "max": 1, + "required": true + }, + "option": { + "options": [ + { + "id": "developer", + "name": "Developer", + "color": "blue" + }, + { + "id": "tester", + "name": "Tester", + "color": "green" + }, + { + "id": "product_owner", + "name": "Product Owner", + "color": "purple" + }, + { + "id": "scrum_master", + "name": "Scrum Master", + "color": "orange" + } + ] + } + }, + "Assigned Tasks": { + "id": "assigned_tasks", + "type": "reference", + "option": { + "symmetricFieldId": "assignee" + } + }, + "Assigned Requirements": { + "id": "assigned_requirements", + "type": "reference", + "option": { + "symmetricFieldId": "assignee" + } + }, + "Time Entries": { + "id": "time_entries", + "type": "reference", + "option": { + "symmetricFieldId": "team_member" + } + } + }, + "views": { + "All Team Members": { + "type": "grid" + }, + "By Role": { + "type": "kanban", + "kanban": { + "field": "role" + } + } + }, + "records": [ + { + "id": "TM001", + "name": "John Doe", + "email": "john.doe@example.com", + "role": "developer", + "assigned_tasks": ["TASK001"], + "assigned_requirements": ["REQ001"], + "time_entries": ["TE001"] + }, + { + "id": "TM002", + "name": "Jane Smith", + "email": "jane.smith@example.com", + "role": "developer", + "assigned_tasks": ["TASK002"], + "assigned_requirements": ["REQ002"], + "time_entries": ["TE002"] + }, + { + "id": "TM003", + "name": "Bob Johnson", + "email": "bob.johnson@example.com", + "role": "tester", + "assigned_tasks": ["TASK003"] + }, + { + "id": "TM004", + "name": "Alice Brown", + "email": "alice.brown@example.com", + "role": "product_owner" + } + ] + } + } + } +} diff --git a/packages/template/src/templates/hr.base.json b/packages/template/src/templates/hr.base.json index 8f85b23d6..4592bee12 100644 --- a/packages/template/src/templates/hr.base.json +++ b/packages/template/src/templates/hr.base.json @@ -2,6 +2,24 @@ "Human Resource Management": { "tables": { "Employees": { + "fieldsOrder": [ + "Name", + "Position", + "Department", + "Department Name", + "Manage Department", + "Manage Department Name", + "Start Date", + "Salary", + "Reports To", + "Manager Name", + "Subordinates", + "Subordinates Count", + "Subordinates Name", + "Email", + "Phone", + "Employment Status" + ], "schema": { "Name": { "id": "name", @@ -128,6 +146,24 @@ "fn": "lookup" } }, + "Subordinates Count": { + "id": "subordinates_count", + "type": "rollup", + "option": { + "referenceFieldId": "subordinates", + "rollupFieldId": "id", + "fn": "count" + } + }, + "Subordinates Name": { + "id": "subordinates_name", + "type": "rollup", + "option": { + "referenceFieldId": "subordinates", + "rollupFieldId": "name", + "fn": "lookup" + } + }, "Email": { "id": "email", "type": "email", @@ -198,7 +234,8 @@ "start_date": "2023-01-15", "salary": 70000, "email": "alice@example.com", - "employment_status": "full_time" + "employment_status": "full_time", + "phone": "123-456-7890" }, { "id": "EMP002", @@ -209,7 +246,8 @@ "salary": 90000, "reports_to": ["EMP003"], "email": "bob@example.com", - "employment_status": "full_time" + "employment_status": "full_time", + "phone": "234-567-8901" }, { "id": "EMP003", @@ -219,11 +257,120 @@ "start_date": "2021-03-10", "salary": 60000, "email": "carol@example.com", - "employment_status": "full_time" + "employment_status": "full_time", + "phone": "345-678-9012" + }, + { + "id": "EMP004", + "name": "David Brown", + "position": "developer", + "department": ["dept1"], + "start_date": "2023-02-01", + "salary": 75000, + "email": "david@example.com", + "employment_status": "full_time", + "phone": "456-789-0123" + }, + { + "id": "EMP005", + "name": "Emma Davis", + "position": "designer", + "department": ["dept3"], + "start_date": "2022-11-15", + "salary": 65000, + "email": "emma@example.com", + "employment_status": "full_time", + "phone": "567-890-1234" + }, + { + "id": "EMP006", + "name": "Frank Wilson", + "position": "marketing", + "department": ["dept2"], + "start_date": "2023-03-20", + "salary": 68000, + "email": "frank@example.com", + "employment_status": "full_time", + "phone": "678-901-2345" + }, + { + "id": "EMP007", + "name": "Grace Taylor", + "position": "finance", + "department": ["dept2"], + "start_date": "2022-09-01", + "salary": 72000, + "email": "grace@example.com", + "employment_status": "full_time", + "phone": "789-012-3456" + }, + { + "id": "EMP008", + "name": "Henry Clark", + "position": "developer", + "department": ["dept1"], + "start_date": "2023-04-10", + "salary": 71000, + "email": "henry@example.com", + "employment_status": "full_time", + "phone": "890-123-4567" + }, + { + "id": "EMP009", + "name": "Isabel Rodriguez", + "position": "hr", + "department": ["dept3"], + "start_date": "2022-07-15", + "salary": 62000, + "email": "isabel@example.com", + "employment_status": "full_time", + "phone": "901-234-5678" + }, + { + "id": "EMP010", + "name": "Jack Thompson", + "position": "manager", + "department": ["dept1"], + "start_date": "2021-12-01", + "salary": 92000, + "email": "jack@example.com", + "employment_status": "full_time", + "phone": "012-345-6789" + }, + { + "id": "EMP011", + "name": "Karen Lee", + "position": "designer", + "department": ["dept3"], + "start_date": "2023-01-05", + "salary": 67000, + "email": "karen@example.com", + "employment_status": "full_time", + "phone": "123-456-7891" + }, + { + "id": "EMP012", + "name": "Liam Harris", + "position": "developer", + "department": ["dept1"], + "start_date": "2022-10-20", + "salary": 73000, + "email": "liam@example.com", + "employment_status": "full_time", + "phone": "234-567-8902" } ] }, "Departments": { + "fieldsOrder": [ + "Department Name", + "Manager", + "Manager Name", + "Budget", + "Location", + "Employees", + "Employees Count" + ], "schema": { "Department Name": { "id": "department_name", @@ -306,10 +453,60 @@ "manager": null, "budget": 250000, "location": "San Francisco" + }, + { + "id": "dept4", + "department_name": "Marketing", + "manager": ["EMP006"], + "budget": 400000, + "location": "Los Angeles" + }, + { + "id": "dept5", + "department_name": "Finance", + "manager": ["EMP007"], + "budget": 350000, + "location": "Boston" + }, + { + "id": "dept6", + "department_name": "Customer Support", + "manager": null, + "budget": 200000, + "location": "Dallas" + }, + { + "id": "dept7", + "department_name": "Sales", + "manager": null, + "budget": 450000, + "location": "Miami" + }, + { + "id": "dept8", + "department_name": "Research and Development", + "manager": ["EMP010"], + "budget": 600000, + "location": "Seattle" + }, + { + "id": "dept9", + "department_name": "Quality Assurance", + "manager": null, + "budget": 180000, + "location": "Austin" + }, + { + "id": "dept10", + "department_name": "Operations", + "manager": null, + "budget": 280000, + "location": "Denver" } ] }, "Payroll": { + "fieldsOrder": ["Employee Name", "Employee", "Month", "Amount", "Bonus", "Deductions", "Net Pay"], "schema": { "Employee Name": { "id": "employee_name", @@ -404,16 +601,89 @@ "bonus": 300, "deductions": 800, "net_pay": 5500 + }, + { + "employee": ["EMP004"], + "month": "2023-08-01", + "amount": 7500, + "bonus": 600, + "deductions": 1100, + "net_pay": 7000 + }, + { + "employee": ["EMP005"], + "month": "2023-08-01", + "amount": 6500, + "bonus": 400, + "deductions": 900, + "net_pay": 6000 + }, + { + "employee": ["EMP006"], + "month": "2023-08-01", + "amount": 6800, + "bonus": 450, + "deductions": 950, + "net_pay": 6300 + }, + { + "employee": ["EMP007"], + "month": "2023-08-01", + "amount": 7200, + "bonus": 550, + "deductions": 1050, + "net_pay": 6700 + }, + { + "employee": ["EMP008"], + "month": "2023-08-01", + "amount": 7100, + "bonus": 520, + "deductions": 1020, + "net_pay": 6600 + }, + { + "employee": ["EMP009"], + "month": "2023-08-01", + "amount": 6200, + "bonus": 320, + "deductions": 820, + "net_pay": 5700 + }, + { + "employee": ["EMP010"], + "month": "2023-08-01", + "amount": 9200, + "bonus": 1100, + "deductions": 1600, + "net_pay": 8700 + }, + { + "employee": ["EMP011"], + "month": "2023-08-01", + "amount": 6700, + "bonus": 420, + "deductions": 920, + "net_pay": 6200 + }, + { + "employee": ["EMP012"], + "month": "2023-08-01", + "amount": 7300, + "bonus": 570, + "deductions": 1070, + "net_pay": 6800 } ] }, "Time Off Requests": { + "fieldsOrder": ["Employee Name", "Employee", "Start Date", "End Date", "Type", "Status", "Reason"], "schema": { "Employee": { "id": "employee", "type": "reference", "option": { - "createSymmetricField": true, + "createSymmetricField": false, "foreignTable": { "tableName": "Employees" } @@ -519,6 +789,38 @@ } } }, + "forms": { + "Time Off Request Form": { + "fields": [ + { + "fieldId": "employee", + "hidden": false, + "required": true + }, + { + "fieldId": "start_date", + "hidden": false, + "required": true + }, + { + "fieldId": "end_date", + "hidden": false, + "required": true + }, + { + "fieldId": "type", + "hidden": false, + "defaultValue": "vacation", + "required": true + }, + { + "fieldId": "reason", + "hidden": false, + "required": true + } + ] + } + }, "records": [ { "employee": ["EMP001"], @@ -543,10 +845,77 @@ "type": "sick", "status": "approved", "reason": "Recovering from surgery" + }, + { + "employee": ["EMP004"], + "start_date": "2023-12-20", + "end_date": "2023-12-31", + "type": "vacation", + "status": "approved", + "reason": "Holiday break" + }, + { + "employee": ["EMP005"], + "start_date": "2023-09-25", + "end_date": "2023-09-26", + "type": "personal", + "status": "approved", + "reason": "Attending a wedding" + }, + { + "employee": ["EMP006"], + "start_date": "2023-10-05", + "end_date": "2023-10-07", + "type": "sick", + "status": "approved", + "reason": "Flu" + }, + { + "employee": ["EMP007"], + "start_date": "2023-11-20", + "end_date": "2023-11-24", + "type": "vacation", + "status": "pending", + "reason": "Thanksgiving break" + }, + { + "employee": ["EMP008"], + "start_date": "2023-12-01", + "end_date": "2023-12-02", + "type": "personal", + "status": "approved", + "reason": "Moving to a new apartment" + }, + { + "employee": ["EMP009"], + "start_date": "2023-09-15", + "end_date": "2023-09-16", + "type": "sick", + "status": "approved", + "reason": "Dental procedure" + }, + { + "employee": ["EMP010"], + "start_date": "2023-10-10", + "end_date": "2023-10-14", + "type": "vacation", + "status": "approved", + "reason": "Family reunion" } ] }, "Performance Reviews": { + "fieldsOrder": [ + "Employee Name", + "Performance Rating", + "Employee", + "Review Date", + "Reviewer", + "Reviewer Name", + "Comments", + "Goals", + "Next Review Date" + ], "schema": { "Employee": { "id": "employee", @@ -569,7 +938,7 @@ "id": "reviewer", "type": "reference", "option": { - "createSymmetricField": true, + "createSymmetricField": false, "foreignTable": { "tableName": "Employees" } @@ -642,6 +1011,58 @@ "comments": "Outstanding leadership and project management.", "goals": "Mentor junior team members", "next_review_date": "2024-01-01" + }, + { + "employee": ["EMP003"], + "review_date": "2023-06-20", + "reviewer": ["EMP010"], + "performance_rating": 4, + "comments": "Excellent HR initiatives implemented.", + "goals": "Develop new employee onboarding program", + "next_review_date": "2023-12-20" + }, + { + "employee": ["EMP004"], + "review_date": "2023-07-10", + "reviewer": ["EMP002"], + "performance_rating": 3, + "comments": "Good technical skills, needs improvement in communication.", + "goals": "Enhance communication with team members", + "next_review_date": "2024-01-10" + }, + { + "employee": ["EMP005"], + "review_date": "2023-06-25", + "reviewer": ["EMP010"], + "performance_rating": 4, + "comments": "Creative designs, meets deadlines consistently.", + "goals": "Explore new design tools and techniques", + "next_review_date": "2023-12-25" + }, + { + "employee": ["EMP006"], + "review_date": "2023-07-05", + "reviewer": ["EMP003"], + "performance_rating": 4, + "comments": "Effective marketing campaigns, good team player.", + "goals": "Develop skills in digital marketing", + "next_review_date": "2024-01-05" + }, + { + "employee": ["EMP007"], + "review_date": "2023-06-30", + "reviewer": ["EMP010"], + "performance_rating": 5, + "comments": "Exceptional financial analysis and reporting.", + "goals": "Lead a cost-saving initiative", + "next_review_date": "2023-12-30" + }, + { + "employee": ["EMP008"], + "review_date": "2023-07-15", + "reviewer": ["EMP002"], + "performance_rating": 4, + "comments": "Strong problem-solving skills, reliable team member." } ] } diff --git a/packages/template/src/templates/index.ts b/packages/template/src/templates/index.ts index c4d2d5c0c..07a8332df 100644 --- a/packages/template/src/templates/index.ts +++ b/packages/template/src/templates/index.ts @@ -1,3 +1,4 @@ +import { default as agileDevelopment } from "./agileDevelopment.base.json" import { default as crm } from "./crm.base.json" import { default as eventPlaningList } from "./eventPlaning.base.json" import { default as hr } from "./hr.base.json" @@ -18,6 +19,8 @@ const templates = { salesCrm, socialMediaContent, hr, + agileDevelopment, } as const export { templates } +