fusesell 1.2.8__tar.gz → 1.3.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.
Potentially problematic release.
This version of fusesell might be problematic. Click here for more details.
- {fusesell-1.2.8 → fusesell-1.3.0}/CHANGELOG.md +99 -74
- {fusesell-1.2.8/fusesell.egg-info → fusesell-1.3.0}/PKG-INFO +1 -1
- {fusesell-1.2.8 → fusesell-1.3.0/fusesell.egg-info}/PKG-INFO +1 -1
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/__init__.py +1 -1
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/initial_outreach.py +427 -187
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/data_manager.py +8 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/event_scheduler.py +43 -15
- {fusesell-1.2.8 → fusesell-1.3.0}/pyproject.toml +1 -1
- {fusesell-1.2.8 → fusesell-1.3.0}/LICENSE +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/MANIFEST.in +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/README.md +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/SOURCES.txt +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/dependency_links.txt +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/entry_points.txt +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/requires.txt +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/top_level.txt +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/api.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/cli.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/config/__init__.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/config/prompts.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/config/settings.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/pipeline.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/__init__.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/base_stage.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/data_acquisition.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/data_preparation.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/follow_up.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/lead_scoring.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/conftest.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_api.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_cli.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_products.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_sales_process.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_teams.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/__init__.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/birthday_email_manager.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/llm_client.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/logger.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/timezone_detector.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/validators.py +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/requirements.txt +0 -0
- {fusesell-1.2.8 → fusesell-1.3.0}/setup.cfg +0 -0
|
@@ -1,76 +1,101 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to FuseSell Local will be documented in this file.
|
|
4
|
-
|
|
5
|
-
# [1.
|
|
6
|
-
|
|
7
|
-
###
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
###
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
###
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
###
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
###
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to FuseSell Local will be documented in this file.
|
|
4
|
+
|
|
5
|
+
# [1.3.0] - 2025-10-24
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Bundled prompt seeding now copies packaged defaults into fusesell_data/config automatically, guaranteeing the initial outreach stage always finds the shipped templates on first run.
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Updated the default initial-outreach and follow-up prompts to require fully wrapped <html><body> content, enforce first-name greetings, and eliminate placeholder signatures so LLM drafts arrive production-ready.
|
|
12
|
+
- Sanitization logic normalizes generated emails into HTML (including fallback/mock drafts), injects recipient metadata, and reuses the calculated first name across prompt, rewrite, and reminder flows.
|
|
13
|
+
- Reminder scheduling now records Unix timestamps (cron_ts) for every new entry, simplifying downstream polling in RealTimeX orchestration.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- Draft generation once again prioritises the LLM prompt path; fallback templates only trigger when the prompt fails to load, preventing duplicate plain-text emails.
|
|
17
|
+
- Rewrites, dry-run mocks, and fallback drafts no longer emit duplicate greetings or unresolved [Your ...] placeholders, and they retain HTML formatting for downstream mailers.
|
|
18
|
+
|
|
19
|
+
# [1.2.9] - 2025-10-24
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- Primary sales rep metadata from gs_team_rep now flows into draft prompts, reminders, and signatures so outreach reflects the configured sender.
|
|
23
|
+
- Reminder scheduling stores the Unix timestamp (cron_ts) alongside the ISO string for easier downstream filtering.
|
|
24
|
+
- Greeting sanitizer standardises the first paragraph and removes duplicate salutations while keeping HTML formatting intact.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- Removed [Your ...] placeholder leftovers inside LLM responses and ensured drafts remain valid HTML even when the model mixes plain text and bullet lists.
|
|
28
|
+
- Reminder creation no longer fails when the data acquisition stage supplies the email address, and follow-up reminders inherit the same customer metadata.
|
|
29
|
+
|
|
30
|
+
# [1.2.8] - 2025-10-24
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- Initial outreach resolves the primary sales rep from `gs_team_rep` and injects their identity into prompts, reminders, and draft metadata so outreach reflects real team settings.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
- Sanitizes generated email bodies to replace or remove `[Your …]` placeholders, ensuring signatures contain actual values even when optional rep fields are missing.
|
|
37
|
+
- Reminder scheduling now preserves merged contact emails so follow-up records always carry `customer_email` for downstream automations.
|
|
38
|
+
|
|
39
|
+
# [1.2.7] - 2025-10-24
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
- RealTimeX sales-process normalization now forwards `recipient_address`, `recipient_name`, and `customer_email` into the FuseSell pipeline so prompt generation and scheduling have complete context.
|
|
43
|
+
- Default outreach prompt replacements enrich customer metadata with toolkit-derived contact details and enforce first-name greetings to match server quality.
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
- Initial outreach stage now records generated drafts in the pipeline summary, seeds reminder_task rows with toolkit credentials, and schedules follow-up events when `send_immediately` is false.
|
|
47
|
+
- Prompt-based draft generation no longer skips scheduling due to missing email fields and guarantees outputs without unresolved placeholders.
|
|
48
|
+
|
|
49
|
+
# [1.2.6] - 2025-10-24
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- Automatically seed packaged prompt, scoring, and template JSON files into the writable `ffusesell_data/config` directory so fresh installs immediately pick up the default initial outreach draft prompt.
|
|
53
|
+
- Draft generation now records the scheduled reminder metadata in stage output while mirroring the server’s `schedule_auto_run` behaviour locally.
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
- Bundled configuration files are used as a fallback when the data directory is missing overrides, preventing empty prompt loads that previously produced low-quality duplicate drafts.
|
|
57
|
+
|
|
58
|
+
# [1.2.5] - 2025-10-24
|
|
59
|
+
|
|
60
|
+
### Added
|
|
61
|
+
- Local `reminder_task` table and scheduler plumbing so scheduled outreach mirrors the server flow and can be consumed by RealTimeX orchestration.
|
|
62
|
+
- Initial outreach and follow-up stages now emit reminder metadata whenever emails are scheduled, including team/customer context.
|
|
63
|
+
|
|
64
|
+
### Changed
|
|
65
|
+
- Event scheduler returns reminder IDs alongside scheduled events while preserving immutable default prompts when layering team overrides.
|
|
66
|
+
|
|
67
|
+
# [1.2.3] - 2025-10-21
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
- `LocalDataManager.search_products()` for server-compatible product filtering (status, keyword, limit, sort).
|
|
71
|
+
- CLI `product list` flags and `list_products.py` filters wired to the new search helper.
|
|
72
|
+
- Regression tests covering keyword search, sorting, and limiting behavior.
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
- `get_products_by_org` now delegates to the filtered search path to avoid loading inactive results.
|
|
76
|
+
- Product management documentation updated for RealTimeX flows and CLI filter usage.
|
|
77
|
+
|
|
78
|
+
# [1.2.2] - 2025-10-21
|
|
79
|
+
|
|
80
|
+
### Added
|
|
81
|
+
- LocalDataManager regression tests covering product/team CRUD flows and sales process tracking helpers.
|
|
82
|
+
|
|
83
|
+
### Fixed
|
|
84
|
+
- Default team settings seeding now targets the `gs_team_*` columns, preventing initialization failures on fresh databases.
|
|
85
|
+
|
|
86
|
+
# [1.2.1] - 2025-10-21
|
|
87
|
+
|
|
88
|
+
### Changed
|
|
89
|
+
- Expose `__version__`, `__author__`, and `__description__` at the top-level `fusesell` module for easier runtime inspection.
|
|
90
|
+
|
|
91
|
+
### Fixed
|
|
92
|
+
- `import fusesell; fusesell.__version__` now reports the installed version instead of `unknown`.
|
|
93
|
+
|
|
94
|
+
## [1.2.0] - 2025-10-20
|
|
95
|
+
|
|
96
|
+
### Added
|
|
97
|
+
- Packaged CLI access via `FuseSellCLI` export to support embedded runtimes and automated tests.
|
|
98
|
+
- pytest coverage (`fusesell_local/tests/test_cli.py`) ensuring the CLI dry-run path remains stable.
|
|
74
99
|
|
|
75
100
|
### Changed
|
|
76
101
|
- Distribution renamed to `fusesell` to align with upcoming PyPI publication; console entry point now resolves to `fusesell_local.cli:main`.
|
|
@@ -155,7 +180,7 @@ fusesell-local/
|
|
|
155
180
|
stages/ # Pipeline stages (base implementation)
|
|
156
181
|
utils/ # Utilities (data, LLM, validation, logging)
|
|
157
182
|
config/ # Configuration management
|
|
158
|
-
|
|
183
|
+
ffusesell_data/ # Local data storage
|
|
159
184
|
config/ # Configuration files
|
|
160
185
|
drafts/ # Generated email drafts
|
|
161
186
|
logs/ # Execution logs
|