Introduction

What is France Active

[FAintro]France Active est un réseau de proximité qui aide depuis plus de 25 ans les personnes en difficulté à créer leur entreprise individuelle. Il finance parallèlement les entreprises solidaires (insertion par l’activité économique, associations d’utilité sociale).

What is Inserdiag

Inserdiag is the first historical plateform for France Active.

Its purpose is to audit Financial workbooks from Social integration structures through accompanist’s management.

The resumed process is :

  1. Structures can ask to register an account on the plateform then, afterwards accompanists will be assigned to them when their account is validated.
  2. Once a structure is given access to its account, it can create a new Financial workbook where it fill many financial datas about its financial years.
  3. Then its accompanists will check these datas to review them, give some comments and finally decide about the structure’s financial viability.

What is Culturdiag

Culturdiag is the second plateform for France Active. It’s purpose is the same than Inserdiag but for Cultural structures.

It’s mostly based on Inserdiag code but in an attempt to manage the two plateforms under an unique engine it has been developped on an engine called Autodiag which should have been able to run Inserdiag and Culturdiag. Even it was effective in the early development stage, Inserdiag support has been dropped because of lack of testing and too many features diverging from a plateform to another.

Globally the working processes are the same than Inserdiag but there are many details that differ from one to another and some features exists on one plateform and not on the other.

What is Autodiag

Currently known as the engine running Culturdiag plateform, it will unify all plateforms to run them all.

Internally, we will talk about Autodiag1 for the current engine and Autodiag2 for the engine project that will unify all plateforms. This is because we will rewrite a lot of code to achieve its goal.

Finally for France Active this will just be called Autodiag because they don’t really have to know about these development details.

Engines resume

So for now what we have is :

  • Inserdiag engine that is running the Inserdiag plateform;
  • Autodiag1 engine that is running the Culturdiag plateform;

And we will soonly start the Autodiag2 engine project to only have Autodiag running all plateforms (the current ones and eventual other new plateforms to come).

The engine is actually divised in 5 parts :

  • API: Low level core dedicated to workbooks that don’t rely on Django. Contain utilities usable from the command line to manage Excel files and workbook matrix;
  • Accounts: To manage all user kinds and their datas;
  • Workbooks: To manage workbooks and their related datas;
  • Forum: A simple forum;
  • Boards: To build user’s board from where they can manage their stuff;

digraph environment {
    /* Define some default styles */
    node [shape=box, fillcolor=lightblue2, color=lightblue3, style=filled];
    edge [color=lightblue4];

    /* Define all the entities label */
    engine [label="Engine", shape=egg];

    /* Entities cluster for Virtualenv */
    subgraph cluster_plateform {
        style=rounded;
        color=lightgrey;
        fontcolor="lightslategray";
        node [style=filled,color=white];
        label = "Plateform";

        engine -> {api accounts workbooks forum boards};
        workbooks -> api;
    }
}

The API is the only part that is not a Django app. Workbooks is the most important part, directly followed by the Accounts part.

Problems

  • Inserdiag project has growned too fast without any clear specifications and with a low budget for a long time. Too many working time have been used to evolve it and too few to stabilize it. Also changes has been often drastic and leaded to poor code.
  • Autodiag engine has been started from Inserdiag code and so herited from the Inserdiag flaws. Even this project trying to correct them, it has not globally succeeded to do so;
  • Only 5% (approximately) code is covered with unittest, without clear specifications this leads sometimes to unknow behaviors from developer and so a huge time to test many things when introducing new behaviors without introducing new bugs;
  • A lot of new features since 2013 has not been merged between the two engines and so now this is too difficult to merge them all;