aa-planetary-operations 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aa_planetary_operations-0.1.0/ARCHITECTURE.md +42 -0
- aa_planetary_operations-0.1.0/LICENSE +21 -0
- aa_planetary_operations-0.1.0/MANIFEST.in +7 -0
- aa_planetary_operations-0.1.0/NOTICE.md +7 -0
- aa_planetary_operations-0.1.0/PKG-INFO +224 -0
- aa_planetary_operations-0.1.0/README.md +197 -0
- aa_planetary_operations-0.1.0/VERIFICATION.md +50 -0
- aa_planetary_operations-0.1.0/aa_planetary_operations.egg-info/PKG-INFO +224 -0
- aa_planetary_operations-0.1.0/aa_planetary_operations.egg-info/SOURCES.txt +49 -0
- aa_planetary_operations-0.1.0/aa_planetary_operations.egg-info/dependency_links.txt +1 -0
- aa_planetary_operations-0.1.0/aa_planetary_operations.egg-info/requires.txt +11 -0
- aa_planetary_operations-0.1.0/aa_planetary_operations.egg-info/top_level.txt +1 -0
- aa_planetary_operations-0.1.0/docs/DEVELOPMENT.md +21 -0
- aa_planetary_operations-0.1.0/docs/OPERATING_GUIDE.md +51 -0
- aa_planetary_operations-0.1.0/docs/PUBLISHING.md +29 -0
- aa_planetary_operations-0.1.0/docs/images/operation.png +0 -0
- aa_planetary_operations-0.1.0/docs/images/planner.png +0 -0
- aa_planetary_operations-0.1.0/planetary_operations/__init__.py +1 -0
- aa_planetary_operations-0.1.0/planetary_operations/apps.py +7 -0
- aa_planetary_operations-0.1.0/planetary_operations/auth_hooks.py +27 -0
- aa_planetary_operations-0.1.0/planetary_operations/catalog.py +16 -0
- aa_planetary_operations-0.1.0/planetary_operations/characters.py +79 -0
- aa_planetary_operations-0.1.0/planetary_operations/data/catalog.json +1 -0
- aa_planetary_operations-0.1.0/planetary_operations/esi.py +66 -0
- aa_planetary_operations-0.1.0/planetary_operations/forms.py +100 -0
- aa_planetary_operations-0.1.0/planetary_operations/management/__init__.py +0 -0
- aa_planetary_operations-0.1.0/planetary_operations/management/commands/__init__.py +0 -0
- aa_planetary_operations-0.1.0/planetary_operations/management/commands/po_recover_plans.py +23 -0
- aa_planetary_operations-0.1.0/planetary_operations/market.py +100 -0
- aa_planetary_operations-0.1.0/planetary_operations/migrations/0001_initial.py +83 -0
- aa_planetary_operations-0.1.0/planetary_operations/migrations/__init__.py +0 -0
- aa_planetary_operations-0.1.0/planetary_operations/models.py +40 -0
- aa_planetary_operations-0.1.0/planetary_operations/planner.py +482 -0
- aa_planetary_operations-0.1.0/planetary_operations/static/planetary_operations/app.css +1 -0
- aa_planetary_operations-0.1.0/planetary_operations/static/planetary_operations/progress.js +18 -0
- aa_planetary_operations-0.1.0/planetary_operations/tasks.py +70 -0
- aa_planetary_operations-0.1.0/planetary_operations/templates/planetary_operations/base.html +16 -0
- aa_planetary_operations-0.1.0/planetary_operations/templates/planetary_operations/detail.html +50 -0
- aa_planetary_operations-0.1.0/planetary_operations/templates/planetary_operations/index.html +31 -0
- aa_planetary_operations-0.1.0/planetary_operations/urls.py +15 -0
- aa_planetary_operations-0.1.0/planetary_operations/views.py +203 -0
- aa_planetary_operations-0.1.0/pyproject.toml +41 -0
- aa_planetary_operations-0.1.0/setup.cfg +4 -0
- aa_planetary_operations-0.1.0/tests/__init__.py +0 -0
- aa_planetary_operations-0.1.0/tests/conftest.py +42 -0
- aa_planetary_operations-0.1.0/tests/settings.py +35 -0
- aa_planetary_operations-0.1.0/tests/test_integration.py +188 -0
- aa_planetary_operations-0.1.0/tests/test_market.py +85 -0
- aa_planetary_operations-0.1.0/tests/test_planner.py +134 -0
- aa_planetary_operations-0.1.0/tests/urls.py +3 -0
- aa_planetary_operations-0.1.0/tools/build_catalog.py +131 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
## Modules
|
|
4
|
+
|
|
5
|
+
| Module | Responsibility |
|
|
6
|
+
|---|---|
|
|
7
|
+
| `catalog.py`, `data/catalog.json` | Versioned, read-only commodity, recipe, planet, region and gate data |
|
|
8
|
+
| `planner.py` | Recipe expansion, CP-SAT placement, material balance and regional hauling paths |
|
|
9
|
+
| `characters.py` | AA ownership checks, scoped token selection, current PI skill/colony reads |
|
|
10
|
+
| `esi.py` | Bounded HTTP reads and shared ESI cooldown |
|
|
11
|
+
| `market.py` | Paginated Jita 4-4 buy order snapshots and depth-aware gross estimates |
|
|
12
|
+
| `models.py`, `migrations/` | Owned skill snapshots and private saved plan inputs/results |
|
|
13
|
+
| `forms.py`, `views.py`, `urls.py` | Validated user inputs, ownership-isolated access and exports |
|
|
14
|
+
| `tasks.py` | Existing AA Celery worker integration, result persistence and failure reporting |
|
|
15
|
+
| `auth_hooks.py` | AA sidebar permission and URL registration |
|
|
16
|
+
| `tools/build_catalog.py` | Reproducible compiler for official CCP JSONL SDE archives |
|
|
17
|
+
|
|
18
|
+
## Planning sequence
|
|
19
|
+
|
|
20
|
+
1. Validate selection, tier, duration, extraction assumptions, output size and search limits.
|
|
21
|
+
2. Aggregate ingredient demand in descending tier order. Round shared ingredients only after all parents contribute their demand. Stop recipe expansion at the selected import boundary.
|
|
22
|
+
3. Split required batches into discrete processors using cycles available during the pull. Split P0 requirements into ECUs using assumed extraction capacity. Each task carries planet restrictions, CPU/power and exact input/output quantities.
|
|
23
|
+
4. Give each character `1 + active Interplanetary Consolidation − occupied colonies` slots, or full capacity in replacement mode. Keep their Command Center Upgrades level and occupied planet IDs separate.
|
|
24
|
+
5. Test single systems with OR-Tools CP-SAT. Every task is assigned once. Each used slot selects a system/planet type, respects the owning character's command-center budget plus launchpad/link reserve, and consumes one distinct available planet for that character. Different characters may each colonize the same planet.
|
|
25
|
+
6. Skip resource-incompatible systems. Equivalent planet-type inventories share infeasibility proofs only when occupied planet IDs cannot distinguish them. A solver timeout is never an infeasibility proof.
|
|
26
|
+
7. Only after all single-system candidates are excluded or proven infeasible, expand through regional stargate neighborhoods in increasing radius. Minimize systems first, colonies second within each candidate set. Report the first feasible nearby network without claiming a global minimum.
|
|
27
|
+
8. Allocate concrete planet IDs, reserve local material consumption, then generate inter-colony movements. Material shortages abort the plan. Record remaining product/surplus, shortest regional gate paths and average-volume pad-service estimates.
|
|
28
|
+
9. Fetch all pages of the finished product's regional buy orders; retain Jita 4-4 orders, respect remaining volume and minimum fills, and save timestamped gross estimates.
|
|
29
|
+
|
|
30
|
+
## Ownership and failures
|
|
31
|
+
|
|
32
|
+
Views require AA login and `planetary_operations.basic_access`. Every plan query is constrained to `owner=request.user`. Form choices are built from the user's AA ownership records; submitted IDs are validated against those choices. CSRF protects mutation endpoints; deletes, refreshes and price updates require POST.
|
|
33
|
+
|
|
34
|
+
Tokens must match user, character, owner hash and both required scopes. Character ownership is rechecked after private ESI reads, and selected IDs are rechecked before a completed plan is saved. Active skill levels are used. Failed reads are never substituted with zero skills or an empty colony list.
|
|
35
|
+
|
|
36
|
+
Queued plan creation commits before task submission. A conditional status transition prevents duplicate tasks from calculating the same plan. Task failures become readable saved-plan errors. Market failure leaves the production plan intact. Abandoned tasks can be released with the recovery command after a worker outage.
|
|
37
|
+
|
|
38
|
+
Snapshots contain skills, occupied planet IDs and timestamps, never OAuth tokens. Export contains plan settings, character planning capacities and results only. Saved plans are historical snapshots and do not continuously reserve colonies or update themselves.
|
|
39
|
+
|
|
40
|
+
## Deliberate V1 bounds
|
|
41
|
+
|
|
42
|
+
Ten selected characters; at most 240 individual facilities; 1–336 hours per pull; 0–5 regional gate jumps from a search center; bounded solver time. The user supplies one common average extraction assumption. Exact pin coordinates, production simulation over time, financial profit, sovereignty/POCO permissions, and global multi-system optimality are outside this implementation's claims.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AA Planetary Operations contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
include README.md ARCHITECTURE.md VERIFICATION.md NOTICE.md LICENSE
|
|
2
|
+
recursive-include planetary_operations/data *.json
|
|
3
|
+
recursive-include planetary_operations/templates *.html
|
|
4
|
+
recursive-include planetary_operations/static *.css *.js
|
|
5
|
+
recursive-include tests *.py
|
|
6
|
+
recursive-include tools *.py
|
|
7
|
+
recursive-include docs *.md *.png
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Game-data notice
|
|
2
|
+
|
|
3
|
+
EVE Online, the EVE logo, and EVE game data are the intellectual property of CCP hf. This community application is not affiliated with or endorsed by CCP or the Alliance Auth project.
|
|
4
|
+
|
|
5
|
+
The bundled catalog is derived from the official EVE Online Static Data Export. Access and use of EVE APIs and static data remain subject to CCP's applicable developer terms. No license to CCP's trademarks or game data is granted by this application's source-code license.
|
|
6
|
+
|
|
7
|
+
The dependency packages retain their own licenses. Alliance Auth is GPL-licensed; review its distribution requirements when distributing combined deployments.
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aa-planetary-operations
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Multi-character planetary industry planning for Alliance Auth v5
|
|
5
|
+
Author: jaybone26
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/jaybone26/aa-planetary-operations
|
|
8
|
+
Project-URL: Documentation, https://github.com/jaybone26/aa-planetary-operations#readme
|
|
9
|
+
Project-URL: Repository, https://github.com/jaybone26/aa-planetary-operations
|
|
10
|
+
Project-URL: Issues, https://github.com/jaybone26/aa-planetary-operations/issues
|
|
11
|
+
Keywords: allianceauth,eve-online,planetary-industry
|
|
12
|
+
Requires-Python: >=3.11
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
License-File: NOTICE.md
|
|
16
|
+
Requires-Dist: allianceauth<6,>=5.0
|
|
17
|
+
Requires-Dist: requests<3,>=2.32
|
|
18
|
+
Requires-Dist: ortools<10,>=9.10
|
|
19
|
+
Provides-Extra: test
|
|
20
|
+
Requires-Dist: pytest>=8; extra == "test"
|
|
21
|
+
Requires-Dist: pytest-django>=4.8; extra == "test"
|
|
22
|
+
Requires-Dist: requests-mock>=1.12; extra == "test"
|
|
23
|
+
Requires-Dist: fakeredis>=2; extra == "test"
|
|
24
|
+
Requires-Dist: ruff; extra == "test"
|
|
25
|
+
Requires-Dist: build; extra == "test"
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+

|
|
30
|
+

|
|
31
|
+

|
|
32
|
+
[](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/LICENSE)
|
|
33
|
+
[](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/VERIFICATION.md)
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
# AA Planetary Operations for Alliance Auth
|
|
37
|
+
|
|
38
|
+
Plan your planetary industry across your main and alts, build the production network, and see its Jita buy value per pull.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Contents
|
|
43
|
+
|
|
44
|
+
- [Features](#features)
|
|
45
|
+
- [Upcoming](#upcoming)
|
|
46
|
+
- [Highlights](#highlights)
|
|
47
|
+
- [Installation](#installation)
|
|
48
|
+
- [Step 1 — Install the package](#step-1--install-the-package)
|
|
49
|
+
- [Step 2 — Configure Alliance Auth](#step-2--configure-alliance-auth)
|
|
50
|
+
- [Step 3 — Configure ESI access](#step-3--configure-esi-access)
|
|
51
|
+
- [Step 4 — Run migrations and collect static files](#step-4--run-migrations-and-collect-static-files)
|
|
52
|
+
- [Step 5 — Set up permissions](#step-5--set-up-permissions)
|
|
53
|
+
- [Step 6 — Authorize characters and build a plan](#step-6--authorize-characters-and-build-a-plan)
|
|
54
|
+
- [Settings](#settings)
|
|
55
|
+
- [Using the planner](#using-the-planner)
|
|
56
|
+
- [Translations](#translations)
|
|
57
|
+
- [Contributing](#contributing)
|
|
58
|
+
- [License and credits](#license-and-credits)
|
|
59
|
+
|
|
60
|
+
## Features
|
|
61
|
+
|
|
62
|
+
- **Main and alt planning** — combine up to ten AA-authenticated characters in one operation.
|
|
63
|
+
- **Automatic PI skill reads** — use active skill levels and existing colonies to determine available capacity.
|
|
64
|
+
- **P0 through P4** — choose any of the 83 PI commodities as your finished product.
|
|
65
|
+
- **Import tiers** — extract from P0 or start with supplied P1, P2, or P3 materials.
|
|
66
|
+
- **Region selection** — use real planet types, resources, recipes, and stargate connections from CCP's static data.
|
|
67
|
+
- **One system first** — try single-system layouts before expanding into nearby systems.
|
|
68
|
+
- **Character assignments** — fit colonies and facilities within each character's skill limits.
|
|
69
|
+
- **Build sheets** — see each planet, command-center level, extractor, processor, and required material.
|
|
70
|
+
- **Logistics plans** — get import quantities, local routes, character handoffs, hauling volumes, and regional gate paths.
|
|
71
|
+
- **Extraction schedules** — set the pull duration, output target, assumed extraction yield, and extractor head count.
|
|
72
|
+
- **Jita buy valuation** — estimate gross ISK per pull, day, and week from Jita 4-4 buy orders and available order volume.
|
|
73
|
+
- **Saved operations** — keep private plans, adjust a copy, refresh prices, or export the build sheet.
|
|
74
|
+
|
|
75
|
+
## Upcoming
|
|
76
|
+
|
|
77
|
+
Future possibilities beyond V1:
|
|
78
|
+
|
|
79
|
+
- Discord alerts.
|
|
80
|
+
- Alliance-wide collaborative production and suppliers.
|
|
81
|
+
- Advanced POCO tools.
|
|
82
|
+
- Historical production and market analytics.
|
|
83
|
+
|
|
84
|
+
## Highlights
|
|
85
|
+
|
|
86
|
+
### Characters and operation planner
|
|
87
|
+
|
|
88
|
+
Select your authenticated characters and configure the production chain in one place.
|
|
89
|
+
|
|
90
|
+

|
|
91
|
+
|
|
92
|
+
### Production overview
|
|
93
|
+
|
|
94
|
+
Review estimated output, deployment size, and the Jita valuation status for a saved operation.
|
|
95
|
+
|
|
96
|
+

|
|
97
|
+
|
|
98
|
+
*Screenshots show a local demonstration using sample characters. Market pricing is unavailable in the pictured preview; the live public ESI check is recorded in [Verification](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/VERIFICATION.md).*
|
|
99
|
+
|
|
100
|
+
## Installation
|
|
101
|
+
|
|
102
|
+
> **Requirements:** Alliance Auth v5, Python 3.11+, and your existing Auth database, Redis/Valkey, and Celery worker.
|
|
103
|
+
>
|
|
104
|
+
> Version 0.1.0 is ready for staging evaluation. Install it directly into your Alliance Auth virtual environment. Complete a real SSO authorization and worker run on your server before rollout.
|
|
105
|
+
|
|
106
|
+
### Step 1 — Install the package
|
|
107
|
+
|
|
108
|
+
Activate the virtual environment used by your Alliance Auth installation, then install the supplied wheel:
|
|
109
|
+
|
|
110
|
+
```shell
|
|
111
|
+
python -m pip install /path/to/aa_planetary_operations-0.1.0-py3-none-any.whl
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Alternatively, install from the source directory:
|
|
115
|
+
|
|
116
|
+
```shell
|
|
117
|
+
python -m pip install /path/to/aa-planetary-operations
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
PyPI publication is pending. Maintainers can follow the [Publishing guide](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/docs/PUBLISHING.md) to configure the first release.
|
|
121
|
+
|
|
122
|
+
### Step 2 — Configure Alliance Auth
|
|
123
|
+
|
|
124
|
+
Add the app in your Auth project's `settings/local.py`:
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
INSTALLED_APPS += [
|
|
128
|
+
"planetary_operations",
|
|
129
|
+
]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Set a User-Agent that identifies your deployment and administrator contact:
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
PLANETARY_OPERATIONS_USER_AGENT = "AA-Planetary-Operations/0.1.0 (your administrator contact)"
|
|
136
|
+
PLANETARY_OPERATIONS_SEARCH_SECONDS = 30
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The package includes its PI and universe catalog. A separate SDE app or initial data download is not required.
|
|
140
|
+
|
|
141
|
+
### Step 3 — Configure ESI access
|
|
142
|
+
|
|
143
|
+
Enable the following scopes on the EVE developer application used by your Auth installation:
|
|
144
|
+
|
|
145
|
+
| Scope | Purpose |
|
|
146
|
+
| :--- | :--- |
|
|
147
|
+
| `esi-skills.read_skills.v1` | Read each character's active PI skill levels. |
|
|
148
|
+
| `esi-planets.manage_planets.v1` | Read existing colonies and occupied planet IDs. |
|
|
149
|
+
|
|
150
|
+
Keep your existing AA SSO callback URL. Users grant these scopes through **Authorize a character’s PI access**. The plugin only reads ESI, including the scope named “manage”; it makes no in-game changes.
|
|
151
|
+
|
|
152
|
+
### Step 4 — Run migrations and collect static files
|
|
153
|
+
|
|
154
|
+
From your Auth project directory:
|
|
155
|
+
|
|
156
|
+
```shell
|
|
157
|
+
python manage.py migrate
|
|
158
|
+
python manage.py collectstatic --noinput
|
|
159
|
+
python manage.py check
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Restart your existing Auth web processes and Celery workers through your normal service manager.
|
|
163
|
+
|
|
164
|
+
Plan calculations use the task `planetary_operations.tasks.calculate_plan` on the existing AA worker. No additional Celery Beat schedule is required.
|
|
165
|
+
|
|
166
|
+
### Step 5 — Set up permissions
|
|
167
|
+
|
|
168
|
+
Grant this permission to the appropriate AA group or state:
|
|
169
|
+
|
|
170
|
+
| Permission | Description | Access |
|
|
171
|
+
| :--- | :--- | :--- |
|
|
172
|
+
| `planetary_operations.basic_access` | Can use Planetary Operations | Opens the app and allows users to create and manage their own plans. |
|
|
173
|
+
|
|
174
|
+
The sidebar entry appears for permitted users. Saved plans are private to their owner.
|
|
175
|
+
|
|
176
|
+
### Step 6 — Authorize characters and build a plan
|
|
177
|
+
|
|
178
|
+
1. Open **Planetary Operations** from the AA sidebar.
|
|
179
|
+
2. Attach any missing alts to your AA account.
|
|
180
|
+
3. Use **Authorize a character’s PI access** for each character.
|
|
181
|
+
4. Select the characters, finished product, import tier, and region.
|
|
182
|
+
5. Set the pull duration and output target. Enter an extraction estimate based on your in-game program.
|
|
183
|
+
6. Select **Build & save plan**. The result page updates when the worker finishes.
|
|
184
|
+
|
|
185
|
+
## Settings
|
|
186
|
+
|
|
187
|
+
Optional settings in `settings/local.py`:
|
|
188
|
+
|
|
189
|
+
| Setting | Description | Default |
|
|
190
|
+
| :--- | :--- | :--- |
|
|
191
|
+
| `PLANETARY_OPERATIONS_USER_AGENT` | Identifies your application to ESI. Set it to include your administrator contact. | `AA-Planetary-Operations/0.1.0` |
|
|
192
|
+
| `PLANETARY_OPERATIONS_SEARCH_SECONDS` | Solver search budget in seconds, limited to 5–120. | `30` |
|
|
193
|
+
|
|
194
|
+
## Using the planner
|
|
195
|
+
|
|
196
|
+
Existing colonies reduce available slots by default. Enable **Plan a replacement for my existing colonies** if you intend to rebuild them in game. Saved plans are alternative layouts; they do not reserve colony slots against each other.
|
|
197
|
+
|
|
198
|
+
**Read estimates as steady-state targets.** The planner checks factory cycles and fitting budgets against your requested output. Future extraction yield, resource hotspots, exact link placement, startup buffers, sovereignty, and POCO access need an in-game check. Nearby-system results report a feasible network without claiming a global regional optimum.
|
|
199
|
+
|
|
200
|
+
**Jita estimates are gross value.** Imported materials, taxes, fees, and hauling costs are excluded. Unfilled buy-order volume is reported. Day/week figures extrapolate the current pull valuation; future liquidity can change.
|
|
201
|
+
|
|
202
|
+
For the full assumptions, operating instructions, catalog updates, and troubleshooting, see the [Operating guide](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/docs/OPERATING_GUIDE.md).
|
|
203
|
+
|
|
204
|
+
## Translations
|
|
205
|
+
|
|
206
|
+
The V1 interface is currently in English. Translation support is not included in this release.
|
|
207
|
+
|
|
208
|
+
## Contributing
|
|
209
|
+
|
|
210
|
+
Development uses a standard Python virtual environment. See the [Development guide](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/docs/DEVELOPMENT.md) for setup and verification commands.
|
|
211
|
+
|
|
212
|
+
- [Architecture](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/ARCHITECTURE.md) — modules, planning constraints, and ownership checks.
|
|
213
|
+
- [Verification](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/VERIFICATION.md) — completed tests, AA version checks, and live-data results.
|
|
214
|
+
- [Operating guide](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/docs/OPERATING_GUIDE.md) — behavior to preserve when changing the planner.
|
|
215
|
+
|
|
216
|
+
Include relevant tests with changes to production calculations, character permissions, or market handling.
|
|
217
|
+
|
|
218
|
+
## License and credits
|
|
219
|
+
|
|
220
|
+
Source code is available under the [MIT License](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/LICENSE).
|
|
221
|
+
|
|
222
|
+
Built for [Alliance Auth](https://allianceauth.readthedocs.io/) using [Django-ESI](https://django-esi.readthedocs.io/) token management, CCP's [Static Data Export](https://developers.eveonline.com/docs/services/static-data/), and the [EVE ESI API](https://esi.evetech.net/ui/).
|
|
223
|
+
|
|
224
|
+
EVE Online and its game data belong to CCP. See [NOTICE.md](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/NOTICE.md).
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+

|
|
2
|
+

|
|
3
|
+

|
|
4
|
+

|
|
5
|
+
[](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/LICENSE)
|
|
6
|
+
[](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/VERIFICATION.md)
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
# AA Planetary Operations for Alliance Auth
|
|
10
|
+
|
|
11
|
+
Plan your planetary industry across your main and alts, build the production network, and see its Jita buy value per pull.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Contents
|
|
16
|
+
|
|
17
|
+
- [Features](#features)
|
|
18
|
+
- [Upcoming](#upcoming)
|
|
19
|
+
- [Highlights](#highlights)
|
|
20
|
+
- [Installation](#installation)
|
|
21
|
+
- [Step 1 — Install the package](#step-1--install-the-package)
|
|
22
|
+
- [Step 2 — Configure Alliance Auth](#step-2--configure-alliance-auth)
|
|
23
|
+
- [Step 3 — Configure ESI access](#step-3--configure-esi-access)
|
|
24
|
+
- [Step 4 — Run migrations and collect static files](#step-4--run-migrations-and-collect-static-files)
|
|
25
|
+
- [Step 5 — Set up permissions](#step-5--set-up-permissions)
|
|
26
|
+
- [Step 6 — Authorize characters and build a plan](#step-6--authorize-characters-and-build-a-plan)
|
|
27
|
+
- [Settings](#settings)
|
|
28
|
+
- [Using the planner](#using-the-planner)
|
|
29
|
+
- [Translations](#translations)
|
|
30
|
+
- [Contributing](#contributing)
|
|
31
|
+
- [License and credits](#license-and-credits)
|
|
32
|
+
|
|
33
|
+
## Features
|
|
34
|
+
|
|
35
|
+
- **Main and alt planning** — combine up to ten AA-authenticated characters in one operation.
|
|
36
|
+
- **Automatic PI skill reads** — use active skill levels and existing colonies to determine available capacity.
|
|
37
|
+
- **P0 through P4** — choose any of the 83 PI commodities as your finished product.
|
|
38
|
+
- **Import tiers** — extract from P0 or start with supplied P1, P2, or P3 materials.
|
|
39
|
+
- **Region selection** — use real planet types, resources, recipes, and stargate connections from CCP's static data.
|
|
40
|
+
- **One system first** — try single-system layouts before expanding into nearby systems.
|
|
41
|
+
- **Character assignments** — fit colonies and facilities within each character's skill limits.
|
|
42
|
+
- **Build sheets** — see each planet, command-center level, extractor, processor, and required material.
|
|
43
|
+
- **Logistics plans** — get import quantities, local routes, character handoffs, hauling volumes, and regional gate paths.
|
|
44
|
+
- **Extraction schedules** — set the pull duration, output target, assumed extraction yield, and extractor head count.
|
|
45
|
+
- **Jita buy valuation** — estimate gross ISK per pull, day, and week from Jita 4-4 buy orders and available order volume.
|
|
46
|
+
- **Saved operations** — keep private plans, adjust a copy, refresh prices, or export the build sheet.
|
|
47
|
+
|
|
48
|
+
## Upcoming
|
|
49
|
+
|
|
50
|
+
Future possibilities beyond V1:
|
|
51
|
+
|
|
52
|
+
- Discord alerts.
|
|
53
|
+
- Alliance-wide collaborative production and suppliers.
|
|
54
|
+
- Advanced POCO tools.
|
|
55
|
+
- Historical production and market analytics.
|
|
56
|
+
|
|
57
|
+
## Highlights
|
|
58
|
+
|
|
59
|
+
### Characters and operation planner
|
|
60
|
+
|
|
61
|
+
Select your authenticated characters and configure the production chain in one place.
|
|
62
|
+
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+
### Production overview
|
|
66
|
+
|
|
67
|
+
Review estimated output, deployment size, and the Jita valuation status for a saved operation.
|
|
68
|
+
|
|
69
|
+

|
|
70
|
+
|
|
71
|
+
*Screenshots show a local demonstration using sample characters. Market pricing is unavailable in the pictured preview; the live public ESI check is recorded in [Verification](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/VERIFICATION.md).*
|
|
72
|
+
|
|
73
|
+
## Installation
|
|
74
|
+
|
|
75
|
+
> **Requirements:** Alliance Auth v5, Python 3.11+, and your existing Auth database, Redis/Valkey, and Celery worker.
|
|
76
|
+
>
|
|
77
|
+
> Version 0.1.0 is ready for staging evaluation. Install it directly into your Alliance Auth virtual environment. Complete a real SSO authorization and worker run on your server before rollout.
|
|
78
|
+
|
|
79
|
+
### Step 1 — Install the package
|
|
80
|
+
|
|
81
|
+
Activate the virtual environment used by your Alliance Auth installation, then install the supplied wheel:
|
|
82
|
+
|
|
83
|
+
```shell
|
|
84
|
+
python -m pip install /path/to/aa_planetary_operations-0.1.0-py3-none-any.whl
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Alternatively, install from the source directory:
|
|
88
|
+
|
|
89
|
+
```shell
|
|
90
|
+
python -m pip install /path/to/aa-planetary-operations
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
PyPI publication is pending. Maintainers can follow the [Publishing guide](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/docs/PUBLISHING.md) to configure the first release.
|
|
94
|
+
|
|
95
|
+
### Step 2 — Configure Alliance Auth
|
|
96
|
+
|
|
97
|
+
Add the app in your Auth project's `settings/local.py`:
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
INSTALLED_APPS += [
|
|
101
|
+
"planetary_operations",
|
|
102
|
+
]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Set a User-Agent that identifies your deployment and administrator contact:
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
PLANETARY_OPERATIONS_USER_AGENT = "AA-Planetary-Operations/0.1.0 (your administrator contact)"
|
|
109
|
+
PLANETARY_OPERATIONS_SEARCH_SECONDS = 30
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The package includes its PI and universe catalog. A separate SDE app or initial data download is not required.
|
|
113
|
+
|
|
114
|
+
### Step 3 — Configure ESI access
|
|
115
|
+
|
|
116
|
+
Enable the following scopes on the EVE developer application used by your Auth installation:
|
|
117
|
+
|
|
118
|
+
| Scope | Purpose |
|
|
119
|
+
| :--- | :--- |
|
|
120
|
+
| `esi-skills.read_skills.v1` | Read each character's active PI skill levels. |
|
|
121
|
+
| `esi-planets.manage_planets.v1` | Read existing colonies and occupied planet IDs. |
|
|
122
|
+
|
|
123
|
+
Keep your existing AA SSO callback URL. Users grant these scopes through **Authorize a character’s PI access**. The plugin only reads ESI, including the scope named “manage”; it makes no in-game changes.
|
|
124
|
+
|
|
125
|
+
### Step 4 — Run migrations and collect static files
|
|
126
|
+
|
|
127
|
+
From your Auth project directory:
|
|
128
|
+
|
|
129
|
+
```shell
|
|
130
|
+
python manage.py migrate
|
|
131
|
+
python manage.py collectstatic --noinput
|
|
132
|
+
python manage.py check
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Restart your existing Auth web processes and Celery workers through your normal service manager.
|
|
136
|
+
|
|
137
|
+
Plan calculations use the task `planetary_operations.tasks.calculate_plan` on the existing AA worker. No additional Celery Beat schedule is required.
|
|
138
|
+
|
|
139
|
+
### Step 5 — Set up permissions
|
|
140
|
+
|
|
141
|
+
Grant this permission to the appropriate AA group or state:
|
|
142
|
+
|
|
143
|
+
| Permission | Description | Access |
|
|
144
|
+
| :--- | :--- | :--- |
|
|
145
|
+
| `planetary_operations.basic_access` | Can use Planetary Operations | Opens the app and allows users to create and manage their own plans. |
|
|
146
|
+
|
|
147
|
+
The sidebar entry appears for permitted users. Saved plans are private to their owner.
|
|
148
|
+
|
|
149
|
+
### Step 6 — Authorize characters and build a plan
|
|
150
|
+
|
|
151
|
+
1. Open **Planetary Operations** from the AA sidebar.
|
|
152
|
+
2. Attach any missing alts to your AA account.
|
|
153
|
+
3. Use **Authorize a character’s PI access** for each character.
|
|
154
|
+
4. Select the characters, finished product, import tier, and region.
|
|
155
|
+
5. Set the pull duration and output target. Enter an extraction estimate based on your in-game program.
|
|
156
|
+
6. Select **Build & save plan**. The result page updates when the worker finishes.
|
|
157
|
+
|
|
158
|
+
## Settings
|
|
159
|
+
|
|
160
|
+
Optional settings in `settings/local.py`:
|
|
161
|
+
|
|
162
|
+
| Setting | Description | Default |
|
|
163
|
+
| :--- | :--- | :--- |
|
|
164
|
+
| `PLANETARY_OPERATIONS_USER_AGENT` | Identifies your application to ESI. Set it to include your administrator contact. | `AA-Planetary-Operations/0.1.0` |
|
|
165
|
+
| `PLANETARY_OPERATIONS_SEARCH_SECONDS` | Solver search budget in seconds, limited to 5–120. | `30` |
|
|
166
|
+
|
|
167
|
+
## Using the planner
|
|
168
|
+
|
|
169
|
+
Existing colonies reduce available slots by default. Enable **Plan a replacement for my existing colonies** if you intend to rebuild them in game. Saved plans are alternative layouts; they do not reserve colony slots against each other.
|
|
170
|
+
|
|
171
|
+
**Read estimates as steady-state targets.** The planner checks factory cycles and fitting budgets against your requested output. Future extraction yield, resource hotspots, exact link placement, startup buffers, sovereignty, and POCO access need an in-game check. Nearby-system results report a feasible network without claiming a global regional optimum.
|
|
172
|
+
|
|
173
|
+
**Jita estimates are gross value.** Imported materials, taxes, fees, and hauling costs are excluded. Unfilled buy-order volume is reported. Day/week figures extrapolate the current pull valuation; future liquidity can change.
|
|
174
|
+
|
|
175
|
+
For the full assumptions, operating instructions, catalog updates, and troubleshooting, see the [Operating guide](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/docs/OPERATING_GUIDE.md).
|
|
176
|
+
|
|
177
|
+
## Translations
|
|
178
|
+
|
|
179
|
+
The V1 interface is currently in English. Translation support is not included in this release.
|
|
180
|
+
|
|
181
|
+
## Contributing
|
|
182
|
+
|
|
183
|
+
Development uses a standard Python virtual environment. See the [Development guide](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/docs/DEVELOPMENT.md) for setup and verification commands.
|
|
184
|
+
|
|
185
|
+
- [Architecture](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/ARCHITECTURE.md) — modules, planning constraints, and ownership checks.
|
|
186
|
+
- [Verification](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/VERIFICATION.md) — completed tests, AA version checks, and live-data results.
|
|
187
|
+
- [Operating guide](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/docs/OPERATING_GUIDE.md) — behavior to preserve when changing the planner.
|
|
188
|
+
|
|
189
|
+
Include relevant tests with changes to production calculations, character permissions, or market handling.
|
|
190
|
+
|
|
191
|
+
## License and credits
|
|
192
|
+
|
|
193
|
+
Source code is available under the [MIT License](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/LICENSE).
|
|
194
|
+
|
|
195
|
+
Built for [Alliance Auth](https://allianceauth.readthedocs.io/) using [Django-ESI](https://django-esi.readthedocs.io/) token management, CCP's [Static Data Export](https://developers.eveonline.com/docs/services/static-data/), and the [EVE ESI API](https://esi.evetech.net/ui/).
|
|
196
|
+
|
|
197
|
+
EVE Online and its game data belong to CCP. See [NOTICE.md](https://github.com/jaybone26/aa-planetary-operations/blob/HEAD/NOTICE.md).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Verification — V1 0.1.0
|
|
2
|
+
|
|
3
|
+
Verified locally on September 29, 2026.
|
|
4
|
+
|
|
5
|
+
## Environment
|
|
6
|
+
|
|
7
|
+
- Python 3.12.14, Windows host, isolated virtual environment.
|
|
8
|
+
- Alliance Auth **5.4.0**, Django **5.2.17**, Django-ESI **9.10.0**, OR-Tools **9.15.6755**.
|
|
9
|
+
- The same test suite also passes with **Alliance Auth 5.0.0**, using the same other installed dependencies. This is a baseline compatibility check, not a matrix of every historic dependency combination.
|
|
10
|
+
- Real AA app registrations, ownership models, URL hooks, templates, and database migrations; test-only SQLite, in-memory Redis substitute and mocked ESI transport.
|
|
11
|
+
|
|
12
|
+
## Completed checks
|
|
13
|
+
|
|
14
|
+
- **36 automated tests passed** on both AA 5.4.0 and AA 5.0.0.
|
|
15
|
+
- Catalog coverage: all 83 commodities, every supported starting tier, acyclic tier dependencies and nonempty planet compatibility.
|
|
16
|
+
- Planning: shared recipe requirements, whole-batch rounding, import boundaries including lower-tier P4 ingredients, skill budgets, occupied colonies, multi-character use, P4 planet restrictions, per-day/week normalization, real gate expansion and disconnected-system rejection.
|
|
17
|
+
- Security/integration: AA template rendering, permissions, character ownership, token ownership/hash/scopes, active rather than trained skill levels, private saved-plan views/exports, CSRF and POST-only deletion, transaction-aware queue submission, worker failure handling, duplicate delivery handling, saved results with unavailable market data.
|
|
18
|
+
- Market: station/order-side filtering, all-page retrieval, cache reuse, order depth, minimum quantities, missing prices, partial-page failure, and rate-limit cooldown.
|
|
19
|
+
- Django model/template/URL/static-file checks passed without issues.
|
|
20
|
+
- Migration drift check passed; fresh AA test databases apply the real app migrations successfully.
|
|
21
|
+
- Python lint and formatting checks passed.
|
|
22
|
+
- Wheel and source distribution built successfully. The wheel was installed into a separate directory, its catalog/migrations/templates/static assets were checked, and all 36 tests passed against the installed package.
|
|
23
|
+
- Actual AA-rendered planner and production-result pages inspected in the in-app browser.
|
|
24
|
+
|
|
25
|
+
## Live public-data smoke test
|
|
26
|
+
|
|
27
|
+
The bundled catalog was compiled from official CCP SDE build **3552227**.
|
|
28
|
+
|
|
29
|
+
Using the public ESI market endpoint on **2026-09-29 at 22:38 UTC**, the application retrieved Jita 4-4 buy orders for Broadcast Nodes and valued six units at **11,748,000 ISK gross**, with six filled and zero unfilled. This is a historical verification snapshot, not a current price recommendation.
|
|
30
|
+
|
|
31
|
+
With three synthetic characters at IC V / CCU V and the documented default extraction assumptions, the engine found single-system layouts in Vale of the Silent for:
|
|
32
|
+
|
|
33
|
+
| Target | Import tier | Target per 24-hour pull | Colonies |
|
|
34
|
+
|---|---|---:|---:|
|
|
35
|
+
| Broadcast Node | P0 extraction | 6 | 7 |
|
|
36
|
+
| Wetware Mainframe | P0 extraction | 6 | 9 |
|
|
37
|
+
| Robotics | P0 extraction | 24 | 2 |
|
|
38
|
+
| Broadcast Node | Import P3/lower | 24 | 1 |
|
|
39
|
+
| Aqueous Liquids | P0 extraction | 144,000 | 1 |
|
|
40
|
+
|
|
41
|
+
These examples demonstrate solver behavior on the real catalog, not measured in-game extraction or a recommendation to deploy in those systems.
|
|
42
|
+
|
|
43
|
+
## Still requires the target AA server
|
|
44
|
+
|
|
45
|
+
- Real character SSO authorization with the deployment's EVE developer application.
|
|
46
|
+
- End-to-end execution on its existing Linux Celery worker and Redis/Valkey broker.
|
|
47
|
+
- Its production database and reverse-proxy configuration.
|
|
48
|
+
- In-game resource yield, pin placement/link capacity, sovereignty and POCO access, startup buffers, and actual hauling cadence.
|
|
49
|
+
|
|
50
|
+
No changes were made to a live AA installation or any EVE character. Use a staging installation first; the package is ready for that installation step.
|