frequenz-floss / frequenz-api-dispatch

gRPC+protobuf specification and Python bindings for the Frequenz Dispatch API
https://frequenz-floss.github.io/frequenz-api-dispatch/
MIT License
1 stars 6 forks source link

Rename `DispatchService` to `MicrogridDispatchService` #60

Closed thomas-nicolai-frequenz closed 10 months ago

thomas-nicolai-frequenz commented 10 months ago

What's needed?

In order to give the service more context whats it about I'd suggest to rename the service from DispatchService to MicrogridDispatchService or MicrogridDispatchService.

Proposed solution

Please rename service and extend the documentation above. Here is a draft:

// Frequenz Dispatch Automation API
//
// Overview:
// The API serves to automate the process of electricity dispatches for microgrids.
// In the context of the energy industry, a 'dispatch' refers to the act of routing electrical power 
// between different components within a microgrid or between a microgrid and the main grid.
// This could be for the purpose of supply (sending electricity to the grid or components within the microgrid),
// or demand (drawing electricity from the grid or from other components like batteries and solar arrays).
//
// Objective:
// The primary objective of this API is to streamline and automate the complex task of electricity dispatching,
// making it easier to manage local electricity supply and demand efficiently.
//
// Key Features:
// - Dispatching Electricity: Comprehensive CRUD operations for dispatching microgrid components.
// - Automation: Support for one-time as well as recurring dispatches based on flexible recurrence rules.
// - Fine-grained control: Dispatch individual microgrid components or entire component categories.
//
// Example Use Cases:
// - Charging or discharging a battery based on optimal time-of-use rates.
// - Limiting the output of a Photovoltaic (PV) array during periods of low demand.
// - Invoking Frequency Containment Reserves (FCR) or Automatic Frequency Restoration Reserves (aFRR) to 
//    support grid operations.
// - Adjusting the output of electric vehicle charging stations to match grid availability or to avoid peak pricing.
//
// Target Audience:
// This API is designed for application developers in the energy sector who focus on the tasks of optimizing microgrid
// electricity flows. Its design aims to be as developer-friendly as possible, requiring no prior knowledge in 
// electrical engineering and systems.
//
// License:
// ...

Also renaming the service and rpc methods is suggested:

// Service providing operations related to dispatching microgrid components.
- service DispatchService {
+ service MicrogridDispatchService {
  // Returns a list of all dispatches
-   rpc ListDispatches(DispatchListRequest) returns (DispatchList);
+   rpc ListMicrogridDispatches(DispatchListRequest) returns (DispatchList);

  // Create a new dispatch
-   rpc CreateDispatch(DispatchCreateRequest) returns (google.protobuf.Empty);
+   rpc CreateMicrogridDispatch(DispatchCreateRequest) returns (google.protobuf.Empty);

  // Update a dispatch
-   rpc UpdateDispatch(DispatchUpdateRequest) returns (google.protobuf.Empty);
+   rpc UpdateMicrogridDispatch(DispatchUpdateRequest) returns (google.protobuf.Empty);

  // Get a single dispatch
-   rpc GetDispatch(DispatchGetRequest) returns (Dispatch);
+   rpc GetMicrogridDispatch(DispatchGetRequest) returns (Dispatch);

  // Delete a given dispatch
-   rpc DeleteDispatch(DispatchDeleteRequest) returns (google.protobuf.Empty);
+  rpc DeleteMicrogridDispatch(DispatchDeleteRequest) returns (google.protobuf.Empty);
}

Use cases

No response

Alternatives and workarounds

No response

Additional context

No response

llucax commented 10 months ago

Before going with a particular format, I strongly recommend trying out how it is rendered doing:

pip install -e .[dev-mkdocs]
mkdocs serve

Remember Markdown is used, so probably things like Key Features: are better as headings (like ## Key Features).