Code Monkey home page Code Monkey logo

soarnego's Introduction

SoarNego

Description

SoarNego is a textual negotiation support system. After vast amounts of research and experience with performing negotiations in several contexts, it became apparent that there was a need for a tool that would cut down on time wastage and aid in the process of real-life give-and-take discussions about changes in agreements. The SoarNego application looks to address these needs by providing an application that can show changes and assist in negotiations by offering functionalities designed with these negotiations in mind.

By understanding the details of the negotiation process and the different roles that negotiators have, the SoarNego application aims to assist by providing an open-source space where one can find all the tools they need for successful negotiations.

A link to the Architecture of SoarNego Architecture

Installing PostgreSQL

For Mac:

  1. Install brew if you do not have it already

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  2. Then we update brew and install postgreSQL

    brew update 
    brew install postgresql@14
  3. Start the server by running

    brew services start postgresql@14

    You can also stop the server by running

    brew services stop postgresql@14
  4. Next we are going to connect to the server by running:

    psql postgres
  5. Once you connect to the server we will create the db:

    create DATABASE SoarNego;
  6. You can double check that this worked by running this command:

    \l

    This will display all existing databases and owners,

    Note that the owner of the soarnego database will be your $DBusername and there is no default password so it will be an empty field

  7. To exit the database, use control-d

For Linux:

  1. Run the following commands in terminal

    sudo apt update
    sudo apt install postgresql
  2. Verify the active status of PostgresSQL

    sudo systemctl status postgresql

    image

  3. Start PostgreSQL by Accessing its Server

    sudo –i –u postgres
  4. Next we are going to connect to the server by running:

    psql postgres
  5. Once you connect to the server we will create the db:

    create DATABASE SoarNego;
  6. You can double check that this worked by running this command:

    \l

    This will display all existing databases and owners,

    Note that the owner of the soarnego database will be your $DBusername and there is no default password so it will be an empty field

  7. To exit the database, use control-d

Set Up

After creating the database the following steps should be followed in order to setup the SoarNego Application:

  1. Navigate to application.properties:

    Found here: /backend/restful-web-services1.0/src/main/resources/application.properties

  2. Once in the application.properties make sure to change the following.

    spring.datasource.url= jdbc:postgresql://localhost:$DBport/SoarNego //default port is 5432
    spring.datasource.username= $DBusername // found in step 6) of how to install postgresql
    spring.datasource.password= $DBpassword //default is empty

    Please make sure the port you run your database on and the port in your application.properties under spring.datasource.url are matching

  3. Once the database has been configured please run the java application by running application.java.

    Found here: backend/restful-web-services1.0/src/main/java/com/bankend/restfulwebservices10/Application.java

    If the database is set up correctly then it should continue to run

    The terminal should have an output like this:

    2023-04-02 23:32:33.232  INFO 17748 --- [  restartedMain] c.b.restfulwebservices10.Application     : Started Application in 3.685 seconds (JVM running for 4.02)
  4. Once the backened functionalities are running you can then navigate in your terminal to the frontend path: Found here frontend/frontend-nego

  5. Run the following commands

    npm install
    # then
    npm start

    If everything has run properly you should see the application launch in your browser. If the page you are brought to says "An Error Occurred. I don't know what to do! Contact support at ####to be supplied###" this is the current functionality.

  6. Click Login at the top right of the screen

Application use Instructions

Once the application is up and running follow these steps in order to use it and its functionalities:

  1. At the login page hit the "Sign up" button. This will lead you to a page where you will need to fill in login information

  2. Once you have this login information saved you will be back at the login page use the account you just created in order to sign in.

  3. Once signed in you will be brought to a page with the editor on it, you are able to type on this editor right away and make changes to your text, such as highlights, formatting, etc.

  4. On the left side of the editor there is a option for you to select the files that you want to use, only .docx files are currently supported

  5. Once you have loaded these files that you would like to use please click on them to load them then use ctrl-s or cmd-s to save them to the database and then refresh the page. Currently it is the only way to convert from HTML to a usable JSON file for the editor

  6. If you would like to compare documents you should be able to select a file on the left, the name of the file you are currently using should be on the top, then once you select seePrevious at the top of the screen, a file pane will open on the right where you can select which file version you would like to compare to.

soarnego's People

Contributors

emmacho avatar emmcho avatar hamid-0 avatar jspud028 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ismael-ux1

soarnego's Issues

Implementation of ComparePrevious feature

Ability to compare wording as it existed in selected different versions of the document (so additions and deletions, and who proposed them are highlighted.
The feature would work as follows:
-The parties who introduced changes would have colours associated with their changes, and the changes would be marked as to whether they were deletions, additions or replacements, and whether the changes have been approved yet by other parties or not. In international negotiations there may be many colours. To ensure this would still work for the colourblind, the party names would appear if the user hovered the cursor over some text.
-Highlighting of changes could appear on both the earlier and the later version (e.g. an addition in a later version could show as a deletion in an earlier version, to make clear what going back to the earlier version would entail).

New user sign up

A prospective negotiator will be able to sign up and access basic features of SoarNego from index page (login/sign up page). Basic field that mjust be part of such sign up are:
-email address
-first and last name
-Affliated organization

Negotiator signing up for existing Negotiation

An existing negotiation will be able to search and enlist self in a negotiation.
-Such enlisting will be subject to approval/rejection by the Chief negotiators of the parties in the negotiation

Implementation of PrivateNotes feature

Ability to create and later examine private notes on the document that the other party cannot see.

This feature would work as follows:
-The current user could annotate any text they see; by default, such notes would by default be private to them.
-Any notes the user has previously entered could be made visible via the HideShowDetails feature. A small unobtrusive icon might appear in the user’s view of the text if there is a hidden note.
-Optionally, an author could make any note visible to other users in the same party, or even to the other parties. Business rules and security constraints (such as approval being needed from the chief negotiator) would have to be developed to ensure that private notes are not accidentally revealed to the other party.

Negotiating existing agreement- Intra

Reading and negotiating existing agreements.
-Backend converts the file from existing type (document or PDF) to intermediate JSON agreement schema
-intra-party members' editing of collective agreement document in readiness to be presented as proposal(s) to the other party or parties in a negotiation.

Implementation of FilterChanges feature

Ability to filter document wording so as to show or hide only the changes made or proposed by certain individuals or parties

The feature would work as follows:

  • A special case of HideShowDetails: It is particularly important so as to be able to rapidly show what the user’s party has managed or wants to achieve (i.e. accepted wording) or that of any of the other parties.
  • The ability to instantly flip between views could help the parties understand each other or work towards an agreement.

Implementation of SearchPrevious feature

Ability to search through previous versions (all or selected ones) for certain wording that may have once been present.

This feature would work as follows:

-At any point when in a dialog for searching within the text, the user would be able to select “Search also previous versions”.
-The search results would include a non-model panel that lists the results found not just in the present version, but in previous versions too, where the result is no longer present in the current version, along with the last date the text appeared.
-Selecting a search result would show the most recent version containing that text, centered on the relevant text, and with that text highlighted.
-When combined with ComparePrevious, the user would be able to see what any deleted text later was changed into.

Implementation of seePrevious feature

Negotiator should be able to instantly go back to see previous versions of wording (either from earlier in current negotiations, or in previous contracts)”.

-After selecting an entire agreement, or just a set of clauses or subclauses, the user would see a button or menu item labelled “Show Previous versions”.

-Selecting this would show, alongside the current text, possibley a non-modal panel with a scrollable list with earlier dates, each with a few words highlighting what differed (e.g. number of words or clauses added, deleted, changed), and which party or author initiated the change) in that version.

-Selecting one or more of the dated versions, would show those versions alongside the current version (see also ComparePrevious, below).

• On any version displayed, there would also be a ‘Previous’ and ‘Next’ button pair, allowing the user to go back and forth one version at a time, with the date (and time if necessary) of each version always shown.

NB: There will limitations in the full implementation of this feature with contraction text not created in SoarNego. Possible challenges will be inaccessibility to the past metadata of the documents.

Implementation of SeeHistory feature

Ability to see on request, for any piece of wording, its ‘history’ (date of the change, which party asked for it; rationale for it; what alternatives were discussed

This feature would work as follows:

-Complements the above features and could simplify the interface. Rather than cluttering the text with lots of details by using HideShowDetails or ComparePrevious to show the details of all the wording, the user could just hover over any particular piece of wording to see the party and date when it was introduced (or deleted if it was only in an earlier version), any rationale or other notes visible to that user, and what the wording was before its prior change and after any subsequent change.
-An alternative implementation for a touch screen would be a menu item that would display the above history information of the selected text in a side panel.
-Selecting a version from the pop-up or side panel would allow the user to see the document version as it existed, in the same manner as the SeePrevious feature.

Inter-party negotiation of collective agreement

-Offline editing of contractual text by negotiation parties' members
-Uniques color coding/marking of parties' member editing of the contractual text.
-Acceptance/rejection of parties' member editing

Implementation of HideShowDetails feature

Ability to hide/show details such as change history, rationale, etc. to manage the complexity of the document being viewed

The feature would work as follows:
• A menu or button labeled something like “Hide/show details” would be displayed whenever any agreement text is visible, including versions presented by the ComparePrevious feature.
• If the user selects the above menu item or button, then a checkable panel of potential types of details to show or hide would appear with checkmarks by those currently shown. The detail types would include the names of parties whose proposed and/or accepted changes should be highlighted (in specific colors), private notes by the current user, notes visible to all users of this party but not others, the rationale for highlighted changes, response to the other party about highlighted changes, and so on.
• As the user selects or de-selects any checkbox, the text would instantly changes.

Negotiation Setup and Configuration

Signed-up negotiation will be able to set up a negotiation between two or more parties. Some of the attributes of such a setup will be:
-Add negotiating parties (union and management sides)
-automatically send invites to the added parties
-send invites to the already signed up negotiator affiliated to the added parties
-audit and approval of nogotiotors that accepted or rejected invites

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.