Skip to main content
Version: MNSR

Attendance Tracking for Employees

Author(s)

  • Arpita Dey

Last Updated Date

[2024-11-28]


SRS References


Version History

VersionDateChangesAuthor
1.02024-11-28Initial draftArpita Dey
............

Feature Overview

Objective:
The feature is a comprehensive system designed to efficiently manage and monitor employees by tracking their attendance, maintaining associated documents, and organizing workplace zones. It incorporates hierarchical management structures, enabling seamless reporting and supervisory relationships. Additionally, the feature leverages geofencing technology to ensure accurate and location-based attendance tracking. It also includes secure handling of sensitive information such as employee bank details, fostering trust and ensuring compliance with data protection standards.


Scope:
This feature provides a robust framework for managing a wide range of employee-related functionalities. It includes advanced employee attendance tracking using geozones, ensuring location-specific accuracy and compliance. The system supports comprehensive document management, enabling secure storage, retrieval, and monitoring of employee-related documents. It also facilitates maintaining clear and organized hierarchical associations between owners, managers, and departments, streamlining reporting structures and operational workflows. Additionally, the feature integrates tools for securely handling employee bank details, ensuring financial data privacy and accuracy. Workplace geofencing is also incorporated, enabling precise delineation of work zones to optimize attendance tracking and operational oversight.

Dependencies:

  1. Database for storing and managing the data structures represented in the ERD.
  2. APIs for geolocation, attendance logging, and document management.

Requirements:

  1. Enable geofence-based attendance tracking for employees.
  2. Maintain a database of employee details, including personal, professional, and banking information.
  3. Facilitate the secure storage and retrieval of employee documents.
  4. Establish hierarchical relationships among owners, managers, and employees.
  5. Provide real-time logging and tracking of attendance events.
  6. Ensure compliance with security and data privacy standards.

Design Specifications

  • UI/UX Design:
    (Include wireframes, mockups, or links to design files.)

  • Data Models:

    public record Attendance(string EmployeeCode,DateTime AttendanceDate,Guid GeoZoneId,GeoZoneFlag GeoZoneFlag,AttendanceStatus AttendanceStatus)
    {
    public Guid? AttendanceId { get; init; }
    public DateTime? CheckInTime { get; init; }
    public string? CheckInLocationCoordinate { get; init; }
    public string? CheckInPhoto { get; init; }
    public DateTime? CheckOutTime { get; init; }
    public string? CheckOutLocationCoordinate { get; init; }
    public string? CheckOutPhoto { get; init; }
    public string? InTimeLogUser { get; init; }
    public string? OutTimeLogUser { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record GeoZone(string GeoZoneName,double Latitude,double Longitude,double Radius,ActivityStatus Status )
    {
    public Guid? GeoZoneId { get; init; }
    public string? CreatedBy { get; init; }
    public DateTime? CreatedOn { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record Employee(string EmployeeName,Guid UserId,Guid DesignationId,string ContactNumber,Guid DepartmentId,DateTime DateOfJoining,SkillType Skill,CategoryType Category,string UANNumber,HighestQualification HighestQualification,Guid GeoZoneId,ActivityStatus Status)
    {
    public string? EmployeeCode { get; init; }
    public string? EmailId { get; init; }
    public string? DesignationDisplayName { get; init; }
    public string? ReportingPersonCode { get; init; } //Reporting Person EmployeeCode
    public string? EmploymentCardNumber { get; init; }
    public DateTime? DateOfBirth { get; init; }
    public string? NomineeName { get; init; }
    public string? NomineeRelation { get; init; }
    public double TotalExperience { get; init; }
    public string? ParentName { get; init; }
    public string? EmergencyContactName { get; init; }
    public string? EmergencyContactNumber { get; init; }
    public string? Reference { get; init; }
    public string? Address { get; init; }
    public string? AppointedBy { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record Document(string EmployeeCode,string DocumentName)
    {
    public Guid? Id { get; init; }
    public DocumentType? DocumentType { get; init; }
    public DateTime? DocumentExpirationDate { get; init; }
    public string? DocumentLink { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record Bank(string BankName,string BranchName,string IFSCCode )
    {
    public Guid? BankId { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record EmployeeBankMapping(string EmployeeCode,Guid BankId,string AccountNumber)
    {
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record Manager(string ManagerName,string EmployeeCode,string OwnerCode)
    {
    public string? ManagerCode { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record Owner(string OwnerName,List<Guid>? Departmens = null,List<Guid>? LineManagers = null)
    {
    public string? OwnerCode { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record HPC(string SkillName,decimal HPCRate,DateTime StartDate)
    {
    public DateTime? EndDate { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record Department(string DepartmentName)
    {
    public Guid? DepartmentId { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public record WorkPlace(string WorkPlaceName)
    {
    public Guid? WorkPlaceId { get; init; }
    public string? WorkPlaceInCharge { get; init; }
    public Guid? GeoZoneId { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }

    public record Designation(string DesignationName,string DesignationDisplayName)
    {
    public Guid? DesignationId { get; init; }
    public string? LogUser { get; init; }
    public DateTime? LogDTS { get; init; }
    }


    public enum GeoZoneFlag
    {
    Inside,
    Outside
    }

    public enum AttendanceStatus
    {
    In,
    Out
    }
    public enum DocumentType
    {
    DL,
    Aadhar,
    PAN
    }
    public enum SkillType
    {
    Skilled,
    UnSkilled,
    FullySkilled,
    SemiSkilled
    }

    public enum CategoryType
    {
    Registered,
    UnRegistered
    }

    public enum HighestQualification
    {
    None,
    Primary,
    MiddleSchool,
    Secondary,
    HigherSecondary,
    Diploma,
    Graduation,
    PostGraduation,
    MPhil,
    PhD,
    ITI,
    Polytechnic,
    Professional,
    Certification,
    Others
    }

    public enum ActivityStatus
    {
    Active,
    Disable,
    Initiate
    }

  • API Interfaces:

EndpointMethodParametersResponseResponse Status Codes
/get/employeesGETempCode (optional, string): Employee code
name (optional, string): Employee name
reportingPersonCode (optional, string): Reporting person's code
department (optional, string): Department
category (optional, string): Category
skill (optional, string): Skill
role (optional, string): Role
pageNumber (optional, integer): Page number
rowsPerPage (optional, integer): Rows per page
List of Employee data200, 204, 500
/get/minimal/employeesGETempCode (optional, string): Employee codeList of Employee minimal details (empCode, name, geoZoneId)200, 204, 500
/get/designationsGETdesignationId (optional, string): Designation IDList of Designation data200, 204, 500
/get/departmentsGETdepartmentId (optional, string): Department IDList of Department data200, 204, 500
/get/geo-zonesGETgeoZoneId (optional, string): Geo zone IDList of GeoZone data200, 204, 500
/get/attendancesGETgeoZoneId (optional, string): Geo zone IDList of GeoZone data200, 204, 500
/set/attendancesPOSTgeoZoneId (optional, string): Geo zone IDList of GeoZone data200, 204, 500
  • Third-Party Integrations:

  • Workflow:

  1. Employee Enrollment: Add employee details, including geozone associations.
  2. Attendance Logging: Record check-ins/outs based on geofencing.
  3. Document Management: Upload and retrieve employee documents securely.
  4. Hierarchy Setup: Define ownership, management, and employee relationships.

Development Tasks & Estimates

(Break down the development process into smaller tasks and provide time estimates for each.)

NoTask NameEstimate (Hours)DependenciesNotes
1Backend - Create db structure for attendance service2 hours
2Backend - Get Employee Maser Data2.5 hours
3Backend - Apply Filters On Employee Master Data2 hours
4Backend - Minimal Employe Data1 hours
5Backend - Get Geo Zone Data1 hours
6Backend - Get Attendance Data2 hours
7Backend - Set Attendance Data2 hours
8Total12.5 hours

Testing & Quality Assurance

(Outline the testing strategy and quality assurance measures for the feature.)

  • Unit Tests:
    (List the unit tests that will be written for this feature.)

  • Integration Tests:
    (Describe how integration testing will be conducted.)

  • Acceptance Criteria:
    (Define the criteria that must be met for the feature to be considered complete.)

  • Testing Tools:
    (List any tools that will be used for testing.)


Deployment Considerations

(Describe any deployment considerations, including environment configurations, feature toggles, or migration steps.)

  • Configuration Changes:
    (Detail any configuration changes required for this feature.)

  • Rollout Plan:
    (Outline the plan for rolling out the feature, including any phased releases.)


Risks & Mitigations

(Identify potential risks and the strategies to mitigate them.)

RiskImpactLikelihoodMitigation Strategy
Risk 1HighMediumStrategy for mitigating Risk 1
Risk 2MediumHighStrategy for mitigating Risk 2
............

Review & Approval

  • Reviewer:
    Ramit Ray

  • Approval Date:
    2024-11-29


Notes
(Add any additional notes or considerations related to the feature development here.)