Skip to content

Domain Design

Ravi Sharma edited this page Jun 25, 2014 · 17 revisions

Domain Design

This Page gives a highlight on what domain design we are thinking about. Please note the entities suffixed with (N) are the nodes that we are considering.

  1. Location(N)
  • Currently we have identified only two kinds of hierarchy for locations

  • Geographical

  • Political

  • A location is defined as a area on Map(either Political boundary or geographical boundary), which could be country or State or District or Assembly Constituency etc.

  • A Location can be linked to other location

  • One Location can be under one Location or multiple, based on hierarchy i.e. Political or Geographical

  • One Location can not be under two Location of same hierarchy, i.e. a Town will have only one parent location geographically and one parent location politically

  • One Location can have multiple location under it

  • A Location will have following data

  • Lag/Long of centre of Location. i.e. some point of centre of a state

  • Boundary data of the location, so that we can draw a state,district boundary etc on map and can find out if a given point falls with in the location or not

  • Name

  • Type/Label i.e. State/District etc

  • parent Location, empty or 1 or 2(max N if we have N type of hierarchy, right now we have only 2)

  • Child Locations, empty ,1 or 2 Set/List of Locations(max N List/Set if we have N type of hierarchy, right now we have only 2)

Following is the hierarchy of various Locations

  • Country
  • Country Will have States
  • States will have Parliament Constituencies and Districts
  • Parliament Constituency will have Assembly Constituency and Districts
  • Districts will have Assembly Constituencies and City/Villages
  • Assembly Constituency will have City(Municipal)/Villages(Panchayat)
  • City(Municipal) will have wards
  • Wards will have Colony/Locality/Streets etc Thus the lowest level of locations would be Colony/Locality/Streets/Villages

Until Now we have understood what our location data will have, lets divide it into various domain


Another significant aspect of the platform apart from Location is the user generated Complaint.

  1. Complaint(N): Here are the main nodes connected to the complaint node.
  • Location(N): Complaint should belong to a single Location, but for now we will add related lotcation directly to complaint, like State,District,AC,PC,WARD,COLONY,LOCAL AREA etc. We will always try to attach a complaint to the lowest available location division available (both political and geographical)
  • Category(N): Complaint will always belong a single Category. This is a user generated complaint. Other entities connected to this node would be
  • Person(N): The person who has made this complaint
  • Endorsements(C), List of Person(N) who have endorsed the problem since they were affected by the same issue
  • Administrator (N): The person who would be responsible for this complaint at it's present day, until it is escalated due to it's deadline. Details on Administrator(N) are below
  • Administrators(C): List of all Administrator(N) Responsible Elective Members of the area, i.e. Ward/Municipal member of that area, MLA, MP etc
  • Photos(C): List of all Photo(N) of the complaint that the user has submitted and can add more photos later after N days. like today and then after 7 days etc. A photo history will be created as a connected graph
  • Videos(C): List of all Video(N) user will be able to attach one or many videos to the complaint and can add videos later after N number of days.
  • User Status(N): Current status of the complaint from User Side, i.e Pending, Work in Progress, Done
  • Endorsing User Status(N): Current status of the complaint from Endorsing Users. i.e. Pending, Work in Progress, Done,
  • Official Status(N) : Current Status of complaint from Government Officials, i.e. UnSeen,Acknowledged, Work in progress, Done
  • Elective Member Status : Current status of complaint from Elective Members. Unseen, Acknowledged, Passed to Officials to work on. Done.

Simplifying Complaint Status design

The main focus here is the status of the complaint to give an idea, what is the current status of a complaint made.

As a Person(N) who made the complaint I would be interested to know what is the current status of the complaint. Also upon completion (when the complaint has been actioned upon) I would like to verify (either accept or reject) the status of the complaint.

As a Person(N) who endorsed the complaint, I would like to endorse and verify the status of a completed complaint.

As an Administrator I would like to keep the users (the person who made the complaint and the endorsee) updated of the ongoing status of the complaint. I would also like to keep the higher up officials updated with the status of the complaint.

Status: PENDING, ACKNOWLEDGED, QUERY, DUPLICATE, ASSIGNED, IN_PROGRESS, IN_REVIEW, DONE, UNFINISHED

  • PENDING: When the complaint is submitted it will stay in the pending state until the complaint has been acknowledged by an Administrator (any level). An administrator has X amount of days (to be decided) to acknowledge the complaint.
  • ACKNOWLEDGED: An Administrator has seen and understood the complaint. If there is a query it can be sent back to the user for more information or the user can be contacted to understand the complaint better. Once acknowledged the complaint has 15 days to enter the IN_REVIEW state.
  • QUERY: When the administrator needs more information about the complaint in order to come up with an optimum solution.
  • DUPLICATE: Multiples of the same complaint.
  • ASSIGNED: An administrator has assigned this complaint to someone to be worked upon - An executive member or a group of people.
  • IN_PROGRESS: An executive member or a group of people are currently working on this complaint to solve or fix it.
  • IN_REVIEW: Once the work has been done the complaint stays in the review state. This is where the users can review and verify (a simple yes or no) whether the complaint has been fixed or not. NOTE: This feature is NOT for conveying the level of satisfaction about the work done, but whether the complaint has been worked upon and solved or not. Feedback (level of satisfaction) can be given after the complaint is DONE state. If the more than X number of users say NO, then the complaint is ASSIGNED back to the Administrator, who need to follow up with the user to understand the issue. This review process could be weighted (with highest weight of the user who lodged the complaint)
  • DONE: The complaint has been solved. Once in this state, the users are able to give their feedback about the complaint and the work done on it. Also specify their satisfaction level.
  • UNFINISHED: There is a separate complaint status for complaints that have not been looked at for X (to be decided) amount of days - This is the deadline by which the complaint has to enter a 'DONE' state once reported.

NOTE: The above follows a strict user-centric satisfaction model, where the power is in the users hand whether to let the complaint enter a DONE state or not. Maybe we want to loosen this a bit and apply a few things like

  • A complaint can only stay in IN_REVIEW state for X amount of days, after which it is automatically entered into a DONE state, so that if there is no feedback received from the user, we can clear the queue.
  • A complaint can got through IN_REVIEW process only ONCE. This can help avoid 'trolls' who are not serious about getting work done and are being unreasonable.
  • We can finally give power to the administrator to set the complaint to DONE state after ONE review process. (maybe there could be a different status for this DONE_BUT_DISPUTED?)
  1. Person A person is a human who will be added to this system only once, and then he can raise complaint or be an official or MLA/MP etc, or any combination of it. Person will following Attributes
  • Name (Compulsory|)
  • Date of Birth
  • Gender
  • Living Location, we will try to get lowest location like ward or colony etc.
  • Email/Mobile
  1. Post A post will be defined as a officer level in a particular department, i.e SHO in Police Department.

  2. Administrator(N)

  • Person
  • Post(N)
  1. PoliticalAdministrator (N): An administrator who is part of a political party.

  2. ExecutiveAdministrator (N): An administrator who is part of an executive body like Water Department.

  3. Party(N): Political party

  • Name, InPower
  1. ExecutiveBody(N): Executive Body
  • Name, Category (N)

PS: We also need Boundary(N) as part of the Location, which signifies which Boundary does a location belong to.

Clone this wiki locally