Attendance Tracking for Employees
Author(s)
- Arpita Dey
Last Updated Date
[2024-11-28]
SRS References
Version History
| Version | Date | Changes | Author |
|---|---|---|---|
| 1.0 | 2024-11-28 | Initial draft | Arpita 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:
- Database for storing and managing the data structures represented in the ERD.
- APIs for geolocation, attendance logging, and document management.
Requirements:
- Enable geofence-based attendance tracking for employees.
- Maintain a database of employee details, including personal, professional, and banking information.
- Facilitate the secure storage and retrieval of employee documents.
- Establish hierarchical relationships among owners, managers, and employees.
- Provide real-time logging and tracking of attendance events.
- 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:
| Endpoint | Method | Parameters | Response | Response Status Codes |
|---|---|---|---|---|
/get/employees | GET | empCode (optional, string): Employee codename (optional, string): Employee namereportingPersonCode (optional, string): Reporting person's codedepartment (optional, string): Departmentcategory (optional, string): Categoryskill (optional, string): Skillrole (optional, string): RolepageNumber (optional, integer): Page numberrowsPerPage (optional, integer): Rows per page | List of Employee data | 200, 204, 500 |
/get/minimal/employees | GET | empCode (optional, string): Employee code | List of Employee minimal details (empCode, name, geoZoneId) | 200, 204, 500 |
/get/designations | GET | designationId (optional, string): Designation ID | List of Designation data | 200, 204, 500 |
/get/departments | GET | departmentId (optional, string): Department ID | List of Department data | 200, 204, 500 |
/get/geo-zones | GET | geoZoneId (optional, string): Geo zone ID | List of GeoZone data | 200, 204, 500 |
/get/attendances | GET | geoZoneId (optional, string): Geo zone ID | List of GeoZone data | 200, 204, 500 |
/set/attendances | POST | geoZoneId (optional, string): Geo zone ID | List of GeoZone data | 200, 204, 500 |
-
Third-Party Integrations:
-
Workflow:
- Employee Enrollment: Add employee details, including geozone associations.
- Attendance Logging: Record check-ins/outs based on geofencing.
- Document Management: Upload and retrieve employee documents securely.
- 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.)
| No | Task Name | Estimate (Hours) | Dependencies | Notes |
|---|---|---|---|---|
| 1 | Backend - Create db structure for attendance service | 2 hours | ||
| 2 | Backend - Get Employee Maser Data | 2.5 hours | ||
| 3 | Backend - Apply Filters On Employee Master Data | 2 hours | ||
| 4 | Backend - Minimal Employe Data | 1 hours | ||
| 5 | Backend - Get Geo Zone Data | 1 hours | ||
| 6 | Backend - Get Attendance Data | 2 hours | ||
| 7 | Backend - Set Attendance Data | 2 hours | ||
| 8 | Total | 12.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.)
| Risk | Impact | Likelihood | Mitigation Strategy |
|---|---|---|---|
| Risk 1 | High | Medium | Strategy for mitigating Risk 1 |
| Risk 2 | Medium | High | Strategy 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.)